by R.Elegant

матовое стекло с радужной обводкой для https://forum.blessrussia.online/

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         by R.Elegant
// @namespace    https://forum.blessrussia.online/
// @version      1337
// @description  матовое стекло с радужной обводкой для https://forum.blessrussia.online/
// @author       s.unicorn (модификация)
// @license      MIT
// @match        https://forum.blessrussia.online/*
// @grant        GM_addStyle
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';

    // ---------- 1. Стили фона + стекло ----------
    GM_addStyle(`
        @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');

        h1, h2, h3, h4, h5, h6 { color: #fff; text-shadow: 0px 0px 10px #fff; }
        .p-body-sidebar .block-minorHeader { border-bottom: 1px solid rgba(255,255,255,0.3) !important; }
        .block-tabHeader .tabs-tab.is-active, .block-tabHeader .tabs>input:checked+.tabs-tab--radio { color: #fff; border-color: #fff; text-shadow: 0px 0px 10px #fff; }
        .message-cell.message-cell--user, .message-cell.message-cell--action { background: none; border-right: 1px solid rgba(255,255,255,0.3); }
        .block--messages.block .message, .js-quickReply.block .message, .block--messages .block-row, .js-quickReply .block-row { border-radius: 0; background: none; }
        .node-stats>dl.pairs.pairs--rows { border-right: 1px solid rgba(255,255,255,0.3) !important; }
        .node-body, .node--depth2:nth-child(even) .node-body { background: none; }
        html { background-image: url(https://sun9-72.userapi.com/s/v1/ig2/Ir-GT0vYH4VIEh5n_TBlb5IvIWl-lyElbnjhKrFdHXa8zzxKQCDJhTQtU7jMt2hmanVIXniGKNFK3YqjyEp1aB3U.jpg?quality=95&as=32x57,48x85,72x128,108x192,160x285,240x427,360x640,480x854,540x960,640x1138,720x1280,938x1668&from=bu&cs=340x604); background-repeat: no-repeat; background-position: center center; background-attachment: fixed; background-size: cover; }

        /* ---------- УЛУЧШЕННОЕ МАТОВОЕ СТЕКЛО ---------- */
        .block-container,
        .message-responseRow, .fr-box.fr-basic, .pageNav-jump,
        .block-minorHeader.uix_threadListSeparator, .blockStatus,
        .overlay, .menu-header, .menu-content,
        .p-staffBar, .p-header, .p-footer-copyrightRow, .p-footer-inner,
        .p-nav,
        .button.button--scroll, .button.button--link, .button.button--cta, .button.button--primary,
        .uix_nodeList .block-container, .uix_nodeList .block-body,
        .menu-row, .offCanvasMenu .menu-row,
        .offCanvasMenu a, .offCanvasMenu button,
        a[href*="/whats-new/posts"] {
            background: rgba(20, 20, 30, 0.35) !important;
            backdrop-filter: blur(18px) !important;
            -webkit-backdrop-filter: blur(18px) !important;
            border-radius: 12px;
            box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.15), 0 8px 20px rgba(0, 0, 0, 0.3) !important;
        }

        .block-container { border-radius: 20px; }
        .overlay { border-radius: 10px; }
        .button { border-radius: 10px; }
        .input { background: rgba(20, 20, 30, 0.5) !important; }

        .p-nav, .p-staffBar, .p-header, .p-footer-copyrightRow, .p-footer-inner {
            border-bottom: 1px solid rgba(255,255,255,0.15) !important;
        }

        /* Остальные стили */
        .bbTable>table>thead>tr>td, .bbTable>table>tbody>tr>td, .bbTable>table>thead>tr>th, .bbTable>table>tbody>tr>th { background: rgb(51 51 51 / 80%); }
        .fr-toolbar .fr-command.fr-btn.fr-open:not(:hover):not(:focus):not(:active), .blockMessage, .blockLink, .button.button--link,button.button a.button.button--link, .message.is-mod-selected .message-cell--user, .block--messages .message.is-mod-selected .message-cell--user, .message.is-mod-selected .message-cell--main, .block--messages .message.is-mod-selected .message-cell--main, .message.is-mod-selected .message-cell--vote, .block--messages .message.is-mod-selected .message-cell--vote, .block-filterBar { background: none; }
        .inputGroup.inputGroup--joined .inputGroup-text, .structItem:nth-child(even), .formRow>dt { background: none; }
        .avatar img, .avatar.avatar--default.avatar--default--image { background-color: none; }
        .fr-toolbar .fr-more-toolbar { background: none; border-bottom: 1px solid rgba(255,255,255,0.3); }
        .overlay-title, .dataList-row.dataList-row--header .dataList-cell, .dataList-cell.dataList-cell--alt, .dataList-cell.dataList-cell--action { background: none; }
        .pageNav-page.pageNav-page--current { color: #fff; box-shadow: 0 -2px #fff inset; }
        .block-tabHeader .tabs-tab:not(.is-readonly):hover { color: #fff; background: rgba(255,255,255,0.1); }
        .pageNav-page { background: #111; }
        .inlineModButton.is-mod-active { color: #fff; }
        .input { background: rgba(51, 51, 51, 1) !important; }
        a.uix_logo img, a.uix_logo img:focus, a.uix_logo img:hover { color: #fff; font-weight: 900; transition-duration: 0.5s; }
        .p-staffBar, .p-header { background: linear-gradient(90deg, rgba(51, 51, 51, 1) 0%, rgba(17, 17, 17, 1) 100%) !important; border-bottom: 1px solid #fff; }
        .button.button--scroll, button.button a.button.button--scroll { background: linear-gradient(90deg, rgba(51, 51, 51, 0.8) 0%, rgba(17, 17, 17, 0.8) 100%) !important; }
        .alert.is-unread { background: linear-gradient(90deg, rgb(71 71 71) 0%, rgb(37 37 37) 100%) !important; }
        .subNodeLink.subNodeLink--unread:before, .subNodeLink.subNodeLink--unread .subNodeLink-icon { color: #fff; }
        body::-webkit-scrollbar { width: 16px; } body::-webkit-scrollbar-track { background: #222; } body::-webkit-scrollbar-thumb { background: #fff; } body::-webkit-scrollbar-track { background: #808080 !important; } body::-webkit-scrollbar-thumb { background: linear-gradient(#808080, #fff, #808080) !important; }
        .p-footer-copyrightRow, .p-footer-inner { background: linear-gradient(90deg, rgba(51, 51, 51, 1) 0%, rgba(17, 17, 17, 1) 100%) !important; border-top: 1px solid #fff; }
        .menu-header { background: linear-gradient(90deg, rgba(51, 51, 51, 1) 0%, rgba(17, 17, 17, 1) 100%) !important; border-top-left-radius: 10px; border-top-right-radius: 10px; }
        .menu-content { border-radius: 10px; background: linear-gradient(90deg, rgba(51, 51, 51, 1) 0%, rgba(17, 17, 17, 1) 100%) !important; }
        .menu-footer, .menu-tabHeader, .menu-row.menu-row--alt, .memberHeader-main { background: none; }
        .memberHeader-avatar .avatar { border-radius: 50%; }
        .button.button--link, button.button a.button.button--link { color: #fff; border-radius: 5px; background: linear-gradient(90deg, rgba(51, 51, 51, 1) 0%, rgba(17, 17, 17, 1) 100%) !important; }
        .p-nav { background: linear-gradient(90deg, rgba(51, 51, 51, 0.8) 0%, rgba(17, 17, 17, 0.8) 100%) !important; border-bottom: 1px solid #fff; }
        .button.button--cta, button.button a.button.button--cta { color: #fff; border-radius: 10px; background: linear-gradient(90deg, rgba(51, 51, 51, 1) 0%, rgba(17, 17, 17, 1) 100%) !important; }
        .uix_extendedFooter { background: rgba(17, 17, 17, 0.8); border-top: 1px solid #fff; }
        .uix_extendedFooter .uix_extendedFooterRow>.block .block-container { padding: 10px; }
        .block-footer { background: none; }
        .button.button--primary, button.button a.button.button--primary { border-radius: 10px; background: linear-gradient(90deg, rgba(51, 51, 51, 1) 0%, rgba(17, 17, 17, 1) 100%) !important; }
        .p-nav-list .p-navEl.is-selected { background: linear-gradient(90deg, rgba(51, 51, 51, 0.5) 0%, rgba(17, 17, 17, 0.5) 100%) !important; color: #fff; }
        .p-staffBar .pageContent a { color: #ccc; font-weight: 900; transition-duration: 0.5s; font-style: italic; text-decoration: none; text-shadow: 0px 0px 10px #888; }
        body .uix_searchBar .uix_searchBarInner .uix_searchForm .input { background: #111; border: 0; box-sizing: border-box; color: #fff; outline: none; width: 100%; border: 1px solid #FFFFFF !important; border-radius: 4px; }
        .username--style3, .username--style6 { text-shadow: 0px 0px 10px #ffca00; }
        .username--style8, .username--style29 { text-shadow: 0px 0px 10px #CC0000; }
        .username--style11, .username--style12 { text-shadow: 0px 0px 10px #4169e2; }
        .username--style13, .username--style17, .username--style24 { text-shadow: 0px 0px 10px #1ac61b; }
        .username--style15 { text-shadow: 0px 0px 10px #73c6e6; }
        .username--style16, .username--style51 { text-shadow: 0px 0px 10px #FF0000; }
        .username--style18 { text-shadow: 0px 0px 10px #FF4500; }
        .username--style38 { text-shadow: 0px 0px 10px #a000a0; }
        .username--style39, .username--style40, .username--style41, .username--style42, .username--style43, .username--style44 { text-shadow: 0px 0px 10px #00FFFF; }
        .username--style52, .username--style53 { text-shadow: 0px 0px 10px #0087ff; }
        .username--style96 { text-shadow: 0px 0px 10px #FD4806; }
        .uix_nodeList .block-container { box-shadow: none; }
        .uix_nodeList .block-body { border-radius: 20px; }
        .node--unread .node-icon i:before { color: #fff; }
        .p-sectionLinks { visibility: hidden; }
    `);

    // ---------- 2. Радужная обводка ----------
    GM_addStyle(`
        @keyframes rainbowOutline {
            0%   { outline-color: #ff0000; }
            16%  { outline-color: #ff8800; }
            33%  { outline-color: #ffff00; }
            50%  { outline-color: #00ff00; }
            66%  { outline-color: #0000ff; }
            83%  { outline-color: #4b0082; }
            100% { outline-color: #ff0000; }
        }

        .block-container,
        .message-responseRow, .fr-box.fr-basic, .pageNav-jump,
        .block-minorHeader.uix_threadListSeparator, .blockStatus,
        .overlay, .menu-header, .menu-content,
        .p-staffBar, .p-header, .p-footer-copyrightRow, .p-footer-inner,
        .p-nav,
        .button.button--scroll, .button.button--link, .button.button--cta, .button.button--primary,
        .uix_nodeList .block-container, .uix_nodeList .block-body,
        .menu-row, .offCanvasMenu .menu-row,
        .offCanvasMenu a, .offCanvasMenu button,
        a[href*="/whats-new/posts"] {
            outline-style: solid;
            outline-width: 2px;
            outline-offset: -2px;
            animation: rainbowOutline 4s linear infinite;
        }

        @media (max-width: 768px) {
            .block-container {
                outline-width: 1px;
                outline-offset: -1px;
            }
        }

        .fr-box.fr-basic .fr-element,
        .fr-box.fr-basic .fr-toolbar {
            outline: none !important;
        }
    `);

    // ---------- 3. Заголовок ----------
    GM_addStyle(`
        @keyframes slideGradient {
            0% { background-position: 0% center; }
            100% { background-position: 200% center; }
        }

        .p-title-value {
            background: linear-gradient(90deg, #FF8C00, #000000, #FF8C00);
            background-size: 200% auto;
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
            animation: slideGradient 3s linear infinite;
            color: transparent !important;
            text-shadow: none !important;
        }

        /* ИСПРАВЛЕНИЕ: убираем прозрачность для префиксов внутри заголовка */
        .p-title-value .label,
        .p-title-value .label--prefix,
        .p-title-value .label--silver,
        .p-title-value .label--green,
        .p-title-value .label--red,
        .p-title-value .label--blue,
        .p-title-value .label--orange,
        .p-title-value .label--yellow {
            color: #fff !important;
            -webkit-text-fill-color: #fff !important;
            background-color: inherit; /* сохраняет родной фон префикса */
            text-shadow: none !important;
        }
    `);

    // ---------- 4. Замена званий пользователя 46632 ----------
    function replaceUserTitles() {
        const targetUserId = '46632';
        const containers = document.querySelectorAll(`[data-user-id="${targetUserId}"]`);
        containers.forEach(container => {
            const banners = container.querySelectorAll('.userBanner');
            banners.forEach(banner => {
                const text = banner.textContent.trim();
                if (text === 'Осн. зам. главного администратора') {
                    banner.textContent = 'Великий Осеменитель';
                    banner.style.cssText = 'color: #FFFF00 !important; background-color: #000000 !important; display: inline-block; padding: 0 4px; border-radius: 3px;';
                } else if (text === 'Сервер "Red"') {
                    banner.textContent = 'Друн';
                    banner.style.cssText = 'color: #FF69B4 !important; background-color: #000000 !important; display: inline-block; padding: 0 4px; border-radius: 3px;';
                }
            });
        });

        if (window.location.href.includes('/members/46632/')) {
            const headerBanners = document.querySelectorAll('.memberHeader-banners .userBanner');
            headerBanners.forEach(banner => {
                const text = banner.textContent.trim();
                if (text === 'Осн. зам. главного администратора') {
                    banner.textContent = 'Великий Осеменитель';
                    banner.style.cssText = 'color: #FFFF00 !important; background-color: #000000 !important;';
                } else if (text === 'Сервер "Red"') {
                    banner.textContent = 'Друн';
                    banner.style.cssText = 'color: #FF69B4 !important; background-color: #000000 !important;';
                }
            });
        }
    }

    // ---------- 5. Свечение логотипа ----------
    const rainbowColors = ['#ff0000', '#ff8800', '#ffff00', '#00ff00', '#0000ff', '#4b0082', '#ee82ee'];

    function startRainbowGlow(element) {
        let index = 0;
        if (element._glowInterval) clearInterval(element._glowInterval);
        element._glowInterval = setInterval(() => {
            element.style.boxShadow = `0 0 12px 4px ${rainbowColors[index]}`;
            element.style.border = 'none';
            index = (index + 1) % rainbowColors.length;
        }, 570);
    }

    function applyLogoGlow() {
        document.querySelectorAll('.p-header-logo a').forEach(link => startRainbowGlow(link));
    }

    // ---------- 6. Иконки навигации ----------
    const navContainers = ['.p-nav-list', '.p-nav-opposite', '.p-nav-menuTrigger'];

    function startRainbowIcon(iconElement) {
        let index = 0;
        if (iconElement._rainbowIconInterval) clearInterval(iconElement._rainbowIconInterval);
        iconElement._rainbowIconInterval = setInterval(() => {
            iconElement.style.setProperty('color', rainbowColors[index], 'important');
            iconElement.style.setProperty('text-shadow', `0 0 6px ${rainbowColors[index]}`, 'important');
            index = (index + 1) % rainbowColors.length;
        }, 570);
    }

    function applyNavIcons() {
        navContainers.forEach(selector => {
            document.querySelectorAll(selector).forEach(container => {
                container.querySelectorAll('a, button').forEach(link => {
                    const icon = link.querySelector('i, svg, img, .fa, .fas, .far, .fal, .fab, .icon');
                    if (icon && !link.closest('.p-nav-logo')) {
                        startRainbowIcon(icon);
                    }
                });
            });
        });
        const menuTrigger = document.querySelector('.p-nav-menuTrigger');
        if (menuTrigger) {
            const icon = menuTrigger.querySelector('i, svg, .fa');
            if (icon) startRainbowIcon(icon);
        }
    }

    // ---------- 7. Инициализация ----------
    function initializeAll() {
        replaceUserTitles();
        applyLogoGlow();
        applyNavIcons();
    }

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', initializeAll);
    } else {
        initializeAll();
    }

    window.addEventListener('load', () => {
        setTimeout(initializeAll, 500);
        setTimeout(initializeAll, 1500);
        setTimeout(initializeAll, 3000);
    });

    const observer = new MutationObserver(() => {
        replaceUserTitles();
        applyLogoGlow();
        applyNavIcons();
    });
    observer.observe(document.body, { childList: true, subtree: true });

})();