Theme & Font Changer

Theme Changer + Font Changer for Black Logs

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Theme & Font Changer
// @namespace    https://logs.blackrussia.online/
// @version      0.4.1.0
// @description  Theme Changer + Font Changer for Black Logs
// @author       Lukky
// @match        https://logs.blackrussia.online/gslogs/*
// @icon         https://freepngimg.com/thumb/eagle/20-eagle-black-siluet-png-image-download-thumb.png
// @license      Lukky
// ==/UserScript==
(function() {
    'use strict';

    scriptInit();

    const styleButton = createStyleButton('div.container-fluid span.badge.bg-success');
    const styleContainerBg = createStyleContainerBg('main');

    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 createStyleButton(element) {

        const fontStyles = document.createElement('style');
        fontStyles.textContent = `@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);

        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.textContent = 'STYLE';
        styleToggle.style.color = '#ffffff';
        styleToggle.style.background = 'transparent';
        styleToggle.style.border = '3px solid #ffffff';
        styleToggle.style.borderRadius = '10px';
        styleToggle.style.boxShadow = '0px 0px 10px #ffffff';
        styleToggle.style.width = '10%';

        const replaceElement = document.querySelector(element);
        replaceElement.replaceWith(styleToggle);
    }

    function createStyleContainerBg(element) {

        const containerBg = document.createElement('div');
        containerBg.className = 'modal fade';
        containerBg.id = 'container-background';
        containerBg.tabIndex = '-1';
        containerBg.style.dispaly = 'none';
        containerBg.ariaHidden = 'true';

        const parentElement = document.querySelector(element);
        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 styleTitle = document.createElement('h5');
        styleTitle.className = 'style-title';
        styleContHead.appendChild(styleTitle);

        const styleTitleText = document.createElement('span');
        styleTitleText.className = 'badge bg-success';
        styleTitleText.textContent = 'STYLE';
        styleTitle.appendChild(styleTitleText);
        styleTitle.insertAdjacentText('beforeend', '-Переключатель Тем-');

        const styleClose = document.createElement('button');
        styleClose.type = 'button';
        styleClose.className = 'btn-close';
        styleClose.dataset.bsDismiss = 'modal';
        styleClose.ariaLabel = 'Close';
        styleContHead.appendChild(styleClose);

        const switchStyleElement = document.createElement('label');
        switchStyleElement.className = 'switch';
        switchStyleElement.innerHTML = `
            <input type="checkbox" id="styleToggleCheck">
            <span class="slider round" style="padding-right: 20px; box-shadow: 0px 0px 5px #fff"></span>
            <span class="addingText" style="display: block; width: max-content; margin: 5px; padding-left: 50px"> Включить Переливание Текста </span>
        `;
        styleContBody.appendChild(switchStyleElement);

        var 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');
            }
        });
        function applyTextGradient() {
            const textGradient = document.createElement('style');
            textGradient.id = 'text-gradient';
            textGradient.textContent = `.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;
}
@keyframes gradientCategory {
    0% {background-position: 0% 100%;}
    100% {background-position: 1200% 100%;}
}
.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() {
            var textGradient = document.querySelector('#text-gradient');
            document.head.removeChild(textGradient);
        }

        const fontSelectorBlock = document.createElement('label');
        fontSelectorBlock.className = 'font-selector-block';
        styleContBody.appendChild(fontSelectorBlock);

        const fontSelector = document.createElement('select');
        fontSelector.id = 'font-selector';
        fontSelector.style.width = '40%';
        fontSelector.style.borderRadius = '20px';
        fontSelector.style.border = '1px solid #fff';
        fontSelector.style.background = '#222';
        fontSelector.style.color = '#fff';
        fontSelector.style.fontSize = '18px';
        fontSelector.style.textAlign = 'center';
        fontSelector.style.padding = '4px';
        fontSelector.style.marginTop = '25px';
        fontSelector.style.marginRight = '10px';
        fontSelector.style.boxShadow = '0px 0px 5px #fff';
        fontSelector.style.cursor = 'pointer';
        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.id = 'color-selector';
        colorSelector.style.width = '40%';
        colorSelector.style.borderRadius = '20px';
        colorSelector.style.border = '1px solid #fff';
        colorSelector.style.background = '#222';
        colorSelector.style.color = '#fff';
        colorSelector.style.fontSize = '18px';
        colorSelector.style.textAlign = 'center';
        colorSelector.style.padding = '4px';
        colorSelector.style.marginTop = '25px';
        colorSelector.style.marginRight = '10px';
        colorSelector.style.boxShadow = '0px 0px 5px #fff';
        colorSelector.style.cursor = 'pointer';
        const storedColor = localStorage.getItem('selectedColor') || 'WHITE';
        const colors = ['WHITE', 'PINK', 'CYAN', 'KHAKI', 'SKYBLUE', 'PALEGREEN'];
        colors.forEach(color => {
            const option = document.createElement('option');
            option.value = color;
            option.textContent = color;
            if (color === storedColor) {
                option.selected = true;
                applySelectedStyle(color);
            }
            colorSelector.appendChild(option);
        });
        colorSelector.addEventListener('change', function() {
            const selectedColor = this.value;
            localStorage.setItem('selectedColor', selectedColor);
            applySelectedStyle(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 = '25px';
        brightnessSlider.style.marginRight = '10px';
        brightnessSlider.value = storedBright;
        brightnessSlider.addEventListener('input', function() {
            const brightnessValue = this.value;
            localStorage.setItem('savedBrightness', brightnessValue);
            htmlContent.style.filter = `brightness(${brightnessValue}%)`;
        });
        const filterHeading = document.querySelector('#log-filter-heading');
        if (filterHeading) {
            filterHeading.parentNode.insertBefore(brightnessSlider, filterHeading.nextSibling);
        }
        const sliderStyle = document.createElement('style');
        sliderStyle.textContent = `input[type=range]  {width: 40%; border-radius: 10px; -webkit-appearance: none; -moz-appearance: none; appearance: none; box-shadow: 0px 0px 5px #fff;}
                                   input[type=range]::-webkit-slider-runnable-track {border-radius: 10px; height: 15px; border: 2px solid #fff; background-color: #222;}
                                   input[type=range]::-webkit-slider-thumb {background: #444; border: 1px solid #fff; box-shadow: 0px 0px 2px #fff; border-radius: 25px; cursor: pointer; width: 15px; height: 30px; -webkit-appearance: none; margin-top: -8px;}
                                   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;}`;
        document.head.appendChild(sliderStyle);
        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.type = 'color';
        colorNickElement.style.marginTop = '20px';
        colorNickElement.style.marginRight = '10px';
        colorNickElement.style.width = '40%';
        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');
        nickColorBlock.className = 'color-picker-category';
        styleContBody.appendChild(categoryColorBlock);

        const colorCategoryElement = document.createElement('input');
        const categoryColor = localStorage.getItem('categoryColor') || '#0088ff';
        colorCategoryElement.type = 'color';
        colorCategoryElement.style.marginTop = '20px';
        colorCategoryElement.style.marginRight = '10px';
        colorCategoryElement.style.width = '40%';
        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);
    }

    function applySavedColors() {
        const savedNick = localStorage.getItem('playerNameColor');
        const savedCategory = localStorage.getItem('categoryColor');
        const savedColors = document.createElement('style');
        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 applySelectedStyle(color) {
    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.toLowerCase()} !important; filter: contrast(0.8); text-shadow: 0px 0px 10px ${color.toLowerCase()} !important;}
    #log-filter[data-v-2d76ca92] .form-label[data-v-2d76ca92] {color: ${color.toLowerCase()} !important; filter: contrast(0.8); text-shadow: 0px 0px 2px ${color.toLowerCase()} !important;}
    #log-filter-section[data-v-2d76ca92] {border: 1px solid ${color.toLowerCase()} !important;}
    .navbar-dark .navbar-nav .nav-link {color: ${color.toLowerCase()} !important; filter: contrast(0.8); text-shadow: 0px 0px 2px ${color.toLowerCase()} !important;}
    #log-table[data-v-2d76ca92]>:not(:last-child)>:last-child>*, .table>:not(:last-child)>:last-child>* {color: ${color.toLowerCase()} !important; border-bottom: 1px solid ${color.toLowerCase()} !important;}
    #log-table[data-v-2d76ca92] .first-row[data-v-2d76ca92] td[data-v-2d76ca92] {color: ${color.toLowerCase()} !important; text-shadow: 0px 0px 2px ${color.toLowerCase()} !important;}
    #log-table[data-v-2d76ca92]>:not(caption)>*>*, .table-borderless>:not(caption)>*>* {border-bottom: 1px solid ${color.toLowerCase()} !important;}
    #log-table[data-v-2d76ca92] .second-row[data-v-2d76ca92] td[data-v-2d76ca92] {color: ${color.toLowerCase()} !important; text-shadow: 0px 0px 2px ${color.toLowerCase()} !important;}
    .form-control {color: ${color.toLowerCase()} !important; border: 1px solid ${color.toLowerCase()} !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.toLowerCase()} !important; border: 1px solid ${color.toLowerCase()} !important;}
    .autoComplete_wrapper>input {border: 1px solid ${color.toLowerCase()} !important;}
    .dp__input{border: 1px solid ${color.toLowerCase()} !important;};
    ` ;
    document.head.appendChild(styleElement);
    }

    function applySwitchStyle() {
    const switchStyle = document.createElement('style');
    switchStyle.textContent = `
        .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: #ccc;
            transition: all .4s ease;
        }
        .slider:before {
            position: absolute;
            content: "";
            height: 26px;
            width: 26px;
            left: 4px;
            bottom: 4px;
            background-color: white;
            transition: all .4s ease;
        }
        input:checked + .slider {
            background-color: #222;
        }
        input:focus + .slider {
            box-shadow: 0 0 1px #222;
        }
        input:checked + .slider:before {
            transform: translateX(26px);
        }
        .slider.round {
            border-radius: 34px;
        }
        .slider.round:before {
            border-radius: 50%;
        }
    `;
    document.head.appendChild(switchStyle);};

    function applyBodyStyle() {
        const bodyStyle = document.createElement('style');
        bodyStyle.textContent = `
        .bg-dark {
    bs-bg-opacity: 0;
    background: #000 !important;
}
.modal-header {
    border-top-left-radius: 25px !important;
    border-top-right-radius: 25px !important;
}
.modal-body {
    border-bottom-left-radius: 25px !important;
    border-bottom-right-radius: 25px !important;
}
.modal-content {
    border-radius: 25px;
}
.modal-open {
    padding-right: 0px !important;
}
.modal-backdrop {
    height: 100%;
    width: 100%;
}
.modal.fade.show {
    padding-right: 80px !important;
    padding-left: 80px !important;
}
.addingText {
    font-size: 20px;
    font-style: italic;
    font-weight: 800;
}
h1, h2, h3, h4, h5, h6 {
    color: #fff;
    text-shadow: 0px 0px 10px #fff;
}
#game-logs-app {
  background: #000;
}
body {
    background-color: #000;
    background-size: 100%;
}
.navbar-dark .navbar-brand, .navbar-dark .navbar-brand:focus, .navbar-dark .navbar-brand:hover {
    color: #fff;
    font-weight: 900;
}
@keyframes textGradient {
    0% { background-position: 0% 50%; }
    100% { background-position: 1200% 50%; }
}
.bg-success {
    background: #000 !important;
    border: 1px solid #fff;
    box-shadow: 0px 0px 10px #fff;
}
.badge {
    border-radius: 7px;
    color: #fff;
    display: inline-block;
    font-size: .75em;
    font-weight: 500;
    line-height: 1;
    padding: 0.35em 0.65em;
    text-align: center;
    vertical-align: baseline;
    white-space: nowrap;
}
.navbar-dark .navbar-nav .nav-link {
    color: #fff;
    text-shadow: 0px 0px 10px #fff;
}
.bi-arrow-left::before {
    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;
}
.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;
}
#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;
}
.td-index[data-v-2d76ca92] {
    background: linear-gradient(90deg, rgba(51,51,51,1) 0%, rgba(17,17,17,1) 100%) !important;
    color: #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;
}
.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-table[data-v-2d76ca92] .first-row[data-v-2d76ca92] td[data-v-2d76ca92] {
    border: 1px solid rgba(0,0,0,0);
    text-align: center;
}
#log-filter-section[data-v-2d76ca92] {
    background: #000;
    border: 1px solid #fff;
    border-radius: 25px;
    height: 830px;
    margin-left: 1rem;
    min-width: 20rem;
    overflow-y: auto;
}
#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-outline-danger {
    border: 3px solid #f00;
    color: #f00;
    border-radius: 10px;
}
.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;
}
.form-control {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background-clip: padding-box;
    background-color: #fff;
    border: 1px solid #fff;
    border-radius: 0.25rem;
    color: #fff;
    display: block;
    font-size: 1rem;
    font-weight: 400;
    line-height: 1.5;
    padding: 0.375rem 0.75rem;
    transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;
    width: 100%;
}
.form-control:focus {
    background-color: #fff;
    border-color: #fff;
    box-shadow: 0px 0px 10px #fff;
    color: #212529;
    outline: 0;
}
.multiselect-search {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background: #000;
    border: 0;
    border-radius: var(--ms-radius,4px);
    bottom: 0;
    box-sizing: border-box;
    color: #fff;
    font-family: inherit;
    font-size: inherit;
    left: 0;
    outline: none;
    padding-left: var(--ms-px,.875rem);
    position: absolute;
    right: 0;
    top: 0;
    width: 100%;
}
.multiselect-option {
    align-items: center;
    box-sizing: border-box;
    cursor: pointer;
    background: #000;
    display: flex;
    font-size: var(--ms-option-font-size,1rem);
    justify-content: flex-start;
    line-height: var(--ms-option-line-height,1.375);
    padding: var(--ms-option-py,.5rem) var(--ms-option-px,.75rem);
    text-align: left;
    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;
}
.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;
    font-size: 1rem;
    height: 2.45rem;
    margin: 0;
    outline: none;
    padding: 0 1rem;
    text-overflow: ellipsis;
    transition: all .4s ease;
    width: 100%;
}
.autoComplete_wrapper>input:focus {
    border: 1px solid #f90;
    color: #f90;
}
.autoComplete_wrapper>ul>li {
    background-color: #000;
    color: #fff;
    font-size: 1rem;
    margin: 0;
    overflow: hidden;
    padding: 0.3rem 0.5rem;
    text-align: left;
    text-overflow: ellipsis;
    transition: all .2s ease;
    white-space: nowrap;
}
.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;
}
.form-control {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background-clip: padding-box;
    background-color: #000;
    border: 1px solid #fff;
    border-radius: 0.25rem;
    color: #fff;
    display: block;
    font-size: 1rem;
    font-weight: 400;
    line-height: 1.5;
    padding: 0.375rem 0.75rem;
    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;
    outline: 0;
}
.dp__input {
    background-color: #111;
    border: 1px solid #fff;
    border-radius: 5px;
    box-sizing: border-box;
    color: #fff;
    font-family: -apple-system,blinkmacsystemfont,Segoe UI,roboto,oxygen,ubuntu,cantarell,Open Sans,Helvetica Neue,sans-serif;
    font-size: 1rem;
    line-height: 1.5rem;
    outline: none;
    padding: 6px 30px;
    transition: border-color .2s cubic-bezier(.645,.045,.355,1);
    width: 100%;
}
#loading-overlay[data-v-173ec149] {
    height: 100%;
    width: 100%;
}
#loading-overlay-heading[data-v-173ec149] {
    font-size: 2rem;
    font-weight: 500;
    letter-spacing: 1px;
    padding: 1rem;
    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] {
    align-items: center;
    display: flex;
    flex-direction: column;
    background-color: #000;
    height: 100%;
    justify-content: center;
    width: 100%;
}
#placeholder-pic[data-v-9c1e68e2] {
    display: block;
    opacity: 0;
    margin: auto;
    max-height: 20rem;
}
#content-placeholder[data-v-9c1e68e2] {
    background-image: url(https://snipboard.io/8kBudo.jpg);
    background-repeat: no-repeat;
    background-size: contain;
    background-position: center;
}
.bi-question-circle-fill::before {
    color: #666;
    text-shadow: 0px 0px 10px #000;
}
.modal-header {
    background: #000;
    border: 1px solid #fff;
    align-items: center;
    border-bottom: 1px solid #dee2e6;
    border-top-left-radius: calc(0.3rem - 1px);
    border-top-right-radius: calc(0.3rem - 1px);
    display: flex;
    flex-shrink: 0;
    justify-content: space-between;
    padding: 1rem;
}
.modal-body {
    background: #000;
    border: 1px solid #fff;
    color: #fff;
    flex: 1 1 auto;
    padding: 1rem;
    position: relative;
}
.fade {
    transition: opacity .15s linear;
    backdrop-filter: blur(5px);
}
.show-filter-btn[data-v-2d76ca92] {
    background: #328;
    border-bottom-left-radius: 10px;
    border: 0;
    height: 44px;
    opacity: 1;
    position: fixed;
    right: 0;
    top: 0;
    z-index: 1059;
}
body::-webkit-scrollbar {
  width: 16px;
}
body::-webkit-scrollbar-track {
  background: #222;
  border-left: 1px solid #fff;
}
body::-webkit-scrollbar-thumb {
  background-color: #fff;
  border-radius: 20px;
  border: 1px solid #222;
}
.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;
}
.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;
}
input#playerNameInput::placeholder {
  color: #a60;
}
.multiselect.is-open.is-active {
box-shadow: 0px 0px 10px #fff;
}
.autoComplete_wrapper>input:hover {
    color: #a60;
    transition: all .3s ease;
  }
