// ==UserScript==
// @name Rasul's BRP Logs Customizer
// @namespace https://logs.blackrussia.online/
// @version 1.1.0
// @description Advanced customization tool for BlackRussia logs with theme engine and Rasul's modifications
// @author Rasul
// @match https://logs.blackrussia.online/gslogs/*
// @icon https://i.postimg.cc/YCbhXXMH/562-E0-EDD-181-B-494-D-B689-6-A25-A1-D1-C641.png
// @license MIT
// @grant GM_addStyle
// @supportURL https://t.me/therasuI
// ==/UserScript==
(function () {
'use strict';
scriptInit();
function createStyleButton(element) {
const styleToggle = document.createElement('button');
styleToggle.className = 'style-button';
styleToggle.id = 'style-modal-toggle';
styleToggle.href = '#!';
styleToggle.tabIndex = '0';
styleToggle.dataset.bsToggle = 'modal';
styleToggle.dataset.bsTarget = '#container-background';
styleToggle.innerHTML = `
<div style="
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
">
<span>STYLE</span>
<span style="
font-size: 0.8em;
margin-left: 5px;
color: #ff8800;
text-shadow: 0 0 3px #ff8800;
">Rasul</span>
</div>
`;
const replaceElement = document.querySelector(element);
if (replaceElement) {
replaceElement.replaceWith(styleToggle);
}
}
function createStyleContainerBg(element) {
const containerBg = document.createElement('div');
containerBg.className = 'modal fade';
containerBg.id = 'container-background';
containerBg.tabIndex = '-1';
containerBg.style.display = 'none';
containerBg.ariaHidden = 'true';
const parentElement = document.querySelector(element);
if (parentElement) {
parentElement.parentNode.insertBefore(containerBg, parentElement);
const containerContent = document.createElement('div');
containerContent.className = 'modal-dialog modal-dialog-centered';
containerContent.id = 'style-container-content';
containerBg.appendChild(containerContent);
const styleContainer = document.createElement('div');
styleContainer.className = 'modal-content';
containerContent.appendChild(styleContainer);
const styleContHead = document.createElement('div');
const styleContBody = document.createElement('div');
styleContHead.className = 'modal-header';
styleContBody.className = 'modal-body';
styleContBody.style.display = 'flex';
styleContBody.style.flexDirection = 'column';
styleContainer.appendChild(styleContHead);
styleContainer.appendChild(styleContBody);
const styleTitleBadge = document.createElement('span');
styleTitleBadge.className = 'badge bg-success';
styleTitleBadge.textContent = 'STYLE';
styleTitleBadge.style.fontSize = '16px';
styleContHead.appendChild(styleTitleBadge);
const styleTitleText = document.createElement('span');
styleTitleText.className = 'style-title-text';
styleTitleText.textContent = 'Переключатель Тем | by Rasul';
styleContHead.appendChild(styleTitleText);
const styleClose = document.createElement('button');
styleClose.type = 'button';
styleClose.className = 'btn-close';
styleClose.dataset.bsDismiss = 'modal';
styleClose.ariaLabel = 'Close';
styleContHead.appendChild(styleClose);
const switchStyleBlock = document.createElement('label');
switchStyleBlock.className = 'switch';
switchStyleBlock.innerHTML = `
<input type="checkbox" id="styleToggleCheck">
<span class="slider round" style="padding-right: 20px;"></span>
<div class="addingText tooltip-style" style="display: block; width: max-content; margin: 5px; margin-left: 50px">Включить Переливание Текста
<span class="tooltip-style-text">Добавляет анимированный градиент на некоторые элементы (повышается нагрузка)</span></div>
`;
styleContBody.appendChild(switchStyleBlock);
const styleToggleCheck = document.getElementById('styleToggleCheck');
if (localStorage.getItem('styleThemeEnabled') === 'true') {
styleToggleCheck.checked = true;
applyTextGradient();
}
styleToggleCheck.addEventListener('change', function () {
if (styleToggleCheck.checked) {
applyTextGradient();
localStorage.setItem('styleThemeEnabled', 'true');
} else {
removeTextGradient();
localStorage.setItem('styleThemeEnabled', 'false');
}
});
const switchNumsBlock = document.createElement('label');
switchNumsBlock.className = 'switch';
switchNumsBlock.innerHTML = `
<input type="checkbox" id="switchNumsCheck">
<span class="slider round" style="padding-right: 20px;"></span>
<div class="addingText tooltip-style" style="display: block; width: max-content; margin: 5px; margin-left: 50px">Включить Разряды Чисел
<span class="tooltip-style-text">Переключает способ отображения чисел (1000 => 1 000)<br>Требуется Перезагрузка</span><img src='https://cdn-icons-png.flaticon.com/512/25/25429.png' style='width: 15px; height: 15px; filter: invert(1)'></img></div>
`;
switchNumsBlock.style.marginTop = '20px';
styleContBody.appendChild(switchNumsBlock);
const switchNumsCheck = document.getElementById('switchNumsCheck');
if (localStorage.getItem('numsSeparateEnabled') === 'true') {
switchNumsCheck.checked = true;
applyNumsSeparate();
}
switchNumsCheck.addEventListener('change', function () {
if (switchNumsCheck.checked) {
applyNumsSeparate();
localStorage.setItem('numsSeparateEnabled', 'true');
location.reload();
} else {
localStorage.setItem('numsSeparateEnabled', 'false');
location.reload();
}
});
const switchCopyBankBlock = document.createElement('label');
switchCopyBankBlock.className = 'switch';
switchCopyBankBlock.innerHTML = `
<input type="checkbox" id="switchBankCopyCheck">
<span class="slider round" style="padding-right: 20px;"></span>
<div class="addingText tooltip-style" style="display: block; width: max-content; margin: 5px; margin-left: 50px">Включить Режим Доказательств
<span class="tooltip-style-text">Копирование описания транзакций всех категорий (кроме Бизнесы/Фракции) в без системной информации<br>Требуется перезагрузка</span><img src='https://cdn-icons-png.flaticon.com/512/25/25429.png' style='width: 15px; height: 15px; filter: invert(1)'></img></div>
`;
switchCopyBankBlock.style.marginTop = '20px';
styleContBody.appendChild(switchCopyBankBlock);
const switchCopyBank = document.getElementById('switchBankCopyCheck');
if (localStorage.getItem('bankCheckEnabled') === 'true') {
switchCopyBank.checked = true;
applyCopyDocs();
}
switchCopyBank.addEventListener('change', function () {
if (switchCopyBank.checked) {
applyCopyDocs();
localStorage.setItem('bankCheckEnabled', 'true');
location.reload();
} else {
localStorage.setItem('bankCheckEnabled', 'false');
location.reload();
}
});
const fontSelectorBlock = document.createElement('label');
fontSelectorBlock.className = 'font-selector-block';
styleContBody.appendChild(fontSelectorBlock);
const fontSelector = document.createElement('select');
fontSelector.className = 'selector';
fontSelector.id = 'font-selector';
const storedFont = localStorage.getItem('selectedFont') || 'Roboto';
const fonts = ['Bad Script', 'Comfortaa', 'Fira Sans', 'Marmelad', 'Montserrat', 'Neucha', 'Play', 'Roboto', 'Sofia Sans', 'Ubuntu'];
fonts.forEach(font => {
const option = document.createElement('option');
option.value = font;
option.textContent = font;
if (font === storedFont) {
option.selected = true;
document.body.style.fontFamily = font;
}
fontSelector.appendChild(option);
});
fontSelector.addEventListener('change', function () {
const selectedFont = this.value;
document.body.style.fontFamily = selectedFont;
localStorage.setItem('selectedFont', selectedFont);
});
fontSelectorBlock.appendChild(fontSelector);
const fontSelectorText = document.createElement('span');
fontSelectorText.className = 'addingText';
fontSelectorText.textContent = 'Выбор Шрифта';
fontSelectorBlock.appendChild(fontSelectorText);
const colorSelectorBlock = document.createElement('label');
colorSelectorBlock.className = 'color-selector-block';
styleContBody.appendChild(colorSelectorBlock);
const colorSelector = document.createElement('select');
colorSelector.className = 'selector';
colorSelector.id = 'color-selector';
const storedColor = localStorage.getItem('selectedColor') || 'WHITE';
const colors = ['-------МЯГКИЕ-------', 'PINK', 'KHAKI', 'SKYBLUE', 'PALEGREEN', '', '-------ЯРКИЕ-------', 'RED', 'LIME', 'CYAN', 'WHITE', 'YELLOW', 'MAGENTA', 'DEEPPINK'];
const colorCodes = {
'PINK': '#FFC0CB',
'KHAKI': '#F0E68C',
'SKYBLUE': '#87CEEB',
'PALEGREEN': '#98FB98',
'RED': '#FF0000',
'LIME': '#00FF00',
'CYAN': '#00FFFF',
'WHITE': '#FFFFFF',
'YELLOW': '#FFFF00',
'MAGENTA': '#FF00FF',
'DEEPPINK': '#FF1493'
};
colors.forEach(color => {
const option = document.createElement('option');
option.value = color;
option.textContent = color;
if (color === storedColor) {
option.selected = true;
applySelectedStyle(colorCodes[color]);
}
colorSelector.appendChild(option);
});
colorSelector.addEventListener('change', function () {
if (this.value !== '-------МЯГКИЕ-------' && this.value !== '' && this.value !== '-------ЯРКИЕ-------') {
const selectedColor = this.value;
localStorage.setItem('selectedColor', selectedColor);
applySelectedStyle(colorCodes[selectedColor]);
}
});
colorSelectorBlock.appendChild(colorSelector);
const colorSelectorText = document.createElement('span');
colorSelectorText.className = 'addingText';
colorSelectorText.textContent = 'Выбор Цвета';
colorSelectorBlock.appendChild(colorSelectorText);
const brightnessSliderBlock = document.createElement('label');
brightnessSliderBlock.className = 'brightness-slider-block';
styleContBody.appendChild(brightnessSliderBlock);
const storedBright = localStorage.getItem('savedBrightness') || '100';
const htmlContent = document.querySelector('html');
const brightnessSlider = document.createElement('input');
htmlContent.style.filter = `brightness(${storedBright}%)`;
brightnessSlider.id = 'brightness-slider';
brightnessSlider.type = 'range';
brightnessSlider.min = '30';
brightnessSlider.max = '100';
brightnessSlider.style.marginTop = '30px';
brightnessSlider.style.marginRight = '10px';
brightnessSlider.value = storedBright;
brightnessSlider.addEventListener('input', function () {
const brightnessValue = this.value;
localStorage.setItem('savedBrightness', brightnessValue);
htmlContent.style.filter = `brightness(${brightnessValue}%)`;
});
brightnessSliderBlock.appendChild(brightnessSlider);
const brightnessSliderText = document.createElement('span');
brightnessSliderText.className = 'addingText';
brightnessSliderText.textContent = 'Выбор Яркости';
brightnessSliderBlock.appendChild(brightnessSliderText);
const nickColorBlock = document.createElement('label');
nickColorBlock.className = 'color-picker-nickname';
styleContBody.appendChild(nickColorBlock);
const colorNickElement = document.createElement('input');
const nickColor = localStorage.getItem('playerNameColor') || '#ff8800';
colorNickElement.className = 'color-picker';
colorNickElement.type = 'color';
colorNickElement.value = nickColor;
colorNickElement.addEventListener('input', function () {
const selectedColor = colorNickElement.value;
const tdElements = document.querySelectorAll('td.td-player-name[data-v-2d76ca92=""]');
localStorage.setItem('playerNameColor', selectedColor);
tdElements.forEach(function (td) {
const playerNick = td.querySelector('a');
if (playerNick) {
playerNick.style.color = selectedColor;
playerNick.style.textShadow = '0px 0px 1px' + selectedColor;
}
});
});
nickColorBlock.appendChild(colorNickElement);
const colorNickText = document.createElement('span');
colorNickText.className = 'addingText';
colorNickText.textContent = 'Цвет Никнеймов';
nickColorBlock.appendChild(colorNickText);
const categoryColorBlock = document.createElement('label');
categoryColorBlock.className = 'color-picker-category';
styleContBody.appendChild(categoryColorBlock);
const colorCategoryElement = document.createElement('input');
const categoryColor = localStorage.getItem('categoryColor') || '#0088ff';
colorCategoryElement.className = 'color-picker';
colorCategoryElement.type = 'color';
colorCategoryElement.value = categoryColor;
colorCategoryElement.addEventListener('input', function () {
const selectedColor = colorCategoryElement.value;
const tdElements = document.querySelectorAll('td.td-category[data-v-2d76ca92=""]');
localStorage.setItem('categoryColor', selectedColor);
tdElements.forEach(function (td) {
const category = td.querySelector('a');
if (category) {
category.style.color = selectedColor;
category.style.textShadow = '0px 0px 1px' + selectedColor;
}
});
});
categoryColorBlock.appendChild(colorCategoryElement);
const colorCategoryText = document.createElement('span');
colorCategoryText.className = 'addingText';
colorCategoryText.textContent = 'Цвет Категорий';
categoryColorBlock.appendChild(colorCategoryText);
const bugReportBlock = document.createElement('label');
bugReportBlock.className = 'bug-report-block';
styleContBody.appendChild(bugReportBlock);
const bugReportTG = document.createElement('a');
bugReportTG.href = 'https://t.me/therasuI';
bugReportTG.target = '_blank';
bugReportTG.innerHTML = `<img class="bug-report-button" src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Telegram_logo.svg/512px-Telegram_logo.svg.png" alt="Telegram">`;
bugReportBlock.appendChild(bugReportTG);
const bugReportVK = document.createElement('a');
bugReportVK.href = 'https://vk.com/id838357478';
bugReportVK.target = '_blank';
bugReportVK.innerHTML = `<img class="bug-report-button" src="https://cdn-icons-png.flaticon.com/512/145/145813.png" alt="VK">`;
bugReportBlock.appendChild(bugReportVK);
const bugReportGF = document.createElement('a');
bugReportGF.href = '';
bugReportGF.target = '_blank';
bugReportGF.innerHTML = `<img class="bug-report-button" src="https://raw.githubusercontent.com/JasonBarnabe/greasyfork/master/public/images/blacklogo512.png" alt="Greasy Fork">`;
bugReportBlock.appendChild(bugReportGF);
const bugReportText = document.createElement('span');
bugReportText.className = 'addingText';
bugReportText.textContent = 'Баг / Предложение';
bugReportBlock.appendChild(bugReportText);
}
}
function applyNumsSeparate() {
function formatNumbersInTable() {
const tableCells = document.querySelectorAll('td.td-transaction-amount, td.td-balance-after');
tableCells.forEach(cell => {
const text = cell.textContent.trim();
if (!isNaN(text.replace(/,/g, ''))) {
const originalValue = parseInt(text.replace(/,/g, ''));
const formattedValue = originalValue.toLocaleString('ru');
cell.textContent = formattedValue.toString();
cell.addEventListener('copy', function (event) {
event.clipboardData.setData('text/plain', formattedValue.replace(/\s/g, ''));
event.preventDefault();
});
}
});
}
formatNumbersInTable();
const observer = new MutationObserver(function (mutationsList) {
formatNumbersInTable();
});
observer.observe(document.body, {
childList: true,
subtree: true
});
}
function applyCopyDocs() {
function formatTransactionsInTable() {
const tableRows = document.querySelectorAll('tr.second-row');
tableRows.forEach(row => {
const transactionCell = row.querySelector('.td-transaction-desc');
if (!transactionCell) return;
const playerName = row.previousSibling?.querySelector('.td-player-name a')?.textContent || 'Неизвестно';
const categoryName = row.previousSibling?.querySelector('.td-category a')?.textContent || 'Неизвестно';
const transactionAmount = row.previousSibling?.querySelector('.td-transaction-amount')?.textContent || '0';
const transactionDate = row.previousSibling?.querySelector('.td-time')?.textContent?.replace(/\s/g, ' | ') || 'Дата неизвестна';
const originalText = transactionCell.textContent;
transactionCell.addEventListener('copy', function (event) {
const selection = window.getSelection().toString();
if (selection.length >= transactionCell.textContent.length) {
function replaceData(expected = '', regex = '') {
if (regex !== '') {
var final = originalText.replace(new RegExp(regex), expected);
} else {
var final = expected;
}
event.clipboardData.setData('text/plain', final);
event.preventDefault();
}
function notSupported() {
alert('Данная строка не поддерживается скриптом, отправьте эту строку автору скрипта');
event.clipboardData.setData('text/plain', originalText);
event.preventDefault();
}
if (categoryName === 'BlackPass') {
if (originalText.includes('Получил')) {
replaceData(`[BlackPass | ${transactionDate}] ${playerName} - $1`, /(Получил .+)/);
} else if (originalText.includes('+ Выдача')) {
replaceData(`[BlackPass | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей`);
}
}
else {
event.clipboardData.setData('text/plain', originalText);
event.preventDefault();
}
}
});
});
}
formatTransactionsInTable();
const observer = new MutationObserver(function (mutationsList) {
formatTransactionsInTable();
});
observer.observe(document.body, {
childList: true,
subtree: true
});
}
function applySelectedStyle(color) {
function darkenColor(hexCode, percent) {
percent = Math.max(0, Math.min(100, percent));
var r = parseInt(hexCode.substring(1, 3), 16);
var g = parseInt(hexCode.substring(3, 5), 16);
var b = parseInt(hexCode.substring(5, 7), 16);
r = Math.round(r * (100 - percent) / 100);
g = Math.round(g * (100 - percent) / 100);
b = Math.round(b * (100 - percent) / 100);
var result = '#' + (r < 16 ? '0' : '') + r.toString(16) +
(g < 16 ? '0' : '') + g.toString(16) +
(b < 16 ? '0' : '') + b.toString(16);
return result;
}
const darkColor80 = darkenColor(color, 80);
const darkColor50 = darkenColor(color, 50);
const darkColor20 = darkenColor(color, 20);
const currentStyleElement = document.getElementById('customStyle');
if (currentStyleElement) {
currentStyleElement.remove();
}
const styleElement = document.createElement('style');
styleElement.id = 'customStyle';
styleElement.textContent = `
h1, h2, h3, h4, h5, h6 {
color: ${color} !important;
text-shadow: 0px 0px 10px ${color} !important;
}
#log-filter[data-v-2d76ca92] .form-label[data-v-2d76ca92] {
color: ${color} !important;
text-shadow: 0px 0px 2px ${color} !important;
}
#log-filter-section[data-v-2d76ca92] {
border: 1px solid ${color} !important;
}
.navbar-dark .navbar-nav .nav-link {
color: ${color} !important;
text-shadow: 0px 0px 2px ${color} !important;
}
#log-table[data-v-2d76ca92]>:not(:last-child)>:last-child>*, .table>:not(:last-child)>:last-child>* {
color: ${color} !important;
border-bottom: 1px solid ${color} !important;
}
#log-table[data-v-2d76ca92] .first-row[data-v-2d76ca92] td[data-v-2d76ca92] {
color: ${color} !important;
text-shadow: 0px 0px 2px ${color} !important;
}
#log-table[data-v-2d76ca92]>:not(caption)>*>*, .table-borderless>:not(caption)>*>* {
border-bottom: 1px solid ${color} !important;
}
#log-table[data-v-2d76ca92] .second-row[data-v-2d76ca92] td[data-v-2d76ca92] {
color: ${color} !important;
text-shadow: 0px 0px 2px ${color} !important;
}
.form-control {
color: ${color} !important;
border: 1px solid ${color} !important;
}
.form-control:focus {
box-shadow: 0px 0px 10px ${color} !important;
}
.multiselect.is-open.is-active {
box-shadow: 0px 0px 10px ${color} !important;
}
.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),
.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),
.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),
.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu) {
color: ${color} !important;
border: 1px solid ${color} !important;
background: ${darkColor80} !important;
}
.autoComplete_wrapper>input {
border: 1px solid ${color} !important;
}
.dp__input {
border: 1px solid ${color} !important;
color: ${color} !important;
}
.dp__calendar_header_item {
color: ${color} !important;
}
.dp__month_year_row {
color: ${color} !important;
}
.dp__overlay_cell_pad {
color: ${color} !important;
}
body::-webkit-scrollbar-track {
background: ${darkColor80} !important;
}
body::-webkit-scrollbar-thumb {
background: linear-gradient(${darkColor80}, ${color}, ${darkColor80}) !important;
}
.style-button {
box-shadow: 0px 0px 10px ${darkColor20} !important;
border-color: ${darkColor20} !important;
color: ${darkColor20} !important;
}
.style-button:hover {
background: ${darkColor80} !important;
box-shadow: 0px 0px 10px ${color} !important;
border-color: ${color} !important;
color: ${color} !important;
}
.modal-content {
box-shadow: 0 0 10px ${color} !important;
}
.modal-header {
border: 1px solid ${color} !important;
}
.modal-body {
border: 1px solid ${color} !important;
color: ${color} !important;
}
.style-title-text {
color: ${color} !important;
}
.bg-success {
border: 1px solid ${color} !important;
box-shadow: 0px 0px 10px ${color} !important;
color: ${color} !important;
}
.bug-report-block {
border: 2px solid ${color} !important;
box-shadow: 0 0 5px ${color} !important;
}
.bug-report-button {
border: 2px solid ${color} !important;
box-shadow: 0 0 5px ${color} !important;
}
.bi-funnel {
color: ${color} !important;
}
.selector {
border: 1px solid ${color} !important;
box-shadow: 0 0 5px ${color} !important;
color: ${color} !important;
background: ${darkColor80} !important;
}
.selector:hover {
background: ${darkColor50} !important;
}
.selector option {
background: ${darkColor80} !important;
}
input[type=range] {
box-shadow: 0px 0px 5px ${color} !important;
}
input[type=range]::-webkit-slider-runnable-track {
border: 2px solid ${color} !important;
background-color: ${darkColor80} !important;
}
input[type=range]::-webkit-slider-runnable-track:hover {
background-color: ${darkColor50} !important;
}
input[type=range]::-webkit-slider-thumb {
background: ${darkColor80} !important;
}
input[type=range]::-webkit-slider-thumb:hover {
background: ${darkColor50} !important;
}
input[type="color"] {
border: 2px solid ${color} !important;
box-shadow: 0px 0px 5px ${color} !important;
}
input[type="color"]:hover {
box-shadow: 0px 0px 10px 2px ${color} !important;
}
.show-filter-btn[data-v-2d76ca92] {
background: ${darkColor80} !important;
}
.navbar-brand {
color: ${darkColor20} !important;
}
.navbar-brand:hover {
color: ${color} !important;
}
.bi-arrow-bar-right {
color: ${color} !important;
}
#next-page-btn[data-v-2d76ca92], .btn-secondary, .close-btn, .icon-btn, .show-filter-btn {
border-color: ${color} !important;
color: ${color} !important;
}
#prev-page-btn[data-v-2d76ca92], .btn-outline-secondary {
border-color: ${color} !important;
color: ${color} !important;
}
.bi-sort-down::before {
color: ${color} !important;
text-shadow: 0px 0px 2px ${color} !important;
}
.slider {
background-color: ${darkColor20} !important;
box-shadow: 0 0 5px ${darkColor20} !important;
transition: all .4s ease;
}
.slider:hover {
background-color: ${darkColor50} !important;
}
.slider:before {
background-color: ${color} !important;
}
input:checked + .slider {
background-color: ${darkColor80} !important;
}
input:checked + .slider:hover {
background-color: ${darkColor50} !important;
}
`;
document.head.appendChild(styleElement);
}
function applyTextGradient() {
const textGradient = document.createElement('style');
textGradient.id = 'text-gradient';
textGradient.textContent = `
@keyframes gradientCategory {
0% { background-position: 0% 100%; }
100% { background-position: 1200% 100%; }
}
.td-category[data-v-2d76ca92] a[data-v-2d76ca92] {
background: linear-gradient(45deg, #00ffff, #0045ff, #00ffff);
background-size: 150% 150%;
animation: gradientCategory 5s linear infinite;
color: transparent !important;
-webkit-background-clip: text;
font-style: italic;
font-weight: 700;
text-decoration: none;
text-shadow: 0px 0px 10px #08f;
padding-right: 3px;
}
.td-player-name[data-v-2d76ca92] a[data-v-2d76ca92] {
background: linear-gradient(45deg, #ffff00, #ff4400, #ffff00);
background-size: 150% 150%;
animation: gradientCategory 5s linear infinite;
color: transparent !important;
-webkit-background-clip: text;
font-style: italic;
font-weight: 700;
text-decoration: none;
text-shadow: 0px 0px 10px #f80;
padding-right: 3px;
}
.navbar-brand {
background: linear-gradient(45deg, #00ccff, #ff4400, #00ccff);
background-size: 150% 150%;
animation: gradientCategory 5s linear infinite;
color: transparent !important;
-webkit-background-clip: text;
font-style: italic;
font-weight: 700;
text-decoration: none;
text-shadow: 0px 0px 10px #888;
padding-right: 3px;
}
`;
document.head.appendChild(textGradient);
}
function removeTextGradient() {
const textGradient = document.getElementById('text-gradient');
if (textGradient) {
document.head.removeChild(textGradient);
}
}
function applyMenuStyles() {
const pseudoClasses = document.createElement('style');
pseudoClasses.id = 'elements-pseudo-classes';
pseudoClasses.textContent = `
.style-button {
color: #ffffff;
background: transparent;
border: 3px solid #ffffff;
border-radius: 10px;
box-shadow: 0px 0px 10px #ffffff;
width: 10%;
transition-duration: 0.5s;
}
.style-button:hover {
background: #222;
box-shadow: 0px 0px 10px #aaaaff;
border-color: #aaaaff;
color: #aaaaff;
}
.style-title-text {
font-size: 24px;
color: #fff;
font-weight: 600;
}
.switch {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
padding-left: 20px;
}
.switch input { display: none; }
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #aaaaaa;
box-shadow: 0 0 5px #aaaaaa;
transition: all .4s ease;
}
.slider:hover {
background-color: #666666;
}
.slider:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: #cccccc;
box-shadow: 0 0 5px #000000;
transition: all .4s ease;
}
input:checked + .slider {
background-color: #222222;
}
input:checked + .slider:hover {
background-color: #666666;
}
input:focus + .slider {
box-shadow: 0 0 5px #222222;
background-color: #444444;
}
input:checked + .slider:before {
transform: translateX(26px);
}
.slider.round {
border-radius: 34px;
}
.slider.round:before {
border-radius: 50%;
}
.tooltip-style {
position: relative;
display: inline-block;
border-bottom: 1px dotted;
}
.tooltip-style .tooltip-style-text {
visibility: hidden;
background-color: #222222;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px;
position: absolute;
z-index: 1;
width: 300px;
bottom: 100%;
left: 50%;
margin-left: -150px;
margin-bottom: 10px;
transition: opacity 0.3s;
opacity: 0;
font-size: 16px;
}
.tooltip-style:hover .tooltip-style-text {
visibility: visible;
opacity: 0.95;
}
.selector {
background: #222222;
border: 1px solid #cccccc;
border-radius: 20px;
box-shadow: 0 0 5px #cccccc;
color: #cccccc;
cursor: pointer;
font-size: 18px;
margin-right: 10px;
margin-top: 25px;
padding: 4px;
text-align: center;
width: 40%;
transition-duration: 0.5s;
}
.selector:hover {
background: #444444;
color: #ffffff;
box-shadow: 0 0 5px #ffffff;
}
.selector option {
background: #222222;
}
input[type=range] {
width: 40%;
border-radius: 10px;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
box-shadow: 0px 0px 5px #cccccc;
}
input[type=range]::-webkit-slider-runnable-track {
border-radius: 10px;
height: 10px;
border: 2px solid #cccccc;
background-color: #222222;
transition-duration: 0.5s;
}
input[type=range]::-webkit-slider-runnable-track:hover {
border-radius: 10px;
height: 10px;
border: 2px solid #cccccc;
background-color: #444444;
}
input[type=range]::-webkit-slider-thumb {
background: #222222;
border: 1px solid #cccccc;
box-shadow: 0px 0px 2px #cccccc;
border-radius: 25px;
cursor: pointer;
width: 15px;
height: 30px;
-webkit-appearance: none;
margin-top: -10px;
transition-duration: 0.5s;
}
input[type=range]::-webkit-slider-thumb:hover {
background: #444444;
border: 1px solid #ffffff;
box-shadow: 0px 0px 2px #000000;
border-radius: 25px;
cursor: pointer;
width: 20px;
height: 40px;
-webkit-appearance: none;
margin-top: -15px;
}
input[type=range]::-moz-range-track {
border-radius: 10px/100%;
height: 5px;
border: 1px solid cyan;
background-color: #fff;
}
input[type=range]::-moz-range-thumb {
background: #ecf0f1;
border: 1px solid cyan;
border-radius: 10px/100%;
cursor: pointer;
}
.color-picker {
margin-top: 25px;
margin-right: 10px;
width: 40%;
vertical-align: bottom;
}
input[type="color"]::-webkit-color-swatch-wrapper {
padding: 2px;
}
input[type="color"]::-webkit-color-swatch {
border: none;
border-radius: 20px;
}
input[type="color"] {
-webkit-appearance: none;
border: 2px solid #ffffff;
background: #000;
border-radius: 20px;
overflow: hidden;
outline: none;
cursor: pointer;
box-shadow: 0px 0px 5px #ffffff;
transition-duration: 0.5s;
}
input[type="color"]:hover {
-webkit-appearance: none;
border: 2px solid #ffffff;
background: #444444;
border-radius: 20px;
overflow: hidden;
outline: none;
cursor: pointer;
box-shadow: 0px 0px 10px 2px #ffffff;
}
.addingText {
font-size: 20px;
font-style: italic;
font-weight: 800;
vertical-align: middle;
}
.bug-report-block {
margin-top: 25px;
margin-bottom: 5px;
padding: 10px;
border: 2px solid #fff;
border-radius: 20px;
box-shadow: 0 0 5px #fff;
}
.bug-report-button {
width: 7%;
margin-right: 5%;
transition-duration: 0.5s;
border: 2px solid #fff;
border-radius: 50%;
box-shadow: 0 0 5px #fff;
}
.bug-report-button:hover {
filter: brightness(0.5);
}
`;
document.head.appendChild(pseudoClasses);
}
function applySavedColors() {
const savedNick = localStorage.getItem('playerNameColor') || '#ff8800';
const savedCategory = localStorage.getItem('categoryColor') || '#0088ff';
const savedColors = document.createElement('style');
savedColors.id = 'stored-NickCategory-Colors';
savedColors.textContent = `
.td-player-name[data-v-2d76ca92] a[data-v-2d76ca92] {
color: ${savedNick};
text-shadow: 0px 0px 1px ${savedNick};
}
.td-category[data-v-2d76ca92] a[data-v-2d76ca92] {
color: ${savedCategory};
text-shadow: 0px 0px 1px ${savedCategory};
}
`;
document.head.appendChild(savedColors);
}
function applyBodyStyle() {
const bodyStyle = document.createElement('style');
bodyStyle.id = 'main-body-theme';
bodyStyle.textContent = `
h1, h2, h3, h4, h5, h6 {
color: #fff;
text-shadow: 0px 0px 10px #fff;
}
.navbar-dark .navbar-brand,
.navbar-dark .navbar-brand:focus,
.navbar-dark .navbar-brand:hover {
color: #fff;
font-weight: 900;
transition-duration: 0.5s;
}
.bg-success {
background: #000 !important;
border: 1px solid #fff;
box-shadow: 0px 0px 10px #fff;
}
.badge {
border-radius: 7px;
color: #fff;
font-weight: 500;
}
.navbar-dark .navbar-nav .nav-link {
color: #fff;
text-shadow: 0px 0px 10px #fff;
}
.bi-arrow-left::before {
color: #fff;
}
.show-filter-btn[data-v-2d76ca92] {
background: #333;
border-bottom-left-radius: 10px;
}
.alert[data-v-0c0e47d2] {
border-radius: 20px;
box-shadow: 0 0 10px 2px #f00;
}
.bg-dark {
bs-bg-opacity: 0;
background: #000 !important;
}
#game-logs-app {
background: #000;
}
body {
background-color: #000;
background-size: 100%;
}
body::-webkit-scrollbar {
width: 16px;
}
body::-webkit-scrollbar-track {
background: #222;
}
body::-webkit-scrollbar-thumb {
background: #fff;
}
.accessible-servers .page-intro {
color: #0ff;
text-align: center;
text-shadow: 0px 0px 10px #fff;
}
.accessible-servers .game-logs-link {
font-size: 1.5rem;
text-shadow: 0px 0px 10px #f0f;
transition-duration: 0.5s;
}
a {
color: #faf;
text-decoration: none;
}
a:hover {
color: #f0f;
}
#next-page-btn[data-v-2d76ca92],
.btn-secondary,
.close-btn,
.icon-btn,
.show-filter-btn {
background-color: #222;
border-color: #fff;
color: #fff;
}
#next-page-btn[data-v-2d76ca92]:hover,
.btn-secondary:hover,
.close-btn:hover,
.icon-btn:hover,
.show-filter-btn:hover {
background-color: #444;
border-color: #aaa;
color: #fff;
}
#prev-page-btn[data-v-2d76ca92],
.btn-outline-secondary {
border-color: #fff;
color: #fff;
}
#prev-page-btn[data-v-2d76ca92]:hover,
.btn-outline-secondary:hover {
background-color: #444;
border-color: #aaa;
color: #fff;
}
#log-table[data-v-2d76ca92]>:not(:last-child)>:last-child>*,
.table>:not(:last-child)>:last-child>* {
border: 1px solid #111;
border-bottom: 1px solid #fff;
background: #111;
color: #fff;
}
#log-table[data-v-2d76ca92] .first-row[data-v-2d76ca92] td[data-v-2d76ca92] {
text-align: center;
background: #111;
color: #fff;
text-shadow: 0px 0px 2px #fff;
}
#log-table[data-v-2d76ca92] .second-row[data-v-2d76ca92] td[data-v-2d76ca92] {
padding: 0.5rem 0.5rem 0.5rem 1.5rem;
background: #000;
color: #fff;
text-shadow: 0px 0px 2px #fff;
}
#log-table[data-v-2d76ca92]>:not(caption)>*>*,
.table-borderless>:not(caption)>*>* {
border: 1px solid rgba(0, 0, 0, 0);
border-bottom: 1px solid #fff;
}
#log-table[data-v-2d76ca92] .first-row[data-v-2d76ca92] td[data-v-2d76ca92] {
border: 1px solid rgba(0, 0, 0, 0);
text-align: center;
}
.td-category[data-v-2d76ca92] a[data-v-2d76ca92] {
color: #08f;
-webkit-background-clip: text;
font-style: italic;
font-weight: 700;
text-decoration: none;
text-shadow: 0px 0px 1px #08f;
padding-right: 3px;
}
.td-player-name[data-v-2d76ca92] a[data-v-2d76ca92] {
color: #f80;
-webkit-background-clip: text;
font-style: italic;
font-weight: 700;
text-decoration: none;
text-shadow: 0px 0px 1px #f80;
padding-right: 3px;
}
.td-index[data-v-2d76ca92] {
background: linear-gradient(90deg, rgba(51, 51, 51, 1) 0%, rgba(17, 17, 17, 1) 100%) !important;
color: #fff;
}
.bi-sort-down::before {
color: #f90;
text-shadow: 0px 0px 2px #f90;
}
.bi-sort-up::before {
color: #f90;
text-shadow: 0px 0px 2px #f90;
}
#log-filter-section[data-v-2d76ca92] {
background: #000;
border: 1px solid #fff;
border-radius: 25px;
height: 1000px;
}
#log-filter[data-v-2d76ca92] .form-label[data-v-2d76ca92] {
color: #fff;
font-weight: 500;
}
#log-filter[data-v-2d76ca92] .close-btn[data-v-2d76ca92] {
height: 41px;
background: #000;
border-bottom-left-radius: 10px;
border: 1px solid #000;
}
.btn-primary,
.submit-btn {
background-color: #000;
border: 3px solid #0af;
border-radius: 10px;
color: #0ff;
}
.btn-primary:hover,
.submit-btn:hover {
background-color: #033;
border-color: #fff;
color: #fff;
transition: all .2s ease-in-out;
}
.btn-outline-danger {
border: 3px solid #f00;
color: #f00;
border-radius: 10px;
}
.btn-outline-danger:hover {
background-color: #900;
border-color: #fff;
color: #fff;
transition: all .2s ease-in-out;
}
.bi-question-circle-fill::before {
color: #666;
text-shadow: 0px 0px 10px #000;
}
strong {
color: #0ff;
}
.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),
.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),
.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),
.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu) {
border-bottom-right-radius: 0;
border-top-right-radius: 0;
background: #111;
color: #fff;
border: 1px solid #fff;
}
.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback):not(.field-error) {
border-bottom-left-radius: 0;
border-top-left-radius: 0;
margin-left: -1px;
background: #000;
color: #fff;
}
.multiselect-search {
background: #000;
border: 0;
bottom: 0;
box-sizing: border-box;
color: #fff;
left: 0;
outline: none;
width: 100%;
}
.multiselect-option {
align-items: center;
box-sizing: border-box;
cursor: pointer;
background: #000;
text-decoration: none;
}
.multiselect .multiselect-option.is-pointed {
background-color: #222;
color: #fff;
}
.multiselect .multiselect-option.is-pointed.is-selected {
background-color: #666;
color: #fff;
}
.multiselect .multiselect-option.is-selected {
background-color: #444;
color: #fff;
}
.multiselect-dropdown::-webkit-scrollbar {
width: 12px;
}
.multiselect-dropdown::-webkit-scrollbar-track {
background: #222;
border-left: 1px solid #fff;
}
.multiselect-dropdown::-webkit-scrollbar-thumb {
background-color: #fff;
border-radius: 20px;
border: 1px solid #222;
}
.multiselect.is-open.is-active {
box-shadow: 0px 0px 10px #fff;
}
.dropdown-menu {
background-color: #222;
}
.dropdown-menu show {
position: absolute;
inset: 0px auto auto 0px;
margin: 0px;
transform: translate(-1px, 40px);
background: #333;
}
.dropdown-item:focus,
.dropdown-item:hover {
background-color: #444;
color: #1e2125;
}
.autoComplete_wrapper>input {
background-color: #000;
background-origin: border-box;
background-position: left 1.05rem top 0.8rem;
background-repeat: no-repeat;
background-size: 1.4rem;
border: 1px solid #fff;
border-radius: 4px;
box-sizing: border-box;
color: #f90;
outline: none;
transition: all .4s ease;
width: 100%;
}
.autoComplete_wrapper>input:focus {
border: 1px solid #f90;
color: #f90;
}
.autoComplete_wrapper>input:hover {
color: #a60;
transition: all .3s ease;
}
.autoComplete_wrapper>ul>li {
background-color: #000;
color: #fff;
transition: all .2s ease;
}
.autoComplete_wrapper>ul>li:hover,
.autoComplete_wrapper>ul>li[aria-selected=true] {
background-color: #222;
}
.autoComplete_wrapper>ul>li mark {
background-color: transparent;
color: #f90;
font-weight: 700;
}
.autoComplete_wrapper>ul::-webkit-scrollbar {
width: 12px;
}
.autoComplete_wrapper>ul::-webkit-scrollbar-track {
background: #222;
border-left: 1px solid #fff;
}
.autoComplete_wrapper>ul::-webkit-scrollbar-thumb {
background-color: #fff;
border-radius: 20px;
border: 1px solid #222;
}
.form-control {
background-color: #000;
border: 1px solid #fff;
color: #fff;
font-weight: 400;
transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
width: 100%;
}
.form-control:focus {
background-color: #000;
border-color: #fff;
box-shadow: 0px 0px 10px #fff;
color: #fff;
}
textarea.form-control {
min-height: 100px;
resize: none;
}
.lookup-symbol[data-v-2d76ca92] {
color: #fff;
font-weight: 500;
text-shadow: 0px 0px 10px #fff;
}
.lookup-comment[data-v-2d76ca92] {
color: #fff;
font-weight: 400;
text-shadow: 0px 0px 10px #fff;
}
.dp__input {
background-color: #111;
border: 1px solid #fff;
border-radius: 5px;
color: #fff;
transition: border-color .2s cubic-bezier(.645, .045, .355, 1);
width: 100%;
}
.dp__input_icons {
color: #0ff;
}
.dp__month_year_row {
background: #111;
color: #fff;
}
.dp__inner_nav svg {
color: #0ff;
}
.dp__calendar_header,
.dp__calendar_wrap {
background: #111;
}
.dp__calendar_header_item {
color: #fff;
}
.dp__cell_inner {
color: #fff;
}
.dp__active_date,
.dp__range_end,
.dp__range_start {
background: #666;
color: #fff;
}
.dp__date_hover:hover,
.dp__date_hover_end:hover,
.dp__date_hover_start:hover {
background: #444;
color: #fff;
transition: all .5s ease-in-out;
}
.dp__cell_disabled,
.dp__cell_offset {
color: #444;
}
.dp__button {
background: #222;
}
.dp__button_bottom {
background: #222;
color: #0ff;
}
.dp__button:hover {
background: #333;
color: #077;
transition: all .5s ease-in-out;
}
.dp__month_year_select:hover {
background: #222;
color: #fff;
transition: all .5s ease-in-out;
}
.dp__overlay_cell,
.dp__overlay_cell_active {
background: #444;
}
.dp__overlay_container {
background: #000;
}
.dp__overlay_cell_disabled,
.dp__overlay_cell_disabled:hover {
background: #111;
color: #444;
}
.dp__time_display {
color: #aaa;
}
.dp__time_display:hover {
background: #111;
color: #fff;
transition: all .3s ease-in-out;
}
.dp__inc_dec_button:hover {
background: #222;
color: #0ff;
transition: all .3s ease-in-out;
}
.dp__cell_in_between,
.dp__overlay_cell:hover {
background: #666;
color: #fff;
transition: all .3s ease-in-out;
}
.dp__overlay_cell_pad {
padding: 10px 0;
color: #999;
}
.dp__inner_nav:hover {
background: #333;
color: #fff;
transition: all .3s ease-in-out;
}
.dp__today {
border: 1px solid #fff;
}
#playerNameInput::placeholder {
color: #a60;
}
/* Loading Overlay */
#loading-overlay[data-v-173ec149] {
height: 100%;
width: 100%;
}
#loading-overlay-heading[data-v-173ec149] {
font-weight: 500;
letter-spacing: 1px;
text-align: center;
text-transform: uppercase;
background: linear-gradient(90deg, #ffffff, #444444, #ffffff);
background-size: 150% 150%;
background-clip: text;
-webkit-background-clip: text;
color: transparent !important;
filter: saturate(0);
animation: textGradient 5s linear infinite;
text-shadow: none !important;
}
#loading-overlay[data-v-173ec149] .spinner[data-v-173ec149] {
border-width: 0.375rem;
color: #fff;
height: 4rem;
width: 4rem;
}
#loading-overlay-container[data-v-173ec149] {
background-color: #000;
height: 100%;
justify-content: center;
width: 100%;
}
/* Modal Dialog */
.modal [type=button],
.modal [type=submit] {
margin-left: 0.5rem;
filter: invert(1);
}
.modal-header {
background: #000;
border: 1px solid #fff;
align-items: center;
border-bottom: 1px solid #dee2e6;
border-top-left-radius: 25px;
border-top-right-radius: 25px;
}
.modal-body {
background: #000;
border: 1px solid #fff;
color: #fff;
position: relative;
border-bottom-left-radius: 25px;
border-bottom-right-radius: 25px;
}
.modal-content {
border-radius: 25px;
box-shadow: 0 0 10px #fff;
}
.modal-open {
padding-right: 0px !important;
}
.modal-backdrop {
height: 100%;
width: 100%;
}
.modal.fade.show {
padding-right: 80px !important;
padding-left: 80px !important;
}
.alert-danger,
.alert-modal.failure .modal-content,
.default-error-page .exception {
background-color: #000;
border: 5px solid #f11;
border-radius: 50px;
color: #fff;
}
.fade {
transition: opacity .15s linear;
backdrop-filter: blur(5px);
}
@keyframes textGradient {
0% {
background-position: 0% 50%;
}
100% {
background-position: 1200% 50%;
}
}
#placeholder-pic[data-v-9c1e68e2] {
display: block;
opacity: 0;
margin: auto;
}
#placeholder-msg[data-v-9c1e68e2] {
color: #0aa;
text-align: center;
}
#content-placeholder[data-v-9c1e68e2] {
background-image: url(https://snipboard.io/8kBudo.jpg);
background-repeat: no-repeat;
background-size: contain;
background-position: center;
}
`;
document.head.appendChild(bodyStyle);
}
function applyNewFonts() {
const fontStyles = document.createElement('style');
fontStyles.id = 'import-fonts';
fontStyles.textContent = `
/* Import Fonts Stylesheet */
/* Imported Fonts:
--- Bad Script ---
--- Comfortaa ---
--- Fira Sans ---
--- Marmelad ---
--- Montserrat ---
--- Neucha ---
--- Play ---
--- Roboto ---
--- Sofia Sans ---
--- Ububntu --- */
/* Powered by Google Fonts API */
@import url('https://fonts.googleapis.com/css2?family=Bad+Script&family=Comfortaa&family=Fira+Sans&family=Marmelad&family=Montserrat&family=Neucha&family=Play&family=Roboto:ital@1&family=Sofia+Sans&family=Ubuntu&display=swap');
`;
document.head.appendChild(fontStyles);
}
function replaceTableHeading() {
const titleElement = document.querySelector('div.container-fluid span.badge.bg-success');
const tableHeading = document.querySelector('#log-table-heading');
if (titleElement && tableHeading) {
tableHeading.textContent += ' - ' + titleElement.textContent;
}
}
function replaceSpinnerImage() {
const spinnerElement = document.querySelector('div.spinner.spinner-border[data-v-173ec149=""]');
if (spinnerElement) {
const gifImageUrl = 'https://rb.ru/media/upload_tmp/2018/d1.gif';
const gifImage = document.createElement('img');
gifImage.id = 'replaced-loading-image';
gifImage.src = gifImageUrl;
gifImage.style.width = '160px';
gifImage.style.height = '120px';
gifImage.style.filter = 'saturate(0)';
spinnerElement.replaceWith(gifImage);
}
}
function addListenersAttributes() {
const inputNameElement = document.querySelector('#playerNameInput');
const transactionData = document.querySelector('#log-filter-form__transaction-desc');
const playerIdElement = document.querySelector('#log-filter-form__player-id');
const playerIpElement = document.querySelector('#log-filter-form__player-ip');
const transactionAmountElement = document.querySelector('#log-filter-form__transaction-amount');
const transactionAfterElement = document.querySelector('#log-filter-form__balance-after');
const otherElement = document.querySelector('.btn.btn-primary');
if (inputNameElement) {
inputNameElement.addEventListener('keydown', function (event) {
if (event.key === 'Enter' || event.key === 'Tab') {
if (otherElement) otherElement.click();
}
});
}
if (transactionData) {
transactionData.addEventListener('keydown', function (event) {
if (event.key === 'Enter' || event.key === 'Tab') {
event.preventDefault();
if (otherElement) otherElement.click();
}
});
}
if (playerIdElement) playerIdElement.setAttribute('autocomplete', 'off');
if (playerIpElement) playerIpElement.setAttribute('autocomplete', 'off');
if (transactionAmountElement) transactionAmountElement.setAttribute('autocomplete', 'off');
if (transactionAfterElement) transactionAfterElement.setAttribute('autocomplete', 'off');
}
function setPageTitle() {
const titleElement = document.querySelector('div.container-fluid span.badge.bg-success');
if (titleElement) {
document.title += ' - ' + titleElement.textContent;
}
}
function scriptInit() {
setPageTitle();
replaceTableHeading();
applyNewFonts();
applyBodyStyle();
replaceSpinnerImage();
applySavedColors();
createStyleButton('div.container-fluid span.badge.bg-success');
createStyleContainerBg('main');
applyMenuStyles();
addListenersAttributes();
const savedColor = localStorage.getItem('selectedColor');
const colorCodes = {
'PINK': '#FFC0CB',
'KHAKI': '#F0E68C',
'SKYBLUE': '#87CEEB',
'PALEGREEN': '#98FB98',
'RED': '#FA8072',
'LIME': '#00FF00',
'CYAN': '#00FFFF',
'WHITE': '#FFFFFF',
'YELLOW': '#FFFF00',
'MAGENTA': '#FF00FF',
'DEEPPINK': '#FF1493'
};
if (savedColor && colorCodes[savedColor]) {
applySelectedStyle(colorCodes[savedColor]);
}
const savedFont = localStorage.getItem('selectedFont');
if (savedFont) {
document.body.style.fontFamily = savedFont;
}
const savedBrightness = localStorage.getItem('savedBrightness');
if (savedBrightness) {
document.querySelector('html').style.filter = `brightness(${savedBrightness}%)`;
}
}
})();