матовое стекло с радужной обводкой для https://forum.blessrussia.online/
// ==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 });
})();