.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: #328;
    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: #328;
    color: #fff;
    transition: all .3s ease-in-out;
  }
.dp__today {
    border: 1px solid #fff;
  }
.btn-outline-danger:hover {
    background-color: #900;
    border-color: #fff;
    color: #fff;
    transition: all .2s ease-in-out;
  }
.btn-primary:hover, .submit-btn:hover {
    background-color: #033;
    border-color: #fff;
    color: #fff;
    transition: all .2s ease-in-out;
  }
#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;
}
.lookup-comment[data-v-2d76ca92] {
    color: #fff;
    font-size: .9rem;
    font-weight: 400;
}
.accessible-servers .page-intro {
    color: #0ff;
    font-size: 1.15rem;
    font-weight: 300;
    text-align: center;
    text-shadow: 0px 0px 10px #fff;
}
a {
    color: #faf;
    text-decoration: none;
}
.dropdown-item:focus, .dropdown-item:hover {
    background-color: #444;
    color: #1e2125;
}
.dropdown-menu {
    background-color: #222;
}
.accessible-servers .game-logs-link {
    font-size: 1.5rem;
    text-shadow: 0px 0px 10px #f0f;
}
a:hover {
    color: #f0f;
}
#placeholder-msg[data-v-9c1e68e2] {
    color: #0aa;
    font-size: 1.25rem;
    padding: 1rem;
    text-align: center;
}
strong {
    color: #0ff;
}
.modal [type=button], .modal [type=submit] {
    margin-left: 0.5rem;
    filter: invert(1);
}
.lookup-symbol[data-v-2d76ca92] {
    color: #fff;
    font-size: 1.125rem;
    font-weight: 500;
    width: 1.75rem;
    text-shadow: 0px 0px 10px #fff;
}
.lookup-comment[data-v-2d76ca92] {
    color: #fff;
    font-size: .9rem;
    font-weight: 400;
    text-shadow: 0px 0px 10px #fff;
}
.dropdown-menu show {
    position: absolute;
    inset: 0px auto auto 0px;
    margin: 0px;
    transform: translate(-1px, 40px);
    background: #328;
}
.alert-danger, .alert-modal.failure .modal-content, .default-error-page .exception {
    background-color: #000;
    border: 5px solid #f11;
    border-radius: 50px;
    color: #fff;
}
    `;
        document.head.appendChild(bodyStyle);};

    function applyColorPickerStyle() {
        const colorPickerStyle = document.createElement('style');
        colorPickerStyle.textContent = `
        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 #fff;
  background: #000;
  border-radius: 20px;
  overflow: hidden;
  outline: none;
  cursor: pointer;
  box-shadow: 0px 0px 5px #fff;
}`;
        document.head.appendChild(colorPickerStyle);
    }

    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.src = gifImageUrl;
            gifImage.style.width = '160px';
            gifImage.style.height = '120px';
            gifImage.style.filter = 'saturate(0)';
            spinnerElement.replaceWith(gifImage);
        }
    }

    function addListener() {
        const inputNameElement = document.querySelector('#playerNameInput');
        const transactionData = document.querySelector('#log-filter-form__transaction-desc');
        inputNameElement.addEventListener('keydown', function(event) {
            if (event.keyCode === 13) {
                const otherElement = document.querySelector('.btn.btn-primary');
                otherElement.click();
            }
        });
        transactionData.addEventListener('keydown', function(event) {
            if (event.keyCode === 13) {
                event.preventDefault();
                const otherElement = document.querySelector('.btn.btn-primary');
                otherElement.click();
            }
        });
    }

    function setPageTitle() {
        const titleElement = document.querySelector('div.container-fluid span.badge.bg-success');
        document.title += ' - ' + titleElement.textContent;
    }

    function scriptInit() {
        applySwitchStyle();

        applyBodyStyle();

        applyColorPickerStyle();

        replaceTableHeading();

        replaceSpinnerImage();

        addListener()

        applySavedColors();

        setPageTitle();
    }
})();