// ==UserScript==
// @name 全局定制 Global.Custom
// @description 顶部加载条 => 进度条 | 个性化滚动条 | favicon 替换 | 自定义字体 | 百度 / 语雀 / ComfyUI / DeepSeek / ChatGPT ... 多站点界面个性化增强
// @version 5.5.1
// @author YMN
// @icon https://greasyfork.org/vite/assets/blacklogo96-CxYTSM_T.png
// @sourceXXX https://greasyfork.org/scripts/539125
// @match *://**/*
// @include *://baidu.com/*
// @include *://google.com/*
// @include *://bing.com/*
// @include *://youtube.com/*
// @include *://bilibili.com/*
// @include *://chat.deepseek.com/*
// @include *://deepseek.com/*
// @include *://chatgpt.com/*
// @include *://zhihu.com/*
// @include *://localhost:*/*
// @include *://127.0.0.1:*/*
// @exclude *://xxxxx.com/*
// @run-at document-start
// @grant GM_addStyle
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_registerMenuCommand
// @grant GM_deleteValue
// @connect XXXXX
// @namespace https://github.com/rvnymn
// @homepageURL https://greasyfork.org/scripts/539125
// @compatible Chrome
// @license MIT
// @copyright 2025 YMN
// @contact [email protected]
// @supportURL https://greasyfork.org/zh-CN/scripts/539125/feedback
// @contributionURL https://buymeacoffee.com/rvnymn
// @LOG 20.02.02 - Ver.0.1.0
// @LOG 25.03.14 - Ver.1.0.0
// @LOG 25.04.05 - Ver.2.0.0
// @LOG 25.04.24 - Ver.3.0.0
// @LOG 25.05.12 - Ver.4.0.0
// @LOG 25.06.05 - Ver.5.0.0
// @LOG 25.06.12 - Ver.5.2.4
// @LOG 25.07.16 - Ver.5.3.0
// @LOG 25.07.21 - Ver.5.4.0
// @LOG 25.08.01 - Ver.5.5.0
// ==/UserScript==
/**
* & TODO
*
* = ========== ↓ NEXT
* =
* =
* + ========== ↓ NEW
* +
* + 挂载 悬浮/面板按钮 点击呼出弹窗 可输入多行下载链接 进行 单独/批量下载 「调用浏览器原生方式」
* +
* +
* # ========== ↓ OPTIMIZE
* #
* # 样式 .vbnTips
* # VBN_GLOBAL_CACHE.valueStorage 存储各模块开关 当前最新 实时 的值 可在各具体功能 UI面板 获取/更新 让状态共联
* # VBN_OBSERVER_CENTER 可暴露 debugListObservers() debug开启时输出当前所有活跃的目标和监听函数数量
* # VBN_GlobalVariable 采用社区 --vbn-c-xxxxx 小写短横线的方式 按应用场景划分 完善亮暗主题适配颜色
* #
* ! ========== ↓ WARN
* !
* ! 应用样式的效率问题 可能是主逻辑过重所导致
* ! 某些网站更新页面内容后 需要手动刷新才可正确应用样式
* !
* !
* ? ========== ↓ ERROR
* ?
* ?
*
*/
if (window.VBN_GLOBAL_CUSTOM || window.top !== window.self) return;
window.VBN_GLOBAL_CUSTOM = true;
(function VBN_GlobalVariable() {
'use strict';
GM_addStyle( /* css */ `
:root, [vbnGlobalColor] {
--vbnBase09HEX: #F9F9F9;
--vbnBase08HEX: #F4F4F4;
--vbnBase07HEX: #BEC2CA;
--vbnBase06HEX: #ABB0BA;
--vbnBase05HEX: #757C8A;
--vbnBase04HEX: #454A54;
--vbnBase03HEX: #353941;
--vbnBase02HEX: #2C2F35;
--vbnBase01HEX: #1F2228;
--vbnBase00HEX: #1C1E22;
--vbnBase00HSL: var(--vbnBase00HSL-H), var(--vbnBase00HSL-S), var(--vbnBase00HSL-L);
--vbnBase01HSL: var(--vbnBase00HSL-H), var(--vbnBase01HSL-S), var(--vbnBase01HSL-L);
--vbnBase02HSL: var(--vbnBase00HSL-H), var(--vbnBase02HSL-S), var(--vbnBase02HSL-L);
--vbnBase03HSL: var(--vbnBase00HSL-H), var(--vbnBase03HSL-S), var(--vbnBase03HSL-L);
--vbnBase04HSL: var(--vbnBase00HSL-H), var(--vbnBase04HSL-S), var(--vbnBase04HSL-L);
--vbnBase05HSL: var(--vbnBase00HSL-H), var(--vbnBase05HSL-S), var(--vbnBase05HSL-L);
--vbnBase06HSL: var(--vbnBase00HSL-H), var(--vbnBase06HSL-S), var(--vbnBase06HSL-L);
--vbnBase07HSL: var(--vbnBase00HSL-H), var(--vbnBase07HSL-S), var(--vbnBase07HSL-L);
--vbnBase08HSL: var(--vbnBase00HSL-H), var(--vbnBase08HSL-S), var(--vbnBase08HSL-L);
--vbnBase09HSL: var(--vbnBase00HSL-H), var(--vbnBase09HSL-S), var(--vbnBase09HSL-L);
--vbnBase00HSL-H: 220;
--vbnBase00HSL-S: 10%; --vbnBase00HSL-L: 12%;
--vbnBase01HSL-S: 13%; --vbnBase01HSL-L: 34%;
--vbnBase02HSL-S: 09%; --vbnBase02HSL-L: 19%;
--vbnBase03HSL-S: 10%; --vbnBase03HSL-L: 23%;
--vbnBase04HSL-S: 10%; --vbnBase04HSL-L: 30%;
--vbnBase05HSL-S: 08%; --vbnBase05HSL-L: 50%;
--vbnBase06HSL-S: 10%; --vbnBase06HSL-L: 70%;
--vbnBase07HSL-S: 10%; --vbnBase07HSL-L: 77%;
--vbnBase08HSL-S: 00%; --vbnBase08HSL-L: 96%;
--vbnBase09HSL-S: 00%; --vbnBase09HSL-L: 98%;
--vbnBase02AltXXX: var(--vbnBase00HSL-H), calc(var(--vbnBase02HSL-S) - 000%), calc(var(--vbnBase02HSL-L) - 000%);
--vbnBase02PickXX: var(--vbnBase00HSL-H), calc(var(--vbnBase02HSL-S) - 000%), calc(var(--vbnBase02HSL-L) - 000%);
--vbnBase02Border: var(--vbnBase00HSL-H), calc(var(--vbnBase02HSL-S) - 000%), calc(var(--vbnBase02HSL-L) + 020%);
--vbnBase02Shadow: var(--vbnBase00HSL-H), calc(var(--vbnBase04HSL-S) - 000%), calc(var(--vbnBase04HSL-L) - 000%);
--vbnBase04AltXXX: var(--vbnBase00HSL-H), calc(var(--vbnBase04HSL-S) - 000%), calc(var(--vbnBase04HSL-L) - 000%);
--vbnBase04PickXX: var(--vbnBase00HSL-H), calc(var(--vbnBase04HSL-S) - 000%), calc(var(--vbnBase04HSL-L) - 010%);
--vbnBase04Border: var(--vbnBase00HSL-H), calc(var(--vbnBase04HSL-S) - 000%), calc(var(--vbnBase04HSL-L) + 020%);
--vbnBase04Shadow: var(--vbnBase00HSL-H), calc(var(--vbnBase04HSL-S) - 000%), calc(var(--vbnBase04HSL-L) - 000%);
--vbnGlow09HEX: #85E0D7;
--vbnGlow02HEX: #9087F8;
--vbnGlow06HEX: #CEF4FD;
--vbnGlow00HEX: #D9B9F9;
--vbnGlow08HEX: #BCF5F4;
--vbnGlow07HEX: #F7F0B7;
--vbnGlow05HEX: #79ECD9;
--vbnGlow04HEX: #13EC99;
--vbnGlow03HEX: #25F493;
--vbnGlow01HEX: #708BC2;
--vbnGlow09HSL: 174, 059%, 070%;
--vbnGlow02HSL: 245, 089%, 075%;
--vbnGlow06HSL: 191, 092%, 090%;
--vbnGlow00HSL: 270, 084%, 085%;
--vbnGlow08HSL: 179, 074%, 085%;
--vbnGlow07HSL: 053, 080%, 084%;
--vbnGlow05HSL: 170, 075%, 070%;
--vbnGlow04HSL: 157, 085%, 050%;
--vbnGlow03HSL: 152, 090%, 055%;
--vbnGlow01HSL: 220, 040%, 060%;
--vbnMarkdownH1: #494F4D;
--vbnMarkdownH2: #515463;
--vbnMarkdownH3: #40465D;
--vbnMarkdownH4: #4D5B66;
--vbnMarkdownH5: #4F5E68;
--vbnMarkdownH6: #5B7481;
--vbnRed00000: #EF4444;
--vbnOrange00: #EE5C2A;
--vbnYellow00: var(--vbnGlow07HEX);
--vbnGreen000: #10B981;
--vbnCyan0000: #00B3B3;
--vbnBlue0000: #478BE5;
--vbnPurple00: var(--vbnGlow02HEX);
--vbnRed00001: #000;
--vbnOrange01: #FF5242;
--vbnYellow01: #000;
--vbnGreen001: #29F9A9;
--vbnCyan0001: #000;
--vbnBlue0001: #2BC2FF;
--vbnPurple01: #000;
--vbnLink: var(--vbnBlue0000);
--vbnStateCorrect: var(--vbnGreen000);
--vbnStateWarn: var(--vbnOrange00);
--vbnStateError: var(--vbnRed00000);
--vbnStateVisited: var(--vbnCyan0000);
--vbnStateMatch: var(--vbnOrange01);
--vbnBackdrop: ;
--vbnForeground: ;
--vbnBackground: ;
--vbnGlassDark: hsla(var(--vbnPrimaryHSL), .526);
--vbnGlassLight: hsla(var(--vbnBase09HSL), .526);
--vbn115: #2777F8;
--vbnBaidu: #4E6EF2;
--vbnIQIYI: #00F48E;
--vbnBiliPink: #FB7299;
--vbnBiliBlue: #00AEEC;
}
:root, [vbnGlobalFont] {
--vbnBaseFont: Emoji, "Public Sans", "Inter", "PingFang SC", "Source Han Sans SC", "Microsoft YaHei", sans-serif, system-ui;
--vbnBaseSize: 14px;
--vbnBaseWeight: 400;
--vbnBaseLineHeight: 1.5;
--vbnBaseColor: var(--vbnBase04HEX);
--vbnTitleSize: 24px;
--vbnTitleWeight: 700;
--vbnTitleLineHeight: 1.5;
--vbnTitleColor: var(--vbnBase02HEX);
--vbnCodeFont: "JetBrains Mono", "Fira Code", "PingFang SC", "Source Han Sans SC", "Microsoft YaHei", monospace;
--vbnCodeSize: 12px;
--vbnCodeWeight: 400;
--vbnCodeLineHeight: 1.5;
--vbnCodeColor: var(--vbnAccentHEX);
--vbnOftenFontBase: var(--vbnBaseWeight) var(--vbnBaseSize)/var(--vbnBaseLineHeight) var(--vbnBaseFont);
--vbnOftenFontTitle: var(--vbnTitleWeight) var(--vbnTitleSize)/var(--vbnTitleLineHeight) var(--vbnBaseFont);
}
@font-face { font-family: Emoji; src: local("Apple Color Emoji"), local("Segoe UI Emoji"), local("Segoe UI Symbol"), local("Noto Color Emoji"); unicode-range: U+1F000-1F9FF; }
:root, [vbnGlobalSpace] {
--vbnPriority00: 9999;
--vbnPriority02: 999999;
--vbnPriority09: 999999999;
--vbnPriorityHead: ;
--vbnPrioritySidebar: ;
--vbnPriorityFooter: ;
--vbnPriorityBase: ;
--vbnSpace2X: 20px;
--vbnSpace4X: 60px;
--vbnSpace2Y: 260px;
--vbnSpace4Y: 292.6px;
--vbnSpaceAxialX: 1.26%;
--vbnSpaceAxialY: ;
--vbnSpaceWidth00: 80%;
--vbnSpaceWidth02: 40vw;
--vbnSpaceWidthVW: 60vw;
--vbnSpaceWidthPX: calc(260px + 920px + 220px);
--vbnSpaceHead: ;
--vbnSpacePadding: 10px 20px;
--vbnSpaceMargin: 15px 0;
--vbnButtonWidth: 92px;
--vbnButtonHeight: 40px;
--vbnButtonPadding: ;
--vbnButtonAxialX: ;
--vbnButtonAxialY: ;
--vbnButtonBase: ;
--vbnTransitionSmooth: cubic-bezier(.260, .920, .60, 0.926);
--vbnTransitionSoft: cubic-bezier(.250, .460, .45, 0.940);
--vbnTransitionDrop: cubic-bezier(.240, .920, .92, 0.240);
--vbnTransitionZoom: cubic-bezier(.526, .260, .92, 0.920);
--vbnTransitionFlow: cubic-bezier(.240, .926, .60, 0.920);
--vbnTransitionElastic: cubic-bezier(.175, .885, .32, 1.260);
--vbnOftenTransition: all .526s var(--vbnTransitionSoft);
}
:root, [vbnGlobalStyle] {
--vbnBaseRadius: 4px;
--vbnBaseBorder: 1px solid;
--vbnBaseShadow: 0 0 10px 0;
--vbnBaseFilter: blur(5.26px);
--vbnBaseZoomIn: ;
--vbnOftenBaseBorderBase: var();
--vbnOftenBaseBorderHover: var();
--vbnOftenBaseShadowBase: var();
--vbnOftenBaseShadowHover: var();
--vbnUIRadius: 6px;
--vbnUIBorder: 2px solid;
--vbnUIShadow: 10px 10px 20px 0;
--vbnUIFilter: blur(9.26px) saturate(1.52);
--vbnUIZoomIn: scale(1.26);
--vbnOftenUIBorderBase: var(--vbnUIBorder) hsla(var(--vbnAccentHSL), .4);
--vbnOftenUIBorderHover: var();
--vbnOftenUIShadowBase: var();
--vbnOftenUIShadowHover: var();
--vbnPanelRadius: 12.6px;
--vbnPanelBorder: 3px solid;
--vbnPanelShadow: 0px 10px 20px 0;
--vbnPanelFilter: blur(12.6px);
--vbnPanelZoomIn: ;
--vbnOftenPanelBorderBase: var(--vbnPanelBorder) hsla(var(--vbnAccentHSL), .4);
--vbnOftenPanelBorderHover: var(--vbnPanelBorder) hsla(var(--vbnAccentHSL), .6);
--vbnOftenPanelShadowBase: var(--vbnPanelShadow) hsla(var(--vbnAccentShadow), .4);
--vbnOftenPanelShadowHover: var(--vbnPanelShadow) hsla(var(--vbnAccentShadow), .6);
--vbnSurfaceRadius: 20.6px;
--vbnSurfaceBorder: 2px solid;
--vbnSurfaceShadow: 0px 20px 30px 0;
--vbnSurfaceFilter: blur(20.6px);
--vbnSurfaceZoomIn: scale(1.026);
--vbnOftenSurfaceBorderBase: var();
--vbnOftenSurfaceBorderHover: var();
--vbnOftenSurfaceShadowBase: var(--vbnSurfaceShadow) hsla(var(--vbnBase04HSL), .05);
--vbnOftenSurfaceShadowHover: var(--vbnSurfaceShadow) hsla(var(--vbnAccentHSL), .126);
--vbnGlassShadow:
inset 0px -1px 4px hsla(var(--vbnBase09HSL), .26),
var(--vbnPanelShadow) hsla(var(--vbnBase04HSL), .0526);
--vbnTipsShadow-S: inset 0 0 0 2px;
--vbnTipsShadow-M: 10px 10px 20px;
--vbnTipsShadow-L: 10px 10px 40px;
}
:root, [vbnGlobalURL] {
--vbnICON-URL-Deepseek: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNTAuMDAwMDAwIiBoZWlnaHQ9IjUwLjAwMDAwMCIgdmlld0JveD0iMCAwIDUwIDUwIiBmaWxsPSJub25lIiB2Ym5HbG9iYWxWYXJpYWJsZT0idHJ1ZSI+Cgk8cGF0aCBpZD0icGF0aCIgZD0iTTQ4LjgzNTQgMTAuMDQ3OUM0OC4zMjMyIDkuNzkxOTkgNDguMTAyNSAxMC4yNzk4IDQ3LjgwMzIgMTAuNTI3OEM0Ny43MDA3IDEwLjYwNzkgNDcuNjE0MyAxMC43MTE5IDQ3LjUyNzMgMTAuODA3NkM0Ni43NzkzIDExLjYyNCA0NS45MDQ4IDEyLjE1OTcgNDQuNzYyMiAxMi4wOTU3QzQzLjA5MjMgMTIgNDEuNjY2IDEyLjUzNTYgNDAuNDA1OCAxMy44Mzk4QzQwLjEzNzcgMTIuMjMxOSAzOS4yNDc2IDExLjI3MiAzNy44OTI2IDEwLjY1NThDMzcuMTgzNiAxMC4zMzU5IDM2LjQ2NjggMTAuMDE1NiAzNS45NzAyIDkuMzE5ODJDMzUuNjIzNSA4LjgyMzczIDM1LjUyOTMgOC4yNzE5NyAzNS4zNTYgNy43Mjc1NEMzNS4yNDU2IDcuMzk5OSAzNS4xMzUzIDcuMDYzOTYgMzQuNzY1MSA3LjAwNzgxQzM0LjM2MzMgNi45NDM4NSAzNC4yMDU2IDcuMjg3NiAzNC4wNDc5IDcuNTc1NjhDMzMuNDE4IDguNzUxOTUgMzMuMTczMyAxMC4wNDc5IDMzLjE5NzMgMTEuMzU5OUMzMy4yNTI0IDE0LjMxMiAzNC40NzM2IDE2LjY2NDEgMzYuODk5OSAxOC4zMzU5QzM3LjE3NTggMTguNTI3OCAzNy4yNDY2IDE4LjcxOTcgMzcuMTU5NyAxOUMzNi45OTQ2IDE5LjU3NTcgMzYuNzk3NCAyMC4xMzU3IDM2LjYyNCAyMC43MTE5QzM2LjUxMzcgMjEuMDgwMSAzNi4zNDg2IDIxLjE1OTcgMzUuOTYyNCAyMUMzNC42MzA5IDIwLjQzMjEgMzMuNDgxIDE5LjU5MTggMzIuNDY0NCAxOC41NzU3QzMwLjczOTMgMTYuODcyMSAyOS4xNzkyIDE0Ljk5MTcgMjcuMjMzNCAxMy41MkMyNi43NzY0IDEzLjE3NTggMjYuMzE5MyAxMi44NTYgMjUuODQ2NyAxMi41NTE4QzIzLjg2MTggMTAuNTg0IDI2LjEwNjkgOC45Njc3NyAyNi42MjcgOC43NzU4OEMyNy4xNzA0IDguNTc1NjggMjYuODE1OSA3Ljg4NzcgMjUuMDU5MSA3Ljg5NkMyMy4zMDIyIDcuOTAzODEgMjEuNjk1MyA4LjUwMzkxIDE5LjY0NyA5LjMwMzcxQzE5LjM0NzcgOS40MjM4MyAxOS4wMzIyIDkuNTExNzIgMTguNzA5NSA5LjU4Mzk4QzE2Ljg1MDEgOS4yMjM2MyAxNC45MTk5IDkuMTQzNTUgMTIuOTAzMyA5LjM3NTk4QzkuMTA1OTYgOS44MDc2MiA2LjA3Mjc1IDExLjYzOTYgMy44NDMyNiAxNC43NjgxQzEuMTY0NTUgMTguNTI3OCAwLjUzNDE4IDIyLjc5OTggMS4zMDY2NCAyNy4yNTU5QzIuMTE3NjggMzEuOTUyMSA0LjQ2NTgyIDM1LjgzOTggOC4wNzM3MyAzOC44Nzk5QzExLjgxNTkgNDIuMDMyMiAxNi4xMjU1IDQzLjU3NjIgMjEuMDQxIDQzLjI4MDNDMjQuMDI2OSA0My4xMDQgMjcuMzUxNiA0Mi42OTYzIDMxLjEwMTYgMzkuNDU2MUMzMi4wNDY5IDM5LjkzNiAzMy4wMzk2IDQwLjEyNzkgMzQuNjg2IDQwLjI3MkMzNS45NTQ2IDQwLjM5MjEgMzcuMTc1OCA0MC4yMDggMzguMTIxMSA0MC4wMDc4QzM5LjYwMjEgMzkuNjg4IDM5LjQ5OTUgMzguMjg4MSAzOC45NjM5IDM4LjAzMjJDMzQuNjIzIDM1Ljk2NzggMzUuNTc2MiAzNi44MDgxIDM0LjcxIDM2LjEyNzlDMzYuOTE1NSAzMy40NjM5IDQwLjI0MDIgMzAuNjk1OCA0MS41NCAyMS43MjhDNDEuNjQyNiAyMS4wMTYxIDQxLjU1NTcgMjAuNTY3OSA0MS41NCAxOS45OTE3QzQxLjUzMjIgMTkuNjM5NiA0MS42MTA4IDE5LjUwMzkgNDIuMDA0OSAxOS40NjM5QzQzLjA5MjMgMTkuMzM1OSA0NC4xNDc5IDE5LjAzMTcgNDUuMTE2NyAxOC40ODc4QzQ3LjkyOTIgMTYuOTE5OSA0OS4wNjQgMTQuMzQzOCA0OS4zMzE1IDExLjI1NTlDNDkuMzcxMSAxMC43ODM3IDQ5LjMyMzcgMTAuMjk1OSA0OC44MzU0IDEwLjA0NzlaTTI0LjMyNjIgMzcuODM5OEMyMC4xMTk2IDM0LjQ2MzkgMTguMDc5MSAzMy4zNTIxIDE3LjIzNTggMzMuMzk5OUMxNi40NDgyIDMzLjQ0ODIgMTYuNTg5OCAzNC4zNjgyIDE2Ljc2MzIgMzQuOTY3OEMxNi45NDQzIDM1LjU2MDEgMTcuMTgxMiAzNS45NjgzIDE3LjUxMTcgMzYuNDg3OEMxNy43NDAyIDM2LjgzMiAxNy44OTc5IDM3LjM0NDIgMTcuMjgzMiAzNy43MjhDMTUuOTI4MiAzOC41ODQgMTMuNTcyOCAzNy40Mzk5IDEzLjQ2MjQgMzcuMzgzOEMxMC43MjA3IDM1LjczNTggOC40MjgyMiAzMy41NjAxIDYuODEzNDggMzAuNTg0QzUuMjUzNDIgMjcuNzE5NyA0LjM0NzY2IDI0LjY0NzkgNC4xOTc3NSAyMS4zNjc3QzQuMTU4MiAyMC41NzU3IDQuMzg2NzIgMjAuMjk1OSA1LjE1ODY5IDIwLjE1MTlDNi4xNzUyOSAxOS45NiA3LjIyMzE0IDE5LjkxOTkgOC4yMzkyNiAyMC4wNzE4QzEyLjUzMjcgMjAuNzExOSAxNi4xODg1IDIyLjY3MTkgMTkuMjUyOSAyNS43NzU5QzIxLjAwMiAyNy41NDM5IDIyLjMyNTIgMjkuNjU1OCAyMy42ODg1IDMxLjcyMDJDMjUuMTM3NyAzMy45MTIxIDI2LjY5NzggMzYgMjguNjgzMSAzNy43MTE5QzI5LjM4NDMgMzguMzEyIDI5Ljk0MzQgMzguNzY4MSAzMC40NzkgMzkuMTA0QzI4Ljg2NDMgMzkuMjg4MSAyNi4xNjk5IDM5LjMyODEgMjQuMzI2MiAzNy44Mzk4Wk0yNi4zNDMzIDI0LjYwMDFDMjYuMzQzMyAyNC4yNDggMjYuNjE5MSAyMy45Njc4IDI2Ljk2NTggMjMuOTY3OEMyNy4wNDQ0IDIzLjk2NzggMjcuMTE1MiAyMy45ODM5IDI3LjE3ODIgMjQuMDA3OEMyNy4yNjUxIDI0LjA0IDI3LjM0MzggMjQuMDg3OSAyNy40MDY3IDI0LjE2MDJDMjcuNTE3MSAyNC4yNzIgMjcuNTgwMSAyNC40MzIxIDI3LjU4MDEgMjQuNjAwMUMyNy41ODAxIDI0Ljk1MjEgMjcuMzA0MiAyNS4yMzE5IDI2Ljk1NzUgMjUuMjMxOUMyNi42MTA4IDI1LjIzMTkgMjYuMzQzMyAyNC45NTIxIDI2LjM0MzMgMjQuNjAwMVpNMzIuNjA2NCAyNy44Nzk5QzMyLjIwNDYgMjguMDQ3OSAzMS44MDI3IDI4LjE5MTkgMzEuNDE2NSAyOC4yMDhDMzAuODE3OSAyOC4yMzk3IDMwLjE2NDEgMjcuOTkyMiAyOS44MDk2IDI3LjY4OEMyOS4yNTgzIDI3LjIxNTggMjguODY0MyAyNi45NTIxIDI4LjY5ODcgMjYuMTI3OUMyOC42Mjc5IDI1Ljc3NTkgMjguNjY3NSAyNS4yMzE5IDI4LjczMDUgMjQuOTE5OUMyOC44NzIxIDI0LjI0OCAyOC43MTQ0IDIzLjgxNTkgMjguMjQ5NSAyMy40MjM4QzI3Ljg3MTYgMjMuMTA0IDI3LjM5MTEgMjMuMDE2MSAyNi44NjMzIDIzLjAxNjFDMjYuNjY2IDIzLjAxNjEgMjYuNDg0OSAyMi45Mjc3IDI2LjM1MTEgMjIuODU2QzI2LjEzMDQgMjIuNzQ0MSAyNS45NDkyIDIyLjQ2MzkgMjYuMTIyNiAyMi4xMjAxQzI2LjE3NzcgMjIuMDA3OCAyNi40NDU4IDIxLjczNTggMjYuNTA4OCAyMS42ODhDMjcuMjI1NiAyMS4yNzIgMjguMDUyNyAyMS40MDc3IDI4LjgxNjkgMjEuNzE5N0MyOS41MjU5IDIyLjAxNjEgMzAuMDYxNSAyMi41NjAxIDMwLjgzNCAyMy4zMjgxQzMxLjYyMTYgMjQuMjU1OSAzMS43NjMyIDI0LjUxMTcgMzIuMjEyNCAyNS4yMDhDMzIuNTY2OSAyNS43NTIgMzIuODkwMSAyNi4zMTIgMzMuMTEwNCAyNi45NTIxQzMzLjI0NDYgMjcuMzUyMSAzMy4wNzEzIDI3LjY4MDIgMzIuNjA2NCAyNy44Nzk5WiIgZmlsbD0iIzAwMDAwMCIgZmlsbC1vcGFjaXR5PSIxLjAwMDAwMCIgZmlsbC1ydWxlPSJub256ZXJvIi8+Cjwvc3ZnPg==");
--vbnICON-URL-OpenAI: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4NyIgaGVpZ2h0PSI4NyIgdmlld0JveD0iMCAwIDg3IDg3IiBmaWxsPSJub25lIj4KICAgIDxzdHlsZT4KICAgICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CiAgICAgICAgICAgICNjaXJjbGUgeyBmaWxsOiBibGFjayB9CiAgICAgICAgICAgICNtYXJrIHsgZmlsbDogd2hpdGUgfQogICAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyMzdfNDQ2NzUpIj4KICAgICAgICA8cmVjdCBpZD0iY2lyY2xlIiB4PSIwLjM2MTMyOCIgeT0iMC4wNDk4MDQ3IiB3aWR0aD0iODYuNjM4NyIgaGVpZ2h0PSI4Ni42Mzg3IiByeD0iNDMuMzE5MyIgZmlsbD0id2hpdGUiLz4KICAgICAgICA8cGF0aCBpZD0ibWFyayIgZD0iTTM2LjM2MyAzNS40OTlWMjkuNDU4MUMzNi4zNjMgMjkuMDUxNSAzNi40NzkyIDI4Ljc2MTEgMzYuODg1OCAyOC41Mjg3TDQ4LjA5NjIgMjIuMDIzMkM0OS42MDY1IDIxLjE1MTkgNTEuNTIzMyAyMC43NDUzIDUzLjM4MiAyMC43NDUzQzYwLjQ2ODQgMjAuNzQ1MyA2NC45NDEgMjYuMjA1MyA2NC45NDEgMzIuMDcyQzY0Ljk0MSAzMi41MzY2IDY0Ljk0MSAzMy4xNzU2IDY0LjgyNDkgMzMuNjk4NEw1My4wOTE2IDI2Ljg0NDNDNTIuNTEwNyAyNi40OTU4IDUxLjg3MTggMjYuNDM3NyA1MS4xNzQ4IDI2Ljg0NDNMMzYuMzYzIDM1LjQ5OVpNNjIuMjY5MSA1Ni45MzI1VjQzLjUxNDhDNjIuMjY5MSA0Mi43NTk3IDYxLjk3ODcgNDIuMjM2OSA2MS4yODE2IDQxLjgzMDNMNDYuNDExOCAzMy4xNzU2TDUxLjYzOTUgMzAuMTU1MUM1MS45Mjk5IDI5Ljk4MDkgNTIuMzk0NiAyOS45ODA5IDUyLjY4NSAzMC4xNTUxTDYzLjk1MzYgMzYuNjYwN0M2Ny4xNDgzIDM4LjUxOTQgNjkuMzU1NSA0Mi41ODU0IDY5LjM1NTUgNDYuNDc3MkM2OS4zNTU1IDUxLjA2NTkgNjYuNTY3NCA1NS4zMDYxIDYyLjI2OTEgNTYuOTMyNVpNMzMuMjg0NSA0NS4zNzM1TDI4LjExNDggNDIuMjk1QzI3LjcwODIgNDIuMDYyNyAyNy41OTIxIDQxLjc3MjIgMjcuNTkyMSA0MS4zNjU2VjI4LjQxMjZDMjcuNTkyMSAyMi4wODEzIDMyLjQxMzIgMTcuMzE4MyAzOC45NzY4IDE3LjMxODNDNDEuNTMyNiAxNy4zMTgzIDQzLjk3MjIgMTguMTg5NSA0NS45NDcxIDE5Ljc1NzhMMzQuMjcxOSAyNi41NTM4QzMzLjU3NDkgMjYuOTYwNCAzMy4yODQ1IDI3LjQ4MzIgMzMuMjg0NSAyOC4yMzgzVjQ1LjM3MzVaTTQzLjM5MTMgNTEuMTgyMUwzNi4zNjMgNDcuMjMyM1YzOC44NjhMNDMuMzkxMyAzNC45MTgxTDUwLjM2MTYgMzguODY4VjQ3LjIzMjNMNDMuMzkxMyA1MS4xODIxWk00Ny43NDc3IDY4Ljc4MkM0NS4xOTIgNjguNzgyIDQyLjc1MjQgNjcuOTEwNyA0MC43Nzc1IDY2LjM0MjRMNTIuNDUyNyA1OS41NDY0QzUzLjE0OTcgNTkuMTM5OCA1My40NDAxIDU4LjYxNyA1My40NDAxIDU3Ljg2MTlWNDAuNzI2N0w1OC42Njc4IDQzLjgwNTJDNTkuMDc0NCA0NC4wMzc2IDU5LjE5MDYgNDQuMzI4IDU5LjE5MDYgNDQuNzM0NlY1Ny42ODc3QzU5LjE5MDYgNjQuMDE5IDU0LjMxMTQgNjguNzgyIDQ3Ljc0NzcgNjguNzgyWk0zNC4wMzk2IDU1Ljk0NTFMMjIuNzcxIDQ5LjQzOTVDMTkuNTc2MyA0Ny41ODA4IDE3LjM2OSA0My41MTQ4IDE3LjM2OSAzOS42MjMxQzE3LjM2OSAzNC45NzYyIDIwLjIxNTIgMzAuNzk0MSAyNC41MTM1IDI5LjE2NzdWNDIuNjQzNUMyNC41MTM1IDQzLjM5ODYgMjQuODA0IDQzLjkyMTQgMjUuNTAxIDQ0LjMyOEw0MC4zMTI4IDUyLjkyNDZMMzUuMDg1MSA1NS45NDUxQzM0Ljc5NDcgNTYuMTE5MyAzNC4zMyA1Ni4xMTkzIDM0LjAzOTYgNTUuOTQ1MVpNMzMuMzQyNSA2NS4zNTQ5QzI2LjY2MjcgNjUuMzU0OSAyMS43ODM1IDYwLjM1OTYgMjEuNzgzNSA1NC4xNDQ0QzIxLjc4MzUgNTMuNTYzNiAyMS44NDE2IDUyLjk4MjcgMjEuODk5NyA1Mi40NkwzMy41NzQ5IDU5LjE5NzlDMzQuMjcxOSA1OS42MDQ1IDM0Ljg1MjggNTkuNjA0NSAzNS41NDk4IDU5LjE5NzlMNTAuMzYxNiA1MC42MDEyVjU2LjY0MjFDNTAuMzYxNiA1Ny4wNDg3IDUwLjI0NTQgNTcuMzM5MSA0OS44Mzg4IDU3LjU3MTVMMzguNjI4MyA2NC4wNzcxQzM3LjExODEgNjQuOTQ4MyAzNS4yMDEzIDY1LjM1NDkgMzMuMzQyNSA2NS4zNTQ5Wk00Ny43NDc3IDcxLjkxODZDNTQuNzE4IDcxLjkxODYgNjAuNTI2NSA2Ni45MjMyIDYxLjgwNDQgNjAuMzAxNUM2OC4zMSA1OC42NzUxIDcyLjQ5MjEgNTIuNjM0MiA3Mi40OTIxIDQ2LjQ3NzJDNzIuNDkyMSA0Mi40MTEyIDcwLjc0OTYgMzguNTE5NCA2Ny41NTQ5IDM1LjY3MzNDNjcuODQ1MyAzNC40NTM1IDY4LjA3NzYgMzMuMTc1NiA2OC4wNzc2IDMxLjk1NThDNjguMDc3NiAyMy43NjU3IDYxLjM5NzggMTcuNjA4NyA1My43MzA1IDE3LjYwODdDNTIuMTYyMiAxNy42MDg3IDUwLjU5MzkgMTcuODk5MSA0OS4wODM3IDE4LjQyMTlDNDYuNDY5OSAxNS44MDggNDIuOTI2NiAxNC4xODE2IDM4Ljk3NjggMTQuMTgxNkMzMi4wMDY2IDE0LjE4MTYgMjYuMTk4IDE5LjE3NyAyNC45MjAxIDI1Ljc5ODdDMTguNDE0NiAyNy40MjUxIDE0LjIzMjQgMzMuNDY2IDE0LjIzMjQgMzkuNjIzMUMxNC4yMzI0IDQzLjY4OTEgMTUuOTc1IDQ3LjU4MDggMTkuMTY5NyA1MC40MjdDMTguODc5MyA1MS42NDY4IDE4LjY0NjkgNTIuOTI0NiAxOC42NDY5IDU0LjE0NDRDMTguNjQ2OSA2Mi4zMzQ1IDI1LjMyNjcgNjguNDkxNSAzMi45OTQgNjguNDkxNUMzNC41NjIzIDY4LjQ5MTUgMzYuMTMwNiA2OC4yMDExIDM3LjY0MDkgNjcuNjc4M0M0MC4yNTQ3IDcwLjI5MjIgNDMuNzk3OSA3MS45MTg2IDQ3Ljc0NzcgNzEuOTE4NloiIGZpbGw9ImJsYWNrIi8+CiAgICA8L2c+CiAgICA8ZGVmcz4KICAgICAgICA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQyMzdfNDQ2NzUiPgogICAgICAgICAgICA8cmVjdCB4PSIwLjM2MTMyOCIgeT0iMC4wNDk4MDQ3IiB3aWR0aD0iODYuNjM4NyIgaGVpZ2h0PSI4Ni42Mzg3IiByeD0iNDMuMzE5MyIgZmlsbD0id2hpdGUiLz4KICAgICAgICA8L2NsaXBQYXRoPgogICAgPC9kZWZzPgo8L3N2Zz4=");
--vbnICON-URL-OpenAI-Dark: url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCI+PHBhdGggZD0iTTMwNy4yIDBoNDA5LjZRMTAyNCAwIDEwMjQgMzA3LjJ2NDA5LjZxMCAzMDcuMi0zMDcuMiAzMDcuMkgzMDcuMlEwIDEwMjQgMCA3MTYuOFYzMDcuMlEwIDAgMzA3LjIgMCIvPjxwYXRoIGQ9Ik04NDkuNzE1IDQ5NC40MzhhMTgwLjY5IDE4MC42OSAwIDAgMS04LjcwNCAxNjQuMjUgMTc4LjYgMTc4LjYgMCAwIDEtMTE5LjI5NiA4Ni41MjggMTc5LjUgMTc5LjUgMCAwIDEtNjUuNjkgOTAuNjI0IDE4MC40MyAxODAuNDMgMCAwIDEtMTA2LjQ5NSAzNC41MDkgMTgzIDE4MyAwIDAgMS0zNy43MzUtMy44NCAxODAuNyAxODAuNyAwIDAgMS02OC43NjEtMzAuNzIgMTc3LjUgMTc3LjUgMCAwIDEtMjcuOTU2LTI1LjYgMTgwLjc4NyAxODAuNzg3IDAgMCAxLTIxMC4xNzYtMTIxLjI0MiAxNzguOTQgMTc4Ljk0IDAgMCAxIC4yNTYtMTExLjg3MiAxODEuMjUgMTgxLjI1IDAgMCAxLTIyLjE3LTIxMS43MTIgMTc5LjUgMTc5LjUgMCAwIDEgNTAuMjI4LTU2LjIxNyAxNzUuMiAxNzUuMiAwIDAgMSA2OS4wMTgtMzAuMzYyQTE4MC4yMiAxODAuMjIgMCAwIDEgNDc0LjQ3IDE1My43MDJhMTc4LjA3IDE3OC4wNyAwIDAgMSAxMzQuNTU0IDYwLjAwNyAxODIuNDMgMTgyLjQzIDAgMCAxIDExMS4zNiAxMS42NzMgMTgxLjI1IDE4MS4yNSAwIDAgMSA4My4wOTggNzQuOTU3IDE3OS44NyAxNzkuODcgMCAwIDEgMjMuMzk4IDEwOS41NjhjLTEuMzMxIDEyLjY0Ny00LjA5NiAyNS4wMzctOC4wOSAzNy4wNjkgMTIuOCAxNC4wOCAyMy4xOTQgMzAuMDU0IDMwLjkyNSA0Ny40NjJNNjAwLjg4MyA4MTMuMjYxYTEzMy45NCAxMzMuOTQgMCAwIDAgNzIuNzA0LTcyLjcwNGM2LjY1Ni0xNi4zMzMgMTAuMjQtMzMuNzkyIDEwLjI0LTUxLjQwNVY1MjIuNTk4YTcgNyAwIDAgMS0uMjA1LS41MTIgMS44IDEuOCAwIDAgMC0uMjA0LS40NiAxLjQgMS40IDAgMCAwLS4zNTktLjM1OSAxLjIgMS4yIDAgMCAwLS41MTItLjMwN2wtNjAuMjExLTM0LjgxNlY2ODcuMzZhMjMuNjUgMjMuNjUgMCAwIDEtMTEuNzc2IDIwLjMyNmwtMTQyLjY0MyA4Mi4zM2MtMS4xNzguNzE3LTMuMTc1IDEuNzkyLTQuMjUgMi4zNTUgNS44ODggNS4wMTggMTIuMjg4IDkuNDIxIDE5LjA0NyAxMy4zMTIgNi44MSAzLjg5MSAxMy44MjQgNy4xNjggMjEuMTQ1IDkuODNhMTM4LjEgMTM4LjEgMCAwIDAgNDUuNzIyIDcuOTg4YzE3LjYxMyAwIDM1LjA3Mi0zLjQ4MiA1MS4zNTMtMTAuMjR6TTI2MS4wMTggNzAwLjIxYTEzNS4zMiAxMzUuMzIgMCAwIDAgODEuNTYxIDYyLjQ2NCAxMzQuMTQgMTM0LjE0IDAgMCAwIDEwMS44ODgtMTMuMzEybDE0NC4yMy04My4zMDIuNDEtLjM1OWEuOS45IDAgMCAwIC4yMDUtLjQ2IDEuOCAxLjggMCAwIDAgLjIwNS0uNDYxdi03MC4xNDRsLTE3NC4xMzEgMTAwLjY2YTI2LjUgMjYuNSAwIDAgMS01LjYzMiAyLjQwNiAyNC4xNyAyNC4xNyAwIDAgMS0xNy44MTgtMi40MDZMMjQ5LjE5IDYxMi44NjRhMTU4IDE1OCAwIDAgMS00LjE0Ny0yLjU2IDEzNC45IDEzNC45IDAgMCAwIC4wNTEgNDYuNDM4IDEzNS4yIDEzNS4yIDAgMCAwIDE1Ljg3MiA0My41MnYtLjEwMnptLTM3LjQ3OS0zMTEuNDVhMTM1LjA3IDEzNS4wNyAwIDAgMC0xMy4zNjMgMTAxLjk0IDEzNC4xNCAxMzQuMTQgMCAwIDAgNjIuNDY0IDgxLjUxbDE0NC4yMyA4My4zNTQuNTEyLjEwMmguNTEyYS45LjkgMCAwIDAgLjUxMi0uMTAyIDIgMiAwIDAgMCAuNTEyLS4yNTZsNjAuNDE2LTM0LjkxOS0xNzQuMDgtMTAwLjU1NmEyNCAyNCAwIDAgMS0xMC45MDUtMTQuMjg1IDIwLjQgMjAuNCAwIDAgMS0uNzY4LTYuMDQyVjMyOS45MzNhMTM2IDEzNiAwIDAgMC0yMS4xNDYgOS44MyAxMzcuMiAxMzcuMiAwIDAgMC00OC43NDIgNDguOTk5ek03MTguOSA1MDQuMDY1YTIzLjcgMjMuNyAwIDAgMSA4LjY1MyA4LjYwMiAyNi43IDI2LjcgMCAwIDEgMi4zMDQgNS42ODMgMjQgMjQgMCAwIDEgLjY2NiA2LjE0NHYxNjkuNTc0YTEzMy44IDEzMy44IDAgMCAwIDYwLjM2NC00NC41NDRBMTM0LjQ1IDEzNC40NSAwIDAgMCA3NTEuMzEgNDUxLjg0bC0xNDQuMjMtODMuMzU0YTcgNyAwIDAgMC0uNTEzLS4xNTNoLS41MTJhOSA5IDAgMCAxLS41MTIuMTUzIDEuOCAxLjggMCAwIDAtLjUxMi4yMDVsLTYwLjE2IDM0LjgxNiAxNzQuMTgzIDEwMC41NTd6bTYwLjEwOS05MC4zMTdoLS4xMDJ2LjA1MWwuMTAyLS4xMDJ6bS0uMTAyLS4xMDJhMTM0LjI5OCAxMzQuMjk4IDAgMCAwLTE5OS40MjQtMTM5LjA2bC0xNDQuMTI4IDgzLjMwM2ExLjMgMS4zIDAgMCAwLS4zNTkuNDFsLS4zMDcuNDFhNyA3IDAgMCAwLS4yMDUgMS4wMjN2NjkuNjMybDE3NC4xMzEtMTAwLjU1N2EyNyAyNyAwIDAgMSA1LjY4NC0yLjQwNiAyMy45NiAyMy45NiAwIDAgMSAxNy43NjYgMi40MDZsMTQyLjc0NiA4Mi40MzIgNC4xOTggMi40NTh6TTQwMS41NjMgMzM2LjU5YTI0LjA2IDI0LjA2IDAgMCAxIDYuODYtMTYuNTg5IDIxLjMgMjEuMyAwIDAgMSA0Ljg2NC0zLjY4NmwxNDIuNzQ2LTgyLjMzYzEuMzMxLS44MiAzLjE3NC0xLjg5NCA0LjI1LTIuNDA2YTEzMy44NCAxMzMuODQgMCAwIDAtMTQyLjg0OC0xOC40MzIgMTM0LjI1IDEzNC4yNSAwIDAgMC03Ny4zMTIgMTIxLjY1djE2Ni40NTJhNyA3IDAgMCAwIC4xMDIuNTEyIDEuOSAxLjkgMCAwIDAgLjI1Ni41MTIgMyAzIDAgMCAwIC4zNTguNDEgMS43IDEuNyAwIDAgMCAuNDYxLjMwN2w2MC4yNjMgMzQuODE2em0zMi43MTYgMjIwLjA1NyA3Ny41NjggNDQuODUyIDc3LjYyLTQ0Ljg1MnYtODkuNTQ4bC03Ny41MTctNDQuOC03Ny42MiA0NC44LS4wNSA4OS42eiIgZmlsbD0iI0ZGRiIvPjwvc3ZnPg==");
--vbnICON-URL-Gemini-Vint: url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iLTAuMDMyIDAgMTAxNi4wNTMgMTAyMC43MzYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiPjxwYXRoIGQ9Im00NDMuNzA2IDc3OS4wMTEgNDAuNzY4LTkzLjMxYTM1OS41NSAzNTkuNTUgMCAwIDEgMTgyLjk3NC0xODUuMzQybDExMi4xOS00OS43OTJjMzUuNjQ4LTE1Ljg3MiAzNS42NDgtNjcuNzc1IDAtODMuNTgzbC0xMDguNjctNDguMjU1YTM1OS44IDM1OS44IDAgMCAxLTE4NS42NjItMTkxLjU1bC00MS4yOC05OS41MTlhNDMuOTY3IDQzLjk2NyAwIDAgMC04MS42NjMgMGwtNDEuMjc5IDk5LjUyYTM1OS43NCAzNTkuNzQgMCAwIDEtMTg1LjY2MiAxOTEuNTQ5bC0xMDguNjcgNDguMjU1Yy0zNS43MTIgMTUuODA4LTM1LjcxMiA2Ny43MTEgMCA4My41ODNsMTEyLjE5IDQ5Ljc5MkEzNTkuNTUgMzU5LjU1IDAgMCAxIDMyMS45OCA2ODUuN2w0MC43MDMgOTMuMzExYTQzLjkwMyA0My45MDMgMCAwIDAgODEuMDIzIDBtNDA4LjEyMyAyMjcuMzI1IDExLjM5Mi0yNi4yNGEyMDIuNyAyMDIuNyAwIDAgMSAxMDMuMTY3LTEwNC41NzRsMzUuMzI3LTE1LjY4YTI0LjY0IDI0LjY0IDAgMCAwIDAtNDQuNzM1bC0zMy4yOC0xNC43ODRhMjAyLjg4IDIwMi44OCAwIDAgMS0xMDQuNzAyLTEwOC4wM2wtMTEuNzc2LTI4LjQxNmEyMy41NTIgMjMuNTUyIDAgMCAwLTQzLjc3NSAwbC0xMS43NzYgMjguNDE1YTIwMi44OCAyMDIuODggMCAwIDEtMTA0LjYzOSAxMDguMDNsLTMzLjI4IDE0Ljc4NWEyNC42NCAyNC42NCAwIDAgMCAwIDQ0LjhsMzUuMjY0IDE1LjYxNWEyMDIuNjIgMjAyLjYyIDAgMCAxIDEwMy4xNjcgMTA0LjU3NWwxMS41MiAyNi4yNGM4LjMyIDE5LjE5OSAzNC45NDMgMTkuMTk5IDQzLjMyNyAweiIgZmlsbD0iIzAyMDIwMiIvPjwvc3ZnPg==");
--vbnICON-URL-Gemini-Fill: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkdlbWluaSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTAwIDUwMCI+PHBhdGggZGF0YS1uYW1lPSItIiBkPSJNNDQ1LjgyIDIyMy41MmMtMzguNTItMTYuNTktNzIuMjItMzkuMzItMTAxLjE0LTY4LjIxLTI4Ljg5LTI4Ljg5LTUxLjY1LTYyLjYxLTY4LjIxLTEwMS4xNGEzMDEgMzAxIDAgMCAxLTE1LjQtNDUuNTFDMjU5Ljc5IDMuNTcgMjU1LjI1IDAgMjQ5Ljk5IDBzLTkuOCAzLjU4LTExLjA4IDguNjZhMzAwIDMwMCAwIDAgMS0xNS40IDQ1LjUxYy0xNi41OSAzOC41Mi0zOS4zMiA3Mi4yNC02OC4yMSAxMDEuMTQtMjguODkgMjguODYtNjIuNjEgNTEuNjItMTAxLjE0IDY4LjIxYTMwMSAzMDEgMCAwIDEtNDUuNTEgMTUuNEMzLjU2IDI0MC4yLS4wMSAyNDQuNzQtLjAxIDI1MHMzLjU4IDkuOCA4LjY2IDExLjA4YTMwMCAzMDAgMCAwIDEgNDUuNTEgMTUuNGMzOC41MiAxNi41OSA3Mi4yMiAzOS4zMiAxMDEuMTQgNjguMjEgMjguODkgMjguODkgNTEuNjUgNjIuNjEgNjguMjEgMTAxLjE0YTMwMCAzMDAgMCAwIDEgMTUuNCA0NS41MWMxLjI3IDUuMDggNS44NCA4LjY1IDExLjA4IDguNjYgNS4yNiAwIDkuOC0zLjU4IDExLjA4LTguNjZhMzAwIDMwMCAwIDAgMSAxNS40LTQ1LjUxYzE2LjU5LTM4LjUyIDM5LjMyLTcyLjIyIDY4LjIxLTEwMS4xNCAyOC44OS0yOC44OSA2Mi42MS01MS42NSAxMDEuMTQtNjguMjFhMzAwIDMwMCAwIDAgMSA0NS41MS0xNS40YzUuMDgtMS4yNyA4LjY1LTUuODQgOC42Ni0xMS4wOCAwLTUuMjYtMy41OC05LjgtOC42Ni0xMS4wOGEzMDAgMzAwIDAgMCAxLTQ1LjUxLTE1LjQiLz48L3N2Zz4=");
--vbnICON-URL-Gemini-Line: url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iNDYuNDY0IDQ2LjUyOCA5MzAuOTQ0IDkzMC45NDQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiPjxwYXRoIGQ9Ik00NzQuNjI0IDQ2LjUyOGg3NC42ODhsMi4xNzYgMzYuNDhhNDE1LjY4IDQxNS42OCAwIDAgMCAzODkuNDQgMzg5LjQ0bDM2LjQ4IDIuMTc2djc0Ljc1MmwtMzYuNDggMi4xNzZhNDE1LjY4IDQxNS42OCAwIDAgMC0zODkuNDQgMzg5LjQ0bC0yLjE3NiAzNi40OGgtNzQuNjg4bC0yLjI0LTM2LjQ4YTQxNS42OCA0MTUuNjggMCAwIDAtMzg5LjQ0LTM4OS40NGwtMzYuNDgtMi4xNzZ2LTc0Ljc1MmwzNi40OC0yLjE3NmE0MTUuNjggNDE1LjY4IDAgMCAwIDM4OS40NC0zODkuNDR6TTUxMS45MzYgMjQ5LjZBNDk0LjkgNDk0LjkgMCAwIDEgMjQ5LjYgNTEyIDQ5NC45IDQ5NC45IDAgMCAxIDUxMiA3NzQuNCA0OTQuOSA0OTQuOSAwIDAgMSA3NzQuNCA1MTIgNDk0Ljg1IDQ5NC44NSAwIDAgMSA1MTIgMjQ5LjZ6Ii8+PC9zdmc+");
--vbnICON-URL-Liblib: url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDI1NjAgMjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCI+PHBhdGggZD0iTTIxNjQuNSAyNTYwaC0xNzY5QzE3NyAyNTYwIDAgMjM4MyAwIDIxNjQuNXYtMTc2OUMwIDE3NyAxNzcgMCAzOTUuNSAwaDE3NjlDMjM4MyAwIDI1NjAgMTc3IDI1NjAgMzk1LjV2MTc2OWMwIDIxOC41LTE3NyAzOTUuNS0zOTUuNSAzOTUuNSIgZmlsbD0iI0ZGRiIgb3BhY2l0eT0iLjE1Ii8+PHBhdGggZD0iTTQyOS41IDE4OWMxNDYgMTU4LjUgMzAyIDMwOSA0NTQuNSA0NjEuNSAxMi41IDI0NC41LTEuNSA0OTAgNy41IDczNSAzIDM4IDQ3IDQ3LjUgNzguNSA0Ni41cTM0OCAuNzUgNjk2IDBjMTU2IDE1My41IDMwNyAzMTIgNDY0LjUgNDYzLTQ3NC04LTk0OC0xLTE0MjIuNS0zLjUtNjguNS0yLjUtMTM4IDYtMjA2LTQuNS00Mi03LjUtNzEuNS00Ny41LTcwLTg5LjUtMi01MzUuNSAyLjUtMTA3Mi0yLjUtMTYwOC41IiBmaWxsPSIjMjY1QkZGIi8+PHBhdGggZD0iTTQyOS41IDIwMDAuNWMyMCAyMS41IDQwIDQzIDYxIDYzLjUgNC41IDczLjUgMCAxNDcgMiAyMjEgLjUgMTQuNSAxNC41IDIyLjUgMjcuNSAyMy41IDIzIDEgNDUuNS0xIDY4LjUgMSAyMS41IDE3LjUgMzkuNSA0MCA2MC41IDU4LjUtNjItMS0xMjQgMC0xODYuNS0uNS0xNy41LjUtMzQtMTUtMzMtMzMgMC0xMTIgMS0yMjMgMC0zMzRtMzk5LjUgMzY2YzE4LS41IDM3LjUgMi41IDU0LTYgMi02IDQtMTEuNSA1LjUtMTcuNSAyLjUgMSA3IDIuNSA5LjUgMyAxNS41IDE5IDQyIDIyIDY0LjUgMjUgMjctMSA1NS05IDczLjUtMjkuNSAzNy00Mi41IDQwLjUtMTA0IDI4LTE1Ni41LTgtMzIuNS0zMC02MC41LTYwLTc1LTM5LTE0LTg2LTYtMTE1IDI0LjUtMi00NCAuNS04OC41LTEuNS0xMzIuNS0xOS41LTEtMzkuNS0xLTU5IC41LjUgMTIwLjUuNSAyNDIgLjUgMzY0bTE2MC0xOTNjMTggMTcgMjAuNSA0My41IDIxIDY3LS41IDIyLjUtNS41IDQ5LTI1LjUgNjIuNS0zMS41IDIyLjUtODQuNSA4LjUtOTQuNS0zMS0xMy0zOS41LTUuNS05Ny41IDQwLjUtMTExIDE5LjUtNSA0My41LTMuNSA1OC41IDEyLjVtNTM5LjUgMTkzYzE3LjUtMS41IDM4IDQuNSA1My03IDUtNCA0LjUtMTEgNi41LTE3IDIuNSAxIDcuNSAyLjUgMTAgMy41IDE1LjUgMTkgNDIgMjIgNjQuNSAyNSAyNy0xIDU1LTkgNzMuNS0yOS41IDM3LTQyLjUgNDAuNS0xMDQgMjgtMTU2LjUtNy41LTMyLjUtMzAtNjAuNS02MC03NS41LTM5LjUtMTQuNS04NS01LTExNiAyNC0uNS00NCAuNS04OC0uNS0xMzItMTkuNS0xLTM5LjUtMi01OS41IDEgMSAxMjEgLjUgMjQyLjUuNSAzNjRtMTU4LTE5NS41YzE3LjUgMTQgMjIgMzggMjMgNTkgMSAyMi41LTIgNDgtMTcuNSA2NS41LTI5LjUgMzEuNS05MS41IDE5LTEwMi41LTI0LTEzLTM5LjUtNS41LTk4IDQwLjUtMTExLjUgMTktMy41IDQxLjUtMyA1Ni41IDExbTE2MS0xM2MtOC41IDE5LjUtMTguNSAzOS0yNS41IDU5LjVoNTdjMTItMzIgMjQuNS02NCAzNi41LTk2IDExLTIwLjUgMTIuNS00NyAyOS02My41IDMuNSAxNSA5LjUgMjkuNSAxNS41IDQ0IDEzIDM0LjUgMjYgNjguNSAzOS41IDEwMyAxIDMgMy41IDkuNSA0LjUgMTMgMTkuNSAwIDM5LS41IDU4LjUgMC0zLjUtNy03LTEzLjUtMTAtMjAuNUMyMDI1IDIxMzIgMTk5NSAyMDY3IDE5NjggMjAwMWMtMTcuNS41LTM1IC41LTUyIDAtMjMgNTIuNS00NiAxMDUtNjguNSAxNTdtMjI2IDYwcTI4LjUtLjc1IDU3IDBjMC03Mi41LS41LTE0NC41IDAtMjE3LTE5IC41LTM4LjUuNS01Ny41IDAgMSA3Mi41LjUgMTQ0LjUuNSAyMTdtLTk0MiAxMDUuNWMwIDcuNSAxIDE1LjUgMiAyMyA2IDEyLjUgMTkuNSAxOSAzMy41IDE5LjUgNjAuNS41IDEyMS41LS41IDE4Mi41LjUtMTkuNS0xOC41LTM4LjUtMzcuNS01Ni41LTU3LTI5LTUuNS01OSAxLjUtODgtNS0zLTMuNS02LTctOS0xMC01LTc2LjUgMS0xNTQtMy0yMzAuNS0xOS41LTIxLjUtNDEuNS00MS02MS02Mi41IDAgMTA3LjUtMSAyMTUtLjUgMzIyTTY5MiAyMzY2aDYwcS0uNzUtMTMyIDAtMjY0aC02MHptNzAwIDBoNjBxLS43NS0xMzIgMC0yNjRoLTU5LjVjLS41IDg4LS41IDE3Ni0uNSAyNjQiLz48L3N2Zz4=");
--vbnICON-URL-Prompt: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJpY29uIiB2aWV3Qm94PSIxNzAuNjY3IDIzOC45MzMgNjgyLjY2MSA1NDYuMTMzIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCI+PHBhdGggZD0iTTY1OC41MzQgMjM4LjkzM2MxMi44IDAgMjMuOTk2IDExLjUzNyAyMy45OTYgMjQuNzQ3djE4MS40ODdoMTQ3LjE1YzQuODEzIDAgOS42MjYgMS42NzIgMTIuOCA0Ljk1IDExLjE5NiA4LjI2IDE0LjQwNCAyMy4xMDggNi40MTcgMzQuNjQ1TDY2MS43NDMgNzczLjUzYTIyLjA4IDIyLjA4IDAgMCAxLTE5LjE4MyAxMS41MzdjLTEyLjggMC0yMy45OTYtMTEuNTM3LTIzLjk5Ni0yNC43NDdWNTc4LjgzM0g0NzEuMzgxYTE3Ljg1IDE3Ljg1IDAgMCAxLTEyLjgtNC45NWMtMTEuMTk1LTguMjYtMTQuMzctMjMuMTA4LTYuMzgzLTM0LjY0NUw2MzkuMzUxIDI1MC40N2EyMi4wOCAyMi4wOCAwIDAgMSAxOS4xODMtMTEuNTM3TTQ0Mi42MDcgNjc2LjE4MWMyNy4xNyAwIDQ3Ljk5MSAyMS40MzYgNDcuOTkxIDQ5LjQ5NHMtMjAuODIgNDkuNDkzLTQ3Ljk5MSA0OS40OTNIMjgyLjYyNGMtMjcuMTcgMC00Ny45NTctMjEuNDM2LTQ3Ljk1Ny00OS40OTNzMjAuNzg3LTQ5LjQ5NCA0Ny45NTctNDkuNDk0em0tOTUuOTgzLTE5Ny45NzNjMjcuMjA0IDAgNDcuOTkxIDIxLjQwMiA0Ny45OTEgNDkuNDkzIDAgMjguMDI0LTIwLjgyIDQ5LjQ5NC00Ny45OTEgNDkuNDk0aC0xMjhjLTI3LjEzNiAwLTQ3Ljk1Ny0yMS41MDQtNDcuOTU3LTQ5LjQ5NCAwLTI4LjA5MSAyMC44MjEtNDkuNDkzIDQ3Ljk5MS00OS40OTN6bTk1Ljk4My0xOTguMDQyYzI3LjE3IDAgNDcuOTkxIDIxLjQ3IDQ3Ljk5MSA0OS40OTQgMCAyOC4wNTctMjAuODIgNDkuNDkzLTQ3Ljk5MSA0OS40OTNIMjgyLjYyNGMtMjcuMTcgMC00Ny45NTctMjEuNDM2LTQ3Ljk1Ny00OS40OTMgMC0yOC4wMjQgMjAuNzg3LTQ5LjQ5NCA0Ny45NTctNDkuNDk0eiIgZmlsbD0iIzExNzRFRiIvPjwvc3ZnPg==");
--vbnICON-URL-Workflow: url("data:image/svg+xml;base64,PHN2ZyB0PSIxNzUzNTM2MDE3MjEyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMjIuMzY1NDQ3OTk4MDQ2ODc1IDAuMTczMzc3OTkwNzIyNjU2MjUgOTc5LjMwNTI5Nzg1MTU2MjUgMTAyMy44MjY2NTI1MjY4NTU1IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgcC1pZD0iNDU0NCIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiPjxwYXRoIGQ9Ik05MzkuNDU5ODIxIDY1Ni4zODA5MTdjLTQ5LjQ1NDkzMy0yOC45NTYyODYtMTExLjc1MjEyNC0xOS41ODYxMTItMTUxLjAxMzM3NSAyMi43NDY1OTktMzkuMjYxMjUyIDQyLjMzMjcxLTQ1LjM4MTkxMiAxMDYuNjk5Nzk3LTE0LjgwMDg2OSAxNTYuMDIxMTg4LTEyMi4zOTA5NDQgMTE4LjUxODIzNS0zMDUuOTIxNzE3IDE0MC43MDg0MS00NTEuNzQ5MjI0IDU0LjU3NDAzMWEzOS4zMDU3NjYgMzkuMzA1NzY2IDAgMCAwLTU0LjQ4NTAwMyAxNS4wMDExODFjLTEwLjk5NDkzMSAxOS41ODYxMTItNC40NTEzODkgNDQuNjQ3NDMzIDE0LjYyMjgxMyA1NS45NTM5NjFhNDU4LjUxNTMzNiA0NTguNTE1MzM2IDAgMCAwIDg3LjQyNTI4MiA0MC4xMjkyNzNBNDQ0LjU2MDIzMSA0NDQuNTYwMjMxIDAgMCAwIDUxMS4zNjk3MyAxMDIzLjk5ODg4N2MxMjIuMDU3MDkgMC4yNjcwODMgMjM5LjM1MTE5My00OC43NDI3MTEgMzI2LjU3NjE2My0xMzYuNDU3MzMzIDYwLjI0OTU1MiAyMC44MzI1MDEgMTI2LjA2MzM0LTguNDU3NjM5IDE1Mi40ODIzMzQtNjcuODM5MTcgMjYuNDE4OTk0LTU5LjM4MTUzMSA0Ljg3NDI3MS0xMjkuNjQ2NzA4LTQ5LjkyMjMyOS0xNjIuNzY1MDQzbC0xLjA0NjA3Ny0wLjU1NjQyNHogbS0yMy42NTkxMzMgMTMzLjE4NTU2MmE0NC40NDcxMiA0NC40NDcxMiAwIDAgMS0zOC41MjY3NzMgMjIuOTI0NjU0IDQyLjcxMTA3OSA0Mi43MTEwNzkgMCAwIDEtMjIuMDU2NjMzLTYuMDA5Mzc1IDQ2LjA3MTg3NyA0Ni4wNzE4NzcgMCAwIDEtMjAuODMyNTAxLTUxLjQxMzU0NGM1LjIzMDM4Mi0yMC4wMzEyNTEgMjIuOTY5MTY4LTMzLjg3NTA3MSA0My4xNTYyMTgtMzMuNzQxNTMgNy43NDU0MTctMC4wNDQ1MTQgMTUuMzU3MjkyIDIuMDI1MzgyIDIyLjAzNDM3NiA2LjAwOTM3NiAyMS4yMTA4NjkgMTIuNTk3NDMxIDI4LjQ2NjYzMyA0MC40NDA4NyAxNi4yNDc1NyA2Mi4yMzA0MTl6IG0tNjYxLjkyMTU2MS04Ni41MTI3NDdjLTIyLjE2NzkxOC0zOS41MjgzMzUtNjMuMjA5NzI1LTYzLjg3NzQzNC0xMDcuNjM0NTg5LTYzLjg3NzQzNGgtNi4zODc3NDNDMTAxLjM3NDUzNiA0NzAuODQ3MDE5IDE3NC44ODkyMjcgMjk2LjQ2Mzg1IDMyMC44MjgwMTkgMjEwLjE5NTkyOWMxOS4wNzQyMDItMTEuMzA2NTI4IDI1LjYxNzc0NC0zNi4zNjc4NDkgMTQuNjIyODEzLTU1Ljk1Mzk2MWEzOS4zMDU3NjYgMzkuMzA1NzY2IDAgMCAwLTU0LjQ4NTAwMi0xNS4wMDExODFjLTE4MC44MTU0MjYgMTA2Ljg1NTU5Ni0yNjkuMzA5MDQxIDMyNS4wODQ5NDctMjE1Ljc1ODgzMSA1MzIuMTYzNTY4LTQ5LjQ5OTQ0NyA0NC4wNjg3NTItNTcuMTU1ODM2IDEyMC4wMzE3MDctMTcuNDcxNzAyIDE3My41NTk2NjIgMzkuNjg0MTM0IDUzLjUwNTY5NyAxMTMuMDQzMDI3IDY2LjEyNTM4NSAxNjcuNTUwMjg2IDI4LjgyMjc0NSA1NC40ODUwMDMtMzcuMzAyNjQxIDcxLjQwMDI4MS0xMTEuNjg1MzUzIDM4LjU3MTI4Ny0xNjkuODg3MjY2di0wLjgyMzUwN3ogbS04NS4zMTA4NzIgMTAzLjE2MDk0M2MtMjEuMjEwODY5IDEyLjU3NTE3NC00OC4zMTk4MjkgNS4xMTkwOTctNjAuNTgzNDA2LTE2LjY0ODE5NmE0Ni42MjgzMDEgNDYuNjI4MzAxIDAgMCAxLTUuMDk2ODQxLTM1LjM0NDAyOSA0NS40MDQxNjkgNDUuNDA0MTY5IDAgMCAxIDIxLjI5OTg5Ny0yOC4yNjYzMjFjMjEuMjEwODY5LTEyLjU1MjkxNyA0OC4zMTk4MjktNS4xMTkwOTcgNjAuNTgzNDA2IDE2LjY3MDQ1MiA2LjM4Nzc0MyAxMC41OTQzMDYgOC4yNzk1ODQgMjMuNDM2NTY0IDUuMjMwMzgyIDM1LjQ5OTgyOGE0NS40MDQxNjkgNDUuNDA0MTY5IDAgMCAxLTIxLjQzMzQzOCAyOC4zNTUzNDl2LTAuMjY3MDgzeiIgZmlsbD0iIzM1M0E1MyIgcC1pZD0iNDU0NSIvPjxwYXRoIGQ9Ik01MjMuNDMyOTk1IDI1NC42MjA3OTNjNDUuOTYwNTkzLTAuMTU1Nzk5IDg3LjkzNzE5Mi0yNy4xMDg5NiAxMDguNjEzODk0LTY5LjczMTAxMSAxNTkuNzE1ODQxIDQ5LjU2NjIxOCAyNjkuMDE5NzAxIDIwMi4yOTMzNzggMjY4LjY0MTMzMyAzNzUuMzYzMzg3IDAgMjIuNTY4NTQzIDE3LjYyNzUwMSA0MC44NjM3NTIgMzkuMzcyNTM3IDQwLjg2Mzc1MiAyMS43MjI3NzkgMCAzOS4zNTAyOC0xOC4yOTUyMDkgMzkuMzUwMjgtNDAuODYzNzUyIDAuMjIyNTY5LTIxMy41MzMxMzYtMTM3LjM5MjEyNS00MDAuNzM2MzA1LTMzNS44MzUwNTItNDU2LjgyMzgwOC0xMi4xNzQ1NDktNjUuOTQ3MzMtNzEuNjY3MzY1LTExMC43MDYwNDctMTM1LjgxMTg4Mi0xMDIuMjI2MTUxLTY0LjE2Njc3NCA4LjUwMjE1My0xMTAuOTI4NjE3IDY3LjMyNzI2LTEwNi43ODg4MjUgMTM0LjM0MjkyNCA0LjE2MjA0OSA2Ny4wMzc5MiA1Ny43NTY3NzQgMTE5LjE2MzY4NyAxMjIuNDU3NzE1IDExOS4wNzQ2NTl6IiBmaWxsPSIjMjU1Q0ZGIiBwLWlkPSI0NTQ2IiBkYXRhLXNwbS1hbmNob3ItaWQ9ImEzMTN4LnNlYXJjaF9pbmRleC4wLmkxLjcxZGYzYTgxSUR2Y3RBIiBjbGFzcz0ic2VsZWN0ZWQiLz48cGF0aCBkPSJNNTEyLjAxNTE4MiA4OS4yMDcxNzNhNDQuNTEzODkxIDQ0LjUxMzg5MSAwIDEgMSAwIDg5LjAyNzc4MyA0NC41MTM4OTEgNDQuNTEzODkxIDAgMCAxIDAtODkuMDI3NzgzeiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iNDU0NyIvPjwvc3ZnPg==");
--vbnICON-URL-Tick: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiB2aWV3Qm94PSIxOS41MzE5OTk1ODgwMTI2OTUgMTkuNTMxOTk5NTg4MDEyNjk1IDg3LjUxOTAwNDgyMTc3NzM0IDg3LjUxOTAwNDgyMTc3NzM0IiBjbGFzcz0icHJvZHVjdExvZ29fXzFMUkgiPjxwYXRoIGQ9Im01MC4xMTcgNTIuNjQyIC03LjI5NyA4Ljg4NiAxNy4yODggMTQuMTc3YTUuNzU5IDUuNzU5IDAgMCAwIDguMTM2IC0wLjg1MWwzMS4wMDkgLTM4LjcxOCAtOC45NzggLTcuMTg3IC0yNy4zNjcgMzQuMTc0eiIgZmlsbC1ydWxlPSJldmVub2RkIiBmaWxsPSIjRkZCMDAwIi8+PHBhdGggZD0iTTYzLjI5MSA5Ny4yMDZjLTE4LjcwMyAwIC0zMy45MTUgLTE1LjIxNSAtMzMuOTE1IC0zMy45MTVTNDQuNTkyIDI5LjM3NyA2My4yOTEgMjkuMzc3VjE5LjUzMkMzOS4xNjEgMTkuNTMyIDE5LjUzMiAzOS4xNjEgMTkuNTMyIDYzLjI5MVMzOS4xNjEgMTA3LjA1MSA2My4yOTEgMTA3LjA1MSAxMDcuMDUxIDg3LjQyMSAxMDcuMDUxIDYzLjI5MWgtOS44NDVjMCAxOC43MDMgLTE1LjIxNSAzMy45MTUgLTMzLjkxNSAzMy45MTUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZmlsbD0iIzQ3NzJGQSIvPjwvc3ZnPg==");
--vbnICON-URL-Tick-Vint: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiB2aWV3Qm94PSI3Ny4xNTAwMDE1MjU4Nzg5IDc3LjE1MDAwMTUyNTg3ODkgMzQ1LjcwMDAxMjIwNzAzMTI1IDM0NS43MDAwMTIyMDcwMzEyNSIgY2xhc3M9InByb2R1Y3RMb2dvX18xTFJIIj48cGF0aCBkPSJtMTk3Ljk2MyAyMDcuOTM4IC0yOC44MjUgMzUuMSA2OC4yODcgNTZhMjIuNzUgMjIuNzUgMCAwIDAgMzIuMTM4IC0zLjM2M2wxMjIuNDg3IC0xNTIuOTM4IC0zNS40NjMgLTI4LjM4NyAtMTA4LjEgMTM0Ljk4N3oiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZmlsbD0iIzM1Q0M3QiIvPjxwYXRoIGQ9Ik0yNTAgMzgzLjk2MmMtNzMuODc1IDAgLTEzMy45NjMgLTYwLjEgLTEzMy45NjMgLTEzMy45NjNTMTc2LjEzNyAxMTYuMDM3IDI1MCAxMTYuMDM3Vjc3LjE1QzE1NC42ODggNzcuMTUgNzcuMTUgMTU0LjY4OCA3Ny4xNSAyNTBTMTU0LjY4OCA0MjIuODUgMjUwIDQyMi44NSA0MjIuODUgMzQ1LjMxMyA0MjIuODUgMjUwaC0zOC44ODhjMCA3My44NzUgLTYwLjEgMTMzLjk2MyAtMTMzLjk2MyAxMzMuOTYzIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM0NzcyRkEiLz48L3N2Zz4=");
--vbnICON-URL-YUQUE: url("data:image/svg+xml;base64,PHN2ZyB0PSIxNzQzOTQ5MDMzNTU4IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iOC43NzgxMjU3NjI5Mzk0NTMgOC43Nzg5NTI1OTg1NzE3NzcgMTA5OS4yNDAwMzIxOTYwNDUgMTAwNi4xNjUzODMzMzg5MjgyIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgcC1pZD0iNjAyMCIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiPjxwYXRoIGQ9Ik0xMTA4LjAxODE1MDE5IDE1Mi4yMzM3MDgzOGwtODkuNzI2ODE5MDQtNC44OTA2ODc1OVM5ODQuMzU1MzA2MDEgMjUuODU0MjUyMzYgODI4LjYwNTE4NzM0IDE0Ljk1NDM4Nzk0QzY3Mi44NTYwNTE1NSA0LjA1NzQ3MjA4IDU3MC45NDc3MjQ4NyAxMC44OTkxMjcyOCA1NzAuOTQ3NzI0ODcgMTAuODk5MTI3MjhzMTE1LjUzMjY2NTc4IDc1LjA0Njg5MzQyIDY5LjIzMjMyMTkyIDIwOC45NjE5MDA0NWMtMzQuNDAxODk4NTIgNzIuMjI3MDgxNzktODguODI4NDg5MzYgMTMxLjI0MDY1Nzk1LTE0Ni44NTgyMjc0NSAxOTkuMDYzNTY1NDlsLTM4My43MTY1MDc3IDQ0Ni44MzU0NzAxM2MzNTcuMTk2MTI1MjEtNS4zNDM3ODM4NSA1NjcuNzg0NjUxMDQtOC4wMTcxNTAwNiA2MzEuNzY4NTI2MDctOC4wMTcxNTAwNiAxNzkuNDMzOTgwOTcgMCAzMzEuMDc3NzMwNTEtMTU4Ljc3NzMxMjc0IDMyNC44NzI5NjU0OS0zMzUuNDM3Njc2MjctNC4yNjY1NzQ1Mi0xMjEuNDEzMDg4NTgtNDIuMTQ5NzQ2MjUtMTQ4Ljg0NTU2MDcyLTU1LjE3MTU5NTEtMjAyLjAxOTk5NDAxLTEzLjAxNjkzNDU3LTUzLjE3NTQxNjE1IDEzLjA0MjQ4ODgyLTEzNy45NzQxOTkwOSA5Ni45NDI5NDIwOS0xNjguMDUxNTM0NjN6IiBmaWxsPSIjMzFDQzc5IiBwLWlkPSI2MDIxIi8+PHBhdGggZD0iTTQ5MS43NTUxNDgxMSA0MjAuMzY4NDA3NTRDMzAzLjk0MTM0MzUgNjM2Ljc5ODA0MTk3IDguNzc4MTI1NzEgOTgxLjE1MTE5Nzk3IDguNzc4MTI1NzEgOTgxLjE1MTE5Nzk3YzUzMS4wMDMyNjAwMyAxNDIuMjA4MzM5MzkgNzc1LjY1NjU2NTA1LTIwMi45MzExMDA3OSA4MTMuOTY3Mjc4OC0zMjIuNDE1ODI3NDIgNTEuMzYyMDQ4MjUtMTYwLjE5ODUyMTQtMjEuMjEwMDE1NzItMjM4LjM2ODkyODcyLTYyLjI4MzUzNTUtMjYzLjg2MjIyNzUxLTEzOS4yNjI3MjIyOS04Ni40MzgxODU0Ny0yNDIuNTg5MzA5MDUtNC42MDM2OTM4Ny0yNjguNzA2NzIwOSAyNS40OTMyOTg3OXoiIGZpbGw9IiM5M0U2NUMiIHAtaWQ9IjYwMjIiLz48cGF0aCBkPSJNNDk0LjM2MjY2MzAyIDQxNS4zNzM1MzczYzI5Ljc5MzI5MDM4LTMyLjE0OTE5NDM1IDEzMS4wNzg0ODY4NC0xMDYuOTI4NzUxMTUgMjY2LjE3ODgxNzI3LTIyLjc0MTMwNDE3IDQxLjA3NzQ1MTE5IDI1LjU5MzU1MDAxIDExMy42NTM0NDY1OSAxMDQuMDc5NDUzODYgNjIuMjg3NDY2OTEgMjY0LjkzMTU3NC0xNC44ODA0MjgwOCA0Ni42MDUwMjg5OC02MC45MDI2MjM5IDEyNy4zOTQ3NDU0Ny0xNDIuNzUyODQxMTkgMjAwLjQwNzEyODU3LTg0Ljg3NDQ2MjggMC41ODI4MzMxNC0yNzUuMzY2NTQ3ODkgMy4wOTAwOTY4MS01NzEuNDg1MTAwOTYgNy41MzE2MTk1OEw0NzQuNjEyMTg3MzEgNDM4LjMxNzMwOTYyYTg0MDUuNzMzNjYyNTYgODQwNS43MzM2NjI1NiAwIDAgMSAxOC45MzQ3MDU4OC0yMi4wNjIxNTExOXoiIGZpbGw9IiM2MERCNjkiIHAtaWQ9IjYwMjMiLz48L3N2Zz4=");
--vbnICON-URL-YUQUE-Line: url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCI+PHBhdGggZD0iTTUxMS40MDcgMjEuMTU1aDEwLjAxMmw5LjkwNS4wNiAxNC41MzQuMTE3IDE0LjEwNC4xMTkgOS4yMDQuMTE4IDkuMDQ0LjExOCAxMy4yOTYuMjM2IDEyLjkyLjI5NiAxMi41OTUuMjk1IDEyLjIyLjQxNCAxMS44NDIuNDE0IDcuNjk4LjI5NSA3LjUzNi4zNTUgMTEuMDM1LjU5MSA3LjE2LjM1NSA2Ljk5Ny40MTMgNi44MzcuNDE0IDYuNjc1LjQ3MyA2LjU2Ny40NzMgOS40NzQuNzY4IDYuMTkuNTkxIDUuOTc2LjU5MSA1Ljg2Ny41OTEgNS43MDYuNTkxIDUuNTQ0LjU5MSA1LjM4My43MSAyLjY5Mi4zNTQgNy42NDQgMS4wNjQgNy4zNzQgMS4wNjQgNC43MzguODI3IDQuNTc1Ljc2OSA0LjQ2OC44MjcgNC4zMDYuODg3IDQuMDkxLjgyNyA0LjAzOC45NDYgMy44MjIuOTQ1IDMuNzY4Ljk0NmM5LjY4OSAyLjU0MSAxNy43NjMgNS40MzggMjQuNDkyIDguNjMgMzcuNDY2IDE3LjczIDY4LjA0MSA1MC43MSA5Mi4wNSA5Ny40MDFsLjY0NSAxLjM2aDM2LjkyOGM0MS42MSAwIDU3LjcwNSA1OS4xMDMgMjMuNjg1IDg0LjM0bC0zLjUgMi40ODNjLTEyLjkxOCA5LjQ1Ni0yNS44MzggMjEuNjktMzguNTk1IDM2Ljg4bC0xLjQgMS42NTVjLTcuMzIgOS4xNjEtMTEuMDM1IDE4LjMyMi0xMi43NTggMzMuNTdsLS4yNjkgMi44MzgtLjI2OSAyLjk1NS0uMTA3IDEuNTk2LS4xNjIgMy4yNS0uMTYxIDMuMzd2MS43NzJsLS4xNjIgMy42NjV2My44NDFsLS4wNTQgNC4wMnYyLjcxOGwuMTA4LjU5MS4yMTUuODg3LjQzIDEuNDE4LjY0NyAxLjg5Mi45NjkgMi40MjMgMS41MDcgMy42NjQgMi4wNDYgNC43MjggNC4wOSA5LjI4IDcuMzc1IDE2LjE5NGMyMi4wNyA0OC43NiAzMy4wNTIgODguMzYgMzMuMDUyIDEzOS45NTcgMCA5OC4xNy0yNS42MjMgMTc1LjM2LTc2LjAwOCAyNDIuMDg3LTUxLjY3NyA2OC41Ni0xNDcuMjI1IDEyMi42NC0yMjkuMzY5IDEyMi42NGgtNzIuMjRjLTM5LjE4OCAyOC45Ni04MS44NzUgNTMuOTYtMTI2LjMzOCA3My4xNy0xMTAuNDYgNDcuNjk2LTI0MC42MiA1My4xOTItMzg5Ljg5IDE3LjczQTU4Ljg5IDY0LjY2IDAgMCAxIDQyLjQ0IDg2Ny44MWw0NS4wMDItNTYuMzg0YTQ0LjM1NiA0OC43MDEgMCAwIDEgMy43NjgtNS40MzhsMTI1LjkxLTE1Ni42ODMgNjkuMTcyLTg2LjUyN0wzODkuNTkgNDMzLjkzM2wzMS41OTgtMzkuMzA0IDE1LjA3My0xOC44NTQgMTMuNDU3LTE3LjAyMiAyMi45ODUtMjkuMzE1IDUuMTY4LTYuNzM4IDMuMzM3LTQuMzE0IDMuMjMtNC4yNTYgMy4wNjktNC4xMzcgMy4wMTQtNC4wNzggMi45MDctMy45NiAyLjc5OS0zLjkgMi42OTItMy44NDMgMS4yOTEtMS44OSAzLjIzLTQuNjEgMi45Ni00LjU1MiAyLjMxNi0zLjU0NiAyLjIwNy0zLjQ4NyAxLjA3Ni0xLjcxNCAyLjA0Ni0zLjM3IDEuOTkxLTMuMzY4IDEuODg0LTMuMjUgMS43NzctMy4yNTFhMTQ1IDE0NSAwIDAgMCA0Ljg0NS05LjQ1N2wxLjUwNy0yLjk1NSAxLjM0NS0zLjA3My42NDYtMS40NzggMS4yMzktMi45NTVhMTAyLjI3NyAxMTIuMjk2IDAgMCAwIDkuNDc0LTQ3LjA0NmMwLTMxLjY4LTE1LjI4OC02MC4xNjgtNDkuOS04Ny43NjlsLTIuOC0yLjI0NmMtMzIuMDI5LTI2LjQxOS0xNS4xOC04My4wNCAyNS4zNTQtODMuMDRtMTAzLjY3NiAzNzQuNTk3Yy00MS4wNzItOC42ODgtODIuNjI4Ljk0Ni05OC4yOTMgMTkuOGwtMS44ODQgMi4yNDYtMTYuNTI2IDIwLjM5LTI5LjQ0NSAzNi41ODUtNDUuOTE3IDU3LjIxMkwyNjQuMjIgNzMwLjI3NyAxMzQuNzA2IDg5Mi4zMzhsMy4xMjIuNTkxYzExMi45MzUgMjAuNDUgMjEwLjMxMyAxMy4wMDMgMjkyLjU2NS0yMS43NWwyLjk2LTEuMjRDNTg3LjA5MyA4MDMuNTA1IDcxNS44IDY1NS45MjQgNzE1LjggNTUxLjA3NWMwLTQ4LjQ2NS0xMy40NTctODYuMjMyLTM2LjkyNy0xMTQuMDctMTguNjI1LTIyLjE2NC00My4wMS0zNi44OC02My43MzUtNDEuMjU0em0tOS40Mi0yODEuMDk1LjUzOCAxLjA2M2MxMC45ODIgMjQuMzUxIDE2LjY4OCA1MC41OTMgMTYuNjg4IDc4LjQ5IDAgMzYuODIxLTkuNDIgNzEuNTE1LTI2LjgwOCAxMDYuMjA4YTIzNCAyMzQgMCAwIDEgMzQuODgyIDQuNjFjMzguMjIgOC4wOTggNzguNzUzIDMyLjUwNyAxMDkuNjUyIDY5LjI3IDM3Ljc4OCA0NC45MTggNTkuMjEyIDEwNS4wMjYgNTkuMjEyIDE3Ni43NzggMCA3Ny4xODktNDAuNTMzIDE2MS4xNzQtMTA0LjY5OSAyMzUuMjkgNDguMzQtMTEuMjMgMTAwLjk4NS00NC45MTkgMTMwLjg2LTgzLjUxM2wxLjI5My0xLjcxNGMzNy45NS01MC4yMzggNTYuNjgzLTEwNi42MjIgNTYuNjgzLTE4My4yMiAwLTM0Ljc1My03LjUzNy02MS43MDQtMjQuMjI0LTk4LjcwM2wtMS42NjktMy42NjQtNC41NzUtOS44Ny00LjE5OS05LjI4LTEuODMtNC4xMzdhMjk0Ljg4IDMyMy43NjggMCAwIDEtMS42NjktNC4wMmwtMS41Ni0zLjcyM2EyMDUuMDkyIDIyNS4xODQgMCAwIDEtMS40NTQtMy42NjQgMTAyLjQzOCAxMTIuNDc0IDAgMCAxLTkuMzEzLTQ0LjU2NHYtMi43NzhsLjA1NC01LjQzNy4wNTQtMi43Mi4xNjEtNS4yNmMxLjE4NC0zOC45NDggNy4zNzUtNjYuNjY4IDIzLjg0Ny05Mi42NzNsLjc1My0xLjE4Mi0uNTM4LS41MzJhNDEuOTg3IDQ2LjEgMCAwIDEtNi45OTgtMTEuMjNsLS41MzgtMS4xODJjLTE3LjYwMi00Mi41NTQtMzguNDM0LTY4LjIwNS02MS45MDQtNzkuMzE3bC0xLjYxNS0uNzY4LTEuODg0LS43MS0xLjYxNS0uNTktLjgwOC0uMjk2LTEuNzc2LS41OS0xLjgzLS41OTItMS45OTItLjQ3My0yLjA0NS0uNTktMi4xNTQtLjUzMy0zLjQ5OS0uNzY4LTMuNjYtLjgyNy0zLjkzLS43MS00LjE5OC0uNzY4LTQuMzYtLjcxLTQuNjMtLjcwOS00Ljg0NS0uNjUtMy4zOS0uNDczLTYuOTk5LS44ODYtNy40MjgtLjgyOC03Ljg2LS43NjgtNi4xMzYtLjU5LTQuMTk5LS4zNTUtOC43NzQtLjcxLTYuNzgzLS40NzMtOS40Mi0uNjUtOS44NS0uNTktNy42NDUtLjQxNC0xMy4xODgtLjY1LTEwLjk4MS0uNDczLTE0LjI2NS0uNTkxLTExLjg0My0uMzU1eiIvPjwvc3ZnPg==");
--vbnICON-URL-Markdown-Line: url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDI1NjAgMjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCI+PHBhdGggZD0iTTIyOS45NzUgNDgwQzEwNS42IDQ4MCAwIDU4MC4yNjggMCA3MDUuMDY3djExNDkuODY1QzAgMTk3OS43MzMgMTA1LjYgMjA4MCAyMjkuOTc1IDIwODBoMjEwMC4wNUMyNDU0LjQgMjA4MCAyNTYwIDE5NzkuNzMzIDI1NjAgMTg1NC45MzNWNzA1LjA2N0MyNTYwIDU4MC4yNjcgMjQ1NC40IDQ4MCAyMzMwLjAyNSA0ODB6bTAgMTYwaDIxMDAuMDVjNDEuMTc1IDAgNjkuOTc1IDMwLjYxMiA2OS45NzUgNjUuMDY3djExNDkuODY1YzAgMzQuNDU2LTI4LjggNjUuMDY4LTY5Ljk3NSA2NS4wNjhIMjI5Ljk3NUMxODguOCAxOTIwIDE2MCAxODg5LjM4OCAxNjAgMTg1NC45MzJWNzA1LjA2N0MxNjAgNjcwLjYxMiAxODguOCA2NDAgMjI5Ljk3NSA2NDBNNDAwIDg4MHY4MDBoMjQwdi01MzIuNDhsMjQwIDMxNy40NCAyNDAtMzE3LjQ0VjE2ODBoMjQwVjg4MGgtMjQwbC0yNDAgMzIwLTI0MC0zMjB6bTEzNjAgMHY0MDBoLTI0MGwzNjAgNDAwIDM2MC00MDBoLTI0MFY4ODB6Ii8+PC9zdmc+");
--vbnICON-URL-Markdown-Fill: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNzQzNzU3Mzg3OTY3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEyODAgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEyMDE2IiB3aWR0aD0iNjI1IiBoZWlnaHQ9IjUwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxwYXRoIGQ9Ik0xMTg3LjcgOTA1Ljg0SDkyLjNDNDEuNCA5MDUuODQgMCA4NjQuNDQgMCA4MTMuNTRWMjEwLjQ2YzAtNTAuOSA0MS40LTkyLjMgOTIuMy05Mi4zaDEwOTUuMzhjNTAuOSAwIDkyLjMgNDEuNCA5Mi4zIDkyLjN2NjAzLjA4YzAuMDIgNTAuOS00MS4zOCA5Mi4zLTkyLjI4IDkyLjN6IG0tODgwLTE4NC42di0yNDBsMTIzLjA4IDE1My44NCAxMjMuMDgtMTUzLjg0djI0MGgxMjMuMDhWMzAyLjc2aC0xMjMuMDhsLTEyMy4wOCAxNTMuODQtMTIzLjA4LTE1My44NEgxODQuNjJ2NDE4LjQ2aDEyMy4wOHpNMTEzMi4zIDUxMmgtMTIzLjA4VjMwMi43NmgtMTIzLjA4VjUxMmgtMTIzLjA4bDE4NC42MiAyMTUuMzhMMTEzMi4zIDUxMnoiIGZpbGw9IiMwMDAwMDAiIHAtaWQ9IjEyMDE3Ij48L3BhdGg+PC9zdmc+");
--vbnICON-URL-Twitter: url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMTMzLjc2IDI0MCAyMzAxLjEyIDIwODAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiPjxwYXRoIGQ9Ik0xOTQ2LjAyNSAyNDBoMzUyLjg1NUwxNTI4IDExMjEuMDY4IDI0MzQuODggMjMyMEgxNzI0LjhsLTU1Ni4xNi03MjcuMTQ4TDUzMi4yNjUgMjMyMEgxNzkuMmw4MjQuNTMzLTk0Mi40TDEzMy43NiAyNDBoNzI4LjEwN2w1MDIuNzIgNjY0LjY0em0tMTIzLjgzNyAxODY4LjhoMTk1LjUyTDc1NS42MjUgNDQwLjEwOEg1NDUuODF6Ii8+PC9zdmc+");
--vbnICON-URL-Dict: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJpY29uIiB2aWV3Qm94PSIwIDAuMDA1IDEwMjMuOTk2IDEwMjMuODY3IiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCI+PHBhdGggZD0iTTkzNC4xODMgMTc5Ljg4Nkg1NjEuMDIybDc4LjAzNyA2MjUuMTA3YTkzLjg3IDkzLjg3IDAgMCAxLTIyLjUyOCA2OC4yNjZsLTEzMS40NTYgMTUwLjYxM0g5MzQuMTRhOTAuMjQgOTAuMjQgMCAwIDAgODkuODU2LTg5Ljk0MVYyNzIuNDcyYTkyLjU4NiA5Mi41ODYgMCAwIDAtODkuNi05MC40NTJ2LTIuMTc2eiIgZmlsbD0iIzMxMzU0MyIgZGF0YS1zcG0tYW5jaG9yLWlkPSJhMzEzeC5zZWFyY2hfaW5kZXguMC5pMjcuM2Y5ODNhODFxa1RqcEkiLz48cGF0aCBkPSJNNDg4LjE0NyA3OS4xNUE5MC40OTYgOTAuNDk2IDAgMCAwIDM5OC4yOTIuMDA1SDkwLjMyNUE5MC4yOCA5MC4yOCAwIDAgMCAwIDkwLjIwMXY2NjguNTQxYTkwLjQ5NiA5MC40OTYgMCAwIDAgOTAuMzI1IDg5Ljk0MWg0NzMuM2M4LjUzMy05LjcyOCAxNi4zODMtMTYuNDI2IDE2LjM4My0yOS4yNjl6IiBmaWxsPSIjNEI4QkY1IiBkYXRhLXNwbS1hbmNob3ItaWQ9ImEzMTN4LnNlYXJjaF9pbmRleC4wLmkyMy4zZjk4M2E4MXFrVGpwSSIvPjxwYXRoIGQ9Im0zNTAuMDc5IDkwNi4yODMgNS4xMiA0MS4xM2E5MC41OCA5MC41OCAwIDAgMCA1MS4yIDY5Ljg4OGwxMDIuNjU1LTExMC45MzNIMzUwLjA3OXoiIGZpbGw9IiMzMTM1NDMiIGRhdGEtc3BtLWFuY2hvci1pZD0iYTMxM3guc2VhcmNoX2luZGV4LjAuaTI4LjNmOTgzYTgxcWtUanBJIi8+PHBhdGggZD0iTTMzMS4wOTIgMjM5LjAyMmEzMC4yMSAzMC4yMSAwIDAgMC0yOS44NjctMjQuMTkyaC02MS45OTRhMjkuMjcgMjkuMjcgMCAwIDAtMjkuMjcgMjQuMTkyTDE0OS44NDYgNTM5LjgyYTMwLjI5MyAzMC4yOTMgMCAxIDAgNTkuMDkzIDExLjc3NmwxOC45NDQtOTYuMTI4aDg0Ljc3OGwxOS40NTYgOTYuMTI4YTMwLjI1IDMwLjI1IDAgMCAwIDM1LjQxMyAyMy42Mzd2LTIuNTZhMzAuOTMgMzAuOTMgMCAwIDAgMjMuNjM3LTMyLjkzOXptLTkxLjg2MSAxNTMuNiAyNC42MTktMTIwLjMyaDEyLjhsMjMuNjM3IDEyMC4zMnptNjk2LjQ4OCA2MC4yNDRoLTkyLjQxNnYtMzAuMjkzYTMwLjI5MyAzMC4yOTMgMCAwIDAtNjAuMDMyIDB2MzAuMjkzaC04OS42YTI5Ljg3IDI5Ljg3IDAgMCAwLTIxLjMzMiA4LjUzNCAzMC4yMDggMzAuMjA4IDAgMCAwIDIxLjMzMyA1MS41ODNoNy42OGEzODguMyAzODguMyAwIDAgMCA3MC4zNTcgMTMxLjU4NGMtMjIuMDU5IDIwLjA1My00My42MDUgMzYuNTIyLTY2Ljc3MyA1NS40NjZhMjkuNCAyOS40IDAgMCAwLTExLjMwNyAyMC4wNTQgMzAuMjA4IDMwLjIwOCAwIDAgMCA0OC43NjggMjYuNjY2YzI1LjIxNi0yMC4wMSA0Ny4yMzItMzYuOTkyIDcxLjM4LTU5LjA5M2E3NjYgNzY2IDAgMCAwIDczLjM0NSA1OS4wOTMgMzAuMDM3IDMwLjAzNyAwIDAgMCAzNy40Ni00Ni45MzNjLTIzLjU5NC0xOS4wMy00Ny4yMzEtMzUuNDk5LTY5LjI5LTU1LjQ2NmEzODIuMyAzODIuMyAwIDAgMCA3MC44Ny0xMzEuNTg0aDguMTkxYTMwLjM4IDMwLjM4IDAgMCAwIDI4Ljg4Ni0xOC40NzQgMjkuMSAyOS4xIDAgMCAwIDIuNDc0LTExLjk5IDI5Ljg2NyAyOS44NjcgMCAwIDAtMjkuODY2LTI5Ljg2Nk04MTQuMjA1IDU5OS41MWEzMTIuMyAzMTIuMyAwIDAgMS01MS4yLTg2LjkxMkg4NjUuNjZhMzI4LjggMzI4LjggMCAwIDEtNTEuMiA4Ni45MTIiIGZpbGw9IiNGRkYiIG9wYWNpdHk9Ii42Ii8+PC9zdmc+");
--vbnICON-URL-AIGC: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAwIDQ4IDQ4IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjQuMDAwMiA0NUMyNy4yMjA4IDQ1IDMyLjcyNzYgNDAuOCAzMi43Mjc2IDI0QzMyLjcyNzYgNy4yIDI3LjIyMDggMyAyNC4wMDAyIDNDMjAuNzc5NyAzIDE1LjI3MjkgNy40ODMwMiAxNS4yNzI5IDI0QzE1LjI3MjkgNDAuNTE3IDIwLjc3OTcgNDUgMjQuMDAwMiA0NVoiIHN0cm9rZT0iIzFmYWNhZiIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTUuMTA1MTUgMzUuMDAwMUM2LjcxNTQ1IDM3LjgxMjQgMTMuMjQ3OSA0MC40MjExIDI4LjM2NCAzMS42MjExQzQzLjQ4IDIyLjgyMTEgNDQuNTA1NyAxNS44MTI0IDQyLjg5NTQgMTMuMDAwMUM0MS4yODUxIDEwLjE4NzggMzQuNDk4MSA3LjcyNzI4IDE5LjYzNjcgMTYuMzc5MUM0Ljc3NTIxIDI1LjAzMDggMy40OTQ4OSAzMi4xODc4IDUuMTA1MTUgMzUuMDAwMVoiIHN0cm9rZT0iIzFmYWNhZiIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTUuMTA1MDYgMTMuMDAwMUMzLjQ5NDggMTUuODEyNCA0LjUyMDQ2IDIyLjgyMTEgMTkuNjM2NiAzMS42MjExQzM0Ljc1MjcgNDAuNDIxMSA0MS4yODUgMzcuODEyNCA0Mi44OTUzIDM1LjAwMDFDNDQuNTA1NiAzMi4xODc4IDQzLjIyNTMgMjUuMDMwOCAyOC4zNjM4IDE2LjM3OTFDMTMuNTAyNCA3LjcyNzI4IDYuNzE1MzcgMTAuMTg3OCA1LjEwNTA2IDEzLjAwMDFaIiBzdHJva2U9IiMxZmFjYWYiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+");
--vbnICON-URL-Character: url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwLjA3OSAxMTM4LjM5NiAxMDIzLjkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtc3BtLWFuY2hvci1pZD0iYTMxM3guc2VhcmNoX2luZGV4LjAuaTQzLjNmOTgzYTgxcWtUanBJIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCI+PHBhdGggZD0iTTU2OS4wMTcgODAwLjU3Yy01Ljc5My4xODItMTEuNDA2LTEuMDg2LTE2LjY1Ni0zLjQ0TDIxNC4zNTQgNjU1LjE5NGE0My41MSA0My41MSAwIDAgMS0yNy4xNTYtNDAuMzcyVjQzLjk5M2MwLTE0LjY2NCA3LjI0Mi0yOC40MjMgMTkuMTktMzYuNzUxIDEyLjMxMi04LjE0NyAyNy43LTkuNDE1IDQxLjA5Ny0zLjQ0bDE4NS41NjkgNzguMDNhNDMuNjEzIDQzLjYxMyAwIDEgMS0zMy4zMTIgODAuNTYzbC0xMjUuMS01Mi41MDJ2NDc1LjU5OWwyNTAuMzgyIDEwNS4wMDVWMTg1Ljc1YTQzLjUxIDQzLjUxIDAgMCAxIDI3LjE1Ni00MC4zNzNMODkwLjM2OCAzLjYyMWMxMy41NzgtNS40MzEgMjguNzg1LTQuMTY0IDQxLjA5NiAzLjQ0IDEyLjMxMSA4LjE0NyAxOS41NTMgMjIuMDg3IDE5LjE5IDM2Ljc1MVY2MTQuNjRhNDMuNTEgNDMuNTEgMCAwIDEtMjcuMTU1IDQwLjM3MmwtMTg0Ljg0NSA3Ny4xMjRjLTIxLjkwNiA4LjE0Ny00Ni4zNDctMi43MTUtNTUuNC0yNC4yNi04Ljg3LTIxLjcyNC43MjUtNDYuNTI3IDIyLjA4OC01Ni4zMDRMODYzLjAzIDU4NC45NVYxMDkuNTNMNjEyLjQ2NyAyMTQuNTM2djU0MS4xMzZjMCAxNC42NjQtNy4yNDEgMjguNDI0LTE5LjE5IDM2Ljc1Mi03LjA2IDUuMjUtMTUuNzUxIDcuOTY2LTI0LjQ0MSA3Ljk2NnoiIGZpbGw9IiMzQTgzOUIiIGRhdGEtc3BtLWFuY2hvci1pZD0iYTMxM3guc2VhcmNoX2luZGV4LjAuaTM3LjNmOTgzYTgxcWtUanBJIiBjbGFzcz0ic2VsZWN0ZWQiLz48cGF0aCBkPSJNNTY5LjAxNyAxMDIzLjk3N2MtNS4yNSAwLTEwLjMyLS45MDUtMTUuMjA4LTIuNTM0TDI3LjE1NiA4MTcuNDA4QzEwLjY4MiA4MTAuODkgMCA3OTQuNzc4IDAgNzc2Ljg1NFYyNjUuNTljMC0yMy41MzYgMTkuMDEtNDIuNTQ1IDQyLjU0NS00Mi41NDVTODUuMDkgMjQyLjA1NCA4NS4wOSAyNjUuNTlWNzQ2LjhsNDg0LjEwOCAxODcuNzQyIDQ4NC4xMDgtMTg3Ljc0MVYyOTkuOTg4YzAtMjMuNTM2IDE5LjAxLTQyLjU0NSA0Mi41NDUtNDIuNTQ1czQyLjU0NSAxOS4wMSA0Mi41NDUgNDIuNTQ1djQ3Ni44NjZjMCAxNy43NDItMTAuODYyIDMzLjY3NC0yNy4xNTYgNDAuNTU0bC01MjYuNDcyIDIwNC4wMzVjLTQuODg4IDEuODEtMTAuMTM5IDIuNzE1LTE1LjIwOCAyLjUzNHoiIGZpbGw9IiMzQTgzOUIiIGRhdGEtc3BtLWFuY2hvci1pZD0iYTMxM3guc2VhcmNoX2luZGV4LjAuaTM4LjNmOTgzYTgxcWtUanBJIiBjbGFzcz0ic2VsZWN0ZWQiLz48L3N2Zz4=");
--vbnICON-URL-Network: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAwIDQ4IDQ4IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOCAxMkMxMC4yMDkxIDEyIDEyIDEwLjIwOTEgMTIgOEMxMiA1Ljc5MDg2IDEwLjIwOTEgNCA4IDRDNS43OTA4NiA0IDQgNS43OTA4NiA0IDhDNCAxMC4yMDkxIDUuNzkwODYgMTIgOCAxMloiIGZpbGw9IiMxM0VDOTkiIHN0cm9rZT0iIzJDMkYzNSIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDQyQzEzLjMxMzcgNDIgMTYgMzkuMzEzNyAxNiAzNkMxNiAzMi42ODYzIDEzLjMxMzcgMzAgMTAgMzBDNi42ODYyOSAzMCA0IDMyLjY4NjMgNCAzNkM0IDM5LjMxMzcgNi42ODYyOSA0MiAxMCA0MloiIGZpbGw9IiMxM0VDOTkiIHN0cm9rZT0iIzJDMkYzNSIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTM4IDQ0QzQxLjMxMzcgNDQgNDQgNDEuMzEzNyA0NCAzOEM0NCAzNC42ODYzIDQxLjMxMzcgMzIgMzggMzJDMzQuNjg2MyAzMiAzMiAzNC42ODYzIDMyIDM4QzMyIDQxLjMxMzcgMzQuNjg2MyA0NCAzOCA0NFoiIGZpbGw9IiMxM0VDOTkiIHN0cm9rZT0iIzJDMkYzNSIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIyIDI4QzI2LjQxODMgMjggMzAgMjQuNDE4MyAzMCAyMEMzMCAxNS41ODE3IDI2LjQxODMgMTIgMjIgMTJDMTcuNTgxNyAxMiAxNCAxNS41ODE3IDE0IDIwQzE0IDI0LjQxODMgMTcuNTgxNyAyOCAyMiAyOFoiIGZpbGw9IiMxM0VDOTkiIHN0cm9rZT0iIzJDMkYzNSIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTM0IDEyQzM2LjIwOTEgMTIgMzggMTAuMjA5MSAzOCA4QzM4IDUuNzkwODYgMzYuMjA5MSA0IDM0IDRDMzEuNzkwOSA0IDMwIDUuNzkwODYgMzAgOEMzMCAxMC4yMDkxIDMxLjc5MDkgMTIgMzQgMTJaIiBmaWxsPSIjMTNFQzk5IiBzdHJva2U9IiMyQzJGMzUiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTExIDExTDE1IDE1IiBzdHJva2U9IiMyQzJGMzUiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTMwIDEyTDI4IDE0IiBzdHJva2U9IiMyQzJGMzUiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTM0IDMzLjVMMjggMjYiIHN0cm9rZT0iIzJDMkYzNSIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBkPSJNMTQgMzFMMTggMjciIHN0cm9rZT0iIzJDMkYzNSIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=");
--vbnICON-URL-SVG: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIiB2aWV3Qm94PSIwIDAgNjAwIDYwMCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTE5My43NSAxMTIuNSA4Ny41IDE3NXYyNTBsMTA2LjI1IDYyLjVMMzAwIDU1MGwxMDYuMjUtNjIuNUw1MTIuNSA0MjVWMTc1bC0xMDYuMjUtNjIuNUwzMDAgNTB6TTMwMCA1MHYyNTBtMjEyLjUgMTI1TDMwMCAzMDBNODcuNSA0MjUgMzAwIDMwMG0wIDI1MFY0MjVtMjEyLjUtMjUwLTEwMCA2Mi41TTg3LjUgMTc1bDEwMCA2Mi41IiBzdHJva2U9IiMwOEUwQUQiIHN0cm9rZS13aWR0aD0iNTAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==");
--vbnICON-URL-Mecha: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAwIDQ4IDQ4IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik00MSAxMy45OTk3TDI0IDRMNyAxMy45OTk3VjMzLjk5OThMMjQgNDRMNDEgMzMuOTk5OFYxMy45OTk3WiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMzMzIiBzdHJva2Utd2lkdGg9IjQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBkPSJNMTYgMTguOTk3NkwyMy45OTMyIDI0LjAwMDJMMzEuOTk1MSAxOC45OTc2IiBzdHJva2U9IiNmZmZmZmYiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTI0IDI0VjMzIiBzdHJva2U9IiNmZmZmZmYiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+");
--vbnICON-URL-Music: url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMjQyLjUgNjI0LjUgMjA3NC43NSAxMzExLjI1IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIj48cGF0aCBkPSJNNDg3LjI1IDE5MzUuNzVIMjA3Mi41YzEzNC43NSAwIDI0NC43NS0xMTAuMjUgMjQ0Ljc1LTI0NC43NVY4NjkuMjVjMC0xMzQuNzUtMTEwLjI1LTI0NC43NS0yNDQuNzUtMjQ0Ljc1SDQ4Ny4yNWMtMTM0Ljc1IDAtMjQ0Ljc1IDExMC4yNS0yNDQuNzUgMjQ0Ljc1VjE2OTFjMCAxMzQuNSAxMTAuMjUgMjQ0Ljc1IDI0NC43NSAyNDQuNzUiIGZpbGw9IiMyNDIyMkQiLz48cGF0aCBkPSJNNDgzLjc1IDE5MzUuNzVIMjA2OWMxMy43NSAwIDI3LjUtMSA0MC43NS0yLjc1LTQxLTEyNy41LTE1Ny41LTIxOS41LTM0Mi0yMTkuNUg4NTEuNWMtMTg0Ljc1IDAtMzQzIDkyLjI1LTQwMS4yNSAyMjAuMjUgMTEgMS4yNSAyMi4yNSAyIDMzLjUgMm0zLjUtMzc5SDIwNzIuNWM2NS4yNSAwIDExOS01My43NSAxMTktMTE5di01NjguNWMwLTY1LjI1LTUzLjc1LTExOS0xMTktMTE5SDQ4Ny4yNWMtNjUuMjUgMC0xMTkgNTMuNzUtMTE5IDExOVYxNDM4Yy4yNSA2NSA1NCAxMTguNzUgMTE5IDExOC43NSIgZmlsbD0iI0Y2NiIvPjxwYXRoIGQ9Ik04NTEuNSAxMDQxLjVoODU3Yzk3LjI1IDAgMTc2Ljc1IDc5LjUgMTc2Ljc1IDE3Ni43NXMtNzkuNSAxNzYuNS0xNzYuNzUgMTc2LjVoLTg1N2MtOTcuMjUgMC0xNzYuNS03OS41LTE3Ni41LTE3Ni41IDAtOTcuMjUgNzkuNS0xNzYuNzUgMTc2LjUtMTc2Ljc1IiBmaWxsPSIjMjQyMjJEIi8+PHBhdGggZD0iTTE3MDguNSAxMDk2YzY3LjUgMCAxMjIgNTQuNzUgMTIyIDEyMiAwIDY3LjUtNTQuNzUgMTIyLTEyMiAxMjItNjcuNSAwLTEyMi01NC43NS0xMjItMTIyIDAtNjcuNSA1NC41LTEyMiAxMjItMTIybS04NTcgMGM2Ny41IDAgMTIyIDU0Ljc1IDEyMiAxMjIgMCA2Ny41LTU0Ljc1IDEyMi0xMjIgMTIyLTY3LjUgMC0xMjItNTQuNzUtMTIyLTEyMiAwLTY3LjUgNTQuNzUtMTIyIDEyMi0xMjJNNDczLjI1IDgxMWMyNCAwIDQzLjUgMTkuNSA0My41IDQzLjVzLTE5LjUgNDMuNS00My41IDQzLjUtNDMuNS0xOS41LTQzLjUtNDMuNSAxOS41LTQzLjUgNDMuNS00My41bTE2MTMuNS0yLjc1YzI0IDAgNDMuNSAxOS41IDQzLjUgNDMuNXMtMTkuNSA0My41LTQzLjUgNDMuNS00My41LTE5LjUtNDMuNS00My41IDE5LjUtNDMuNSA0My41LTQzLjVtNzcuNSA5MDUuMjVjMjYuMjUgMCA0Ny43NSAyMS41IDQ3Ljc1IDQ3Ljc1cy0yMS4yNSA0Ny43NS00Ny43NSA0Ny43NWMtMjYuMjUgMC00Ny43NS0yMS41LTQ3Ljc1LTQ3Ljc1czIxLjI1LTQ3Ljc1IDQ3Ljc1LTQ3Ljc1bS0xNzY4LjUgMGMyNi4yNSAwIDQ3Ljc1IDIxLjUgNDcuNzUgNDcuNzVTNDIyLjI1IDE4MDkgMzk1Ljc1IDE4MDljLTI2LjI1IDAtNDcuNzUtMjEuNS00Ny43NS00Ny43NS4yNS0yNi4yNSAyMS41LTQ3Ljc1IDQ3Ljc1LTQ3Ljc1IiBmaWxsPSIjRkZGIi8+PC9zdmc+");
--vbnICON-URL-VideoPlay: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9InZpZGVvUGxheSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTAwIDUwMCIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiPjxwYXRoIGQ9Ik0yNTAgMGM3Ny42OS43IDE0NCAyMC4xOSAxODYuNTUgNjMuNDVDNDc5LjgxIDEwNS45OSA0OTkuMyAxNzIuMzEgNTAwIDI1MGMtLjcgNzcuNjktMjAuMTkgMTQ0LTYzLjQ1IDE4Ni41NUMzOTQgNDc5LjgxIDMyNy42OSA0OTkuMyAyNTAgNTAwYy03Ny42OS0uNy0xNDQtMjAuMTktMTg2LjU1LTYzLjQ1QzIwLjE5IDM5NCAuNyAzMjcuNjkgMCAyNTBjLjctNzcuNjkgMjAuMTktMTQ0IDYzLjQ1LTE4Ni41NUMxMDYgMjAuMTkgMTcyLjMxLjcgMjUwIDAiIGZpbGw9IiM1MzVkZjciLz48cGF0aCBkPSJNMTkwLjk3IDE3OC4zMmMzLjE5LTIxLjY5IDE4LjgzLTM1LjAxIDM1LjczLTI0LjE1IDI5LjkxIDE5LjAyIDY0LjkyIDQ3LjI4IDEwMC4xIDcxLjg2IDIwLjU3IDE0LjQxIDIwLjU3IDMzLjU0IDAgNDcuOTUtMzUuMTggMjQuNTgtNzAuMTkgNTIuODMtMTAwLjEgNzEuODYtMTYuOTEgMTAuODYtMzIuNTQtMi40Ny0zNS43My0yNC4xNWE1ODYuNyA1ODYuNyAwIDAgMSAwLTE0My4zNiIgZmlsbD0iI2ZmZiIgb3BhY2l0eT0iLjgiLz48L3N2Zz4=");
--vbnICON-URL-VideoStop: url("data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9InZpZGVvU3RvcCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTAwIDUwMCIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiPjxwYXRoIGQ9Ik0yNTAgMGM3Ny42OS43IDE0NCAyMC4xOSAxODYuNTUgNjMuNDVDNDc5LjgxIDEwNS45OSA0OTkuMyAxNzIuMzEgNTAwIDI1MGMtLjcgNzcuNjktMjAuMTkgMTQ0LTYzLjQ1IDE4Ni41NUMzOTQgNDc5LjgxIDMyNy42OSA0OTkuMyAyNTAgNTAwYy03Ny42OS0uNy0xNDQtMjAuMTktMTg2LjU1LTYzLjQ1QzIwLjE5IDM5NCAuNyAzMjcuNjkgMCAyNTBjLjctNzcuNjkgMjAuMTktMTQ0IDYzLjQ1LTE4Ni41NUMxMDYgMjAuMTkgMTcyLjMxLjcgMjUwIDAiIGZpbGw9IiNmZjZiNmIiLz48cGF0aCBkPSJNMjQyLjMxIDM0Ni4xOGMtNTguOTkgMC04OC40OC0yOS40OS04OC40OC04OC40OHYtMTUuMzljMC01OC45OSAyOS40OS04OC40OCA4OC40OC04OC40OGgxNS4zOWM1OC45OSAwIDg4LjQ4IDI5LjQ5IDg4LjQ4IDg4LjQ4djE1LjM5YzAgNTguOTktMjkuNDkgODguNDgtODguNDggODguNDh6IiBmaWxsPSIjZmZmIiBvcGFjaXR5PSIuOCIvPjwvc3ZnPg==");
--vbnICON-URL-Correct: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iQ29ycmVjdCIgdmlld0JveD0iMCAwIDUwMCA1MDAiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIj48cGF0aCBkPSJNMjUwIDBjNzcuNjkuNyAxNDQgMjAuMTkgMTg2LjU1IDYzLjQ1QzQ3OS44MSAxMDUuOTkgNDk5LjMgMTcyLjMxIDUwMCAyNTBjLS43IDc3LjY5LTIwLjE5IDE0NC02My40NSAxODYuNTVDMzk0IDQ3OS44MSAzMjcuNjkgNDk5LjMgMjUwIDUwMGMtNzcuNjktLjctMTQ0LTIwLjE5LTE4Ni41NS02My40NUMyMC4xOSAzOTQgLjcgMzI3LjY5IDAgMjUwYy43LTc3LjY5IDIwLjE5LTE0NCA2My40NS0xODYuNTVDMTA2IDIwLjE5IDE3Mi4zMS43IDI1MCAwIiBmaWxsPSIjMWZlNDdlIi8+PHBhdGggZD0iTTIyNy4xMzEgMzQ4LjM3M2EyMy45OCAyMy45OCAwIDAgMS0xNy4wMDYtNy4wNGwtODMuMTI3LTgzLjEyN2MtOS4zOTQtOS4zOTQtOS4zOTQtMjQuNjE4IDAtMzQuMDAxIDkuMzk0LTkuMzk0IDI0LjYxOC05LjM5NCAzNC4wMDEgMGw2Ni4xMzIgNjYuMTMyTDM1NC4zOSAxNjMuMDc4YzkuMzk0LTkuMzk0IDI0LjYxOC05LjM5NCAzNC4wMDEgMCA5LjM5NCA5LjM5NCA5LjM5NCAyNC42MTggMCAzNC4wMDFMMjQ0LjEyNiAzNDEuMzQ0Yy00LjY5NyA0LjY5Ny0xMC44NDYgNy4wNC0xNy4wMDYgNy4wNFoiIGZpbGw9IiNmZmYiIG9wYWNpdHk9Ii44Ii8+PC9zdmc+");
--vbnICON-URL-Error: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iRXJyb3IiIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCI+PHBhdGggZD0iTTI1MCAwYzc3LjY5LjcgMTQ0IDIwLjE5IDE4Ni41NSA2My40NUM0NzkuODEgMTA1Ljk5IDQ5OS4zIDE3Mi4zMSA1MDAgMjUwYy0uNyA3Ny42OS0yMC4xOSAxNDQtNjMuNDUgMTg2LjU1QzM5NCA0NzkuODEgMzI3LjY5IDQ5OS4zIDI1MCA1MDBjLTc3LjY5LS43LTE0NC0yMC4xOS0xODYuNTUtNjMuNDVDMjAuMTkgMzk0IC43IDMyNy42OSAwIDI1MGMuNy03Ny42OSAyMC4xOS0xNDQgNjMuNDUtMTg2LjU1QzEwNiAyMC4xOSAxNzIuMzEuNyAyNTAgMCIgZmlsbD0iI2ZmNzE0ZCIvPjxwYXRoIGQ9Ik0zNDcuNDI3IDMxMi42MzQgMjg0Ljc5MyAyNTBsNjIuNjIzLTYyLjYyM2M5LjYxNC05LjYwMyA5LjYxNC0yNS4xOSAwLTM0Ljc5My05LjYxNC05LjYxNC0yNS4xOS05LjYxNC0zNC43OTMgMEwyNTAgMjE1LjIwN2wtNjIuNjIzLTYyLjYyM2MtOS42MTQtOS42MTQtMjUuMTktOS42MTQtMzQuNzkzIDAtOS42MTQgOS42MDMtOS42MTQgMjUuMTkgMCAzNC43OTNMMjE1LjIwNyAyNTBsLTYyLjYzNCA2Mi42MzRjLTkuNjE0IDkuNjAzLTkuNjE0IDI1LjE5IDAgMzQuNzkzIDQuODA3IDQuODA3IDExLjA5OSA3LjIwNSAxNy40MDIgNy4yMDVzMTIuNTk1LTIuMzk4IDE3LjQwMi03LjIwNWw2Mi42MzQtNjIuNjM0IDYyLjYzNCA2Mi42MzRjNC44MDcgNC44MDcgMTEuMDk5IDcuMjA1IDE3LjQwMiA3LjIwNXMxMi41OTUtMi4zOTggMTcuNDAyLTcuMjA1YzkuNjE0LTkuNjAzIDkuNjE0LTI1LjE5IDAtMzQuNzkzWiIgZmlsbD0iI2ZmZiIgb3BhY2l0eT0iLjgiLz48L3N2Zz4=");
--vbnICON-URL-Transition: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iVHJhbnNpdGlvbiIgdmlld0JveD0iMCAwIDUwMCA1MDAiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIj4KICA8cGF0aCBkPSJNMjUwIDBjNzcuNjkuNyAxNDQgMjAuMTkgMTg2LjU1IDYzLjQ1QzQ3OS44MSAxMDUuOTkgNDk5LjMgMTcyLjMxIDUwMCAyNTBjLS43IDc3LjY5LTIwLjE5IDE0NC02My40NSAxODYuNTVDMzk0IDQ3OS44MSAzMjcuNjkgNDk5LjMgMjUwIDUwMGMtNzcuNjktLjctMTQ0LTIwLjE5LTE4Ni41NS02My40NUMyMC4xOSAzOTQgLjcgMzI3LjY5IDAgMjUwYy43LTc3LjY5IDIwLjE5LTE0NCA2My40NS0xODYuNTVDMTA2IDIwLjE5IDE3Mi4zMS43IDI1MCAwIiBmaWxsPSIjNzM3ZGY0Ii8+CiAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUwIDI1MCkgc2NhbGUoMS4zKSB0cmFuc2xhdGUoLTI1MCAtMjUwKSI+CiAgICA8cGF0aCBkPSJNMjUwIDE0Ni42M2MyMi4yOSAwIDQzLjUgNi45OCA2MS4zNyAyMC4xOCAzLjExLTYuOTggMTAuMS0xMS44NCAxOC4yMy0xMS44NCAxMS4wMiAwIDE5Ljk1IDguOTMgMTkuOTUgMTkuOTV2NTAuMDVjMCA5Ljg1LTcuMTkgMTguMjItMTYuOTIgMTkuNzItOS43MyAxLjQ5LTE5LjEtNC4zNC0yMi4wNS0xMy43NC04LjM1LTI2LjU3LTMyLjY5LTQ0LjQzLTYwLjU3LTQ0LjQzcy01Mi4yMyAxNy44NS02MC41NyA0NC40M2MtMy4zIDEwLjUxLTE0LjUgMTYuMzUtMjUuMDEgMTMuMDVzLTE2LjM1LTE0LjUtMTMuMDUtMjUuMDFjNi41NS0yMC44NCAxOS4zLTM4Ljc5IDM2Ljg5LTUxLjkgMTcuOTUtMTMuMzkgMzkuMy0yMC40NiA2MS43NS0yMC40NlptNzkuNiAxMDguNDVjMS45OCAwIDMuOTkuMyA1Ljk4LjkyIDEwLjUxIDMuMyAxNi4zNSAxNC41IDEzLjA1IDI1LjAxLTYuNTUgMjAuODQtMTkuMyAzOC43OS0zNi44OSA1MS45LTE3Ljk1IDEzLjM5LTM5LjMgMjAuNDYtNjEuNzUgMjAuNDZzLTQzLjUtNi45OC02MS4zNy0yMC4xOGMtMy4xMSA2Ljk4LTEwLjEgMTEuODQtMTguMjMgMTEuODQtMTEuMDIgMC0xOS45NS04LjkzLTE5Ljk1LTE5Ljk1di01MC4wNWMwLTkuODUgNy4xOS0xOC4yMiAxNi45Mi0xOS43MiA5Ljc0LTEuNDkgMTkuMSA0LjM0IDIyLjA1IDEzLjc0IDguMzUgMjYuNTcgMzIuNjkgNDQuNDMgNjAuNTcgNDQuNDNzNTIuMjMtMTcuODUgNjAuNTctNDQuNDNjMi42OC04LjUyIDEwLjU0LTEzLjk3IDE5LjAyLTEzLjk3WiIgZmlsbD0iI2Y1ZjRmZiIgb3BhY2l0eT0iLjgiLz4KICA8L2c+Cjwvc3ZnPgo=");
--vbnICON-URL-Info: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iSW5mbyIgdmlld0JveD0iMCAwIDUwMCA1MDAiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIj48cGF0aCBkPSJNMjUwIDBjNzcuNjkuNyAxNDQgMjAuMTkgMTg2LjU1IDYzLjQ1QzQ3OS44MSAxMDUuOTkgNDk5LjMgMTcyLjMxIDUwMCAyNTBjLS43IDc3LjY5LTIwLjE5IDE0NC02My40NSAxODYuNTVDMzk0IDQ3OS44MSAzMjcuNjkgNDk5LjMgMjUwIDUwMGMtNzcuNjktLjctMTQ0LTIwLjE5LTE4Ni41NS02My40NUMyMC4xOSAzOTQgLjcgMzI3LjY5IDAgMjUwYy43LTc3LjY5IDIwLjE5LTE0NCA2My40NS0xODYuNTVDMTA2IDIwLjE5IDE3Mi4zMS43IDI1MCAwIiBmaWxsPSIjM2Q5NmE2Ii8+PHBhdGggZD0iTTI0Ny4wMDggMTA5LjIxMmMxNi4xMjggMCAyOS4xOTYgMTMuMDY4IDI5LjE5NiAyOS4xOTZzLTEzLjA2OCAyOS4xOTYtMjkuMTk2IDI5LjE5Ni0yOS4xOTYtMTMuMDY4LTI5LjE5Ni0yOS4xOTYgMTMuMDY4LTI5LjE5NiAyOS4xOTYtMjkuMTk2bTQ0LjcxMiAyMzIuMjk2aC0xNS40OFYyMDguNjhjMC0xMy4wNTYtMTAuNTg0LTIzLjY0LTIzLjY0LTIzLjY0aC0yMi4zNTZjLTEzLjA1NiAwLTIzLjY0IDEwLjU4NC0yMy42NCAyMy42NHM5LjkgMjIuOTMyIDIyLjM1NiAyMy42MDR2MTA5LjIyNGgtMTUuNDhjLTEzLjA1NiAwLTIzLjY0IDEwLjU4NC0yMy42NCAyMy42NHMxMC41ODQgMjMuNjQgMjMuNjQgMjMuNjRoNzguMjI4YzEzLjA1NiAwIDIzLjY0LTEwLjU4NCAyMy42NC0yMy42NHMtMTAuNTg0LTIzLjY0LTIzLjY0LTIzLjY0WiIgZmlsbD0iI2ZmZiIgb3BhY2l0eT0iLjgiLz48L3N2Zz4=");
--vbnICON-URL-Safety: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iU2FmZXR5IiB2aWV3Qm94PSIwIDAgNTAwIDUwMCIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MDAiPgogIDxwYXRoIGQ9Ik0yNTAgMGM3Ny42OS43IDE0NCAyMC4xOSAxODYuNTUgNjMuNDVDNDc5LjgxIDEwNS45OSA0OTkuMyAxNzIuMzEgNTAwIDI1MGMtLjcgNzcuNjktMjAuMTkgMTQ0LTYzLjQ1IDE4Ni41NUMzOTQgNDc5LjgxIDMyNy42OSA0OTkuMyAyNTAgNTAwYy03Ny42OS0uNy0xNDQtMjAuMTktMTg2LjU1LTYzLjQ1QzIwLjE5IDM5NCAuNyAzMjcuNjkgMCAyNTBjLjctNzcuNjkgMjAuMTktMTQ0IDYzLjQ1LTE4Ni41NUMxMDYgMjAuMTkgMTcyLjMxLjcgMjUwIDAiIGZpbGw9IiMzZDk2YTYiLz4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNTAgMjUwKSBzY2FsZSgxLjMpIHRyYW5zbGF0ZSgtMjUwIC0yNTApIj4KICA8cGF0aCBkPSJtMzMyLjY2IDE2NC4zOS03My41My0yMS43NWgtLjAzYTMyLjI0IDMyLjI0IDAgMCAwLTE4LjExIDBoLS4wM2wtNzMuNjIgMjEuNzZjLTguNTQgMi41MS0xNC41MSAxMC40Ny0xNC41MSAxOS4zOHY0NC40OWMwIDI4LjM2IDguNTkgNTUuNjMgMjQuODUgNzguODcgMTYuMjMgMjMuMTkgMzguODQgNDAuNTkgNjUuNCA1MC4zMmEyMC4yIDIwLjIgMCAwIDAgMTMuODggMGMyNi41NS05LjczIDQ5LjE2LTI3LjEzIDY1LjM4LTUwLjMyIDE2LjI1LTIzLjIzIDI0Ljg0LTUwLjUgMjQuODQtNzguODV2LTQ0LjUxYzAtOC45MS01Ljk2LTE2Ljg3LTE0LjUxLTE5LjM4Wm0tMTkuNTkgNTcuODgtNjMuMjggNjMuMjhjLTIuMDYgMi4wNi00Ljc2IDMuMDktNy40NiAzLjA5cy01LjQtMS4wMy03LjQ2LTMuMDlsLTM2LjQ2LTM2LjQ2Yy00LjEyLTQuMTItNC4xMi0xMC44IDAtMTQuOTEgNC4xMi00LjEyIDEwLjgtNC4xMiAxNC45MSAwbDI5LjAxIDI5LjAxIDU1LjgyLTU1LjgyYzQuMTItNC4xMiAxMC44LTQuMTIgMTQuOTEgMCA0LjEyIDQuMTIgNC4xMiAxMC44IDAgMTQuOTFaIiBmaWxsPSIjZmZmIiBvcGFjaXR5PSIuOCIvPgogIDwvZz4KPC9zdmc+Cg==");
}
.vbnThemeDark {
--vbnAccentHEX: #4C525E;
--vbnAccentHSL: 220, 011%, 033%;
--vbnAccentHSL-H: 220;
--vbnAccentHSL-S: 11%;
--vbnAccentHSL-L: 33%;
--vbnAccentAltXXX: var(--vbnAccentHSL-H), calc(var(--vbnAccentHSL-S) - 000%), calc(var(--vbnAccentHSL-L) - 000%);
--vbnAccentPickXX: var(--vbnAccentHSL-H), calc(var(--vbnAccentHSL-S) - 002%), calc(var(--vbnAccentHSL-L) - 010%);
--vbnAccentBorder: var(--vbnAccentHSL-H), calc(var(--vbnAccentHSL-S) - 000%), calc(var(--vbnAccentHSL-L) + 020%);
--vbnAccentShadow: var(--vbnAccentHSL-H), calc(var(--vbnAccentHSL-S) - 000%), calc(var(--vbnAccentHSL-L) - 000%);
--vbnSecondaryHEX: #2D3139;
--vbnSecondaryHSL: 220, 012%, 020%;
--vbnSecondaryHSL-H: 220;
--vbnSecondaryHSL-S: 12%;
--vbnSecondaryHSL-L: 20%;
--vbnSecondaryAltXXX: var(--vbnSecondaryHSL-H), calc(var(--vbnSecondaryHSL-S) - 000%), calc(var(--vbnSecondaryHSL-L) - 000%);
--vbnSecondaryPickXX: var(--vbnSecondaryHSL-H), calc(var(--vbnSecondaryHSL-S) - 000%), calc(var(--vbnSecondaryHSL-L) - 010%);
--vbnSecondaryBorder: var(--vbnSecondaryHSL-H), calc(var(--vbnSecondaryHSL-S) - 000%), calc(var(--vbnSecondaryHSL-L) + 020%);
--vbnSecondaryShadow: var(--vbnSecondaryHSL-H), calc(var(--vbnSecondaryHSL-S) - 000%), calc(var(--vbnSecondaryHSL-L) - 000%);
--vbnPrimaryHEX: #1D1E20;
--vbnPrimaryHSL: 220, 005%, 012%;
--vbnPrimaryHSL-H: 220;
--vbnPrimaryHSL-S: 05%;
--vbnPrimaryHSL-L: 12%;
--vbnPrimaryAltXXX: var(--vbnPrimaryHSL-H), calc(var(--vbnPrimaryHSL-S) - 000%), calc(var(--vbnPrimaryHSL-L) - 000%);
--vbnPrimaryPickXX: var(--vbnPrimaryHSL-H), calc(var(--vbnPrimaryHSL-S) - 000%), calc(var(--vbnPrimaryHSL-L) - 010%);
--vbnPrimaryBorder: var(--vbnPrimaryHSL-H), calc(var(--vbnPrimaryHSL-S) - 000%), calc(var(--vbnPrimaryHSL-L) + 020%);
--vbnPrimaryShadow: var(--vbnPrimaryHSL-H), calc(var(--vbnPrimaryHSL-S) - 000%), calc(var(--vbnPrimaryHSL-L) - 010%);
--vbnGrid-S: hsla(0, 0%, 50%, 0.07);
--vbnGrid-L: hsla(0, 0%, 50%, 0.09);
}
.vbnThemeLight {
--vbnAccentHEX: #75839F;
--vbnAccentHSL: 220, 018%, 054%;
--vbnAccentHSL-H: 220;
--vbnAccentHSL-S: 18%;
--vbnAccentHSL-L: 54%;
--vbnAccentAltXXX: var(--vbnAccentHSL-H), calc(var(--vbnAccentHSL-S) - 000%), calc(var(--vbnAccentHSL-L) - 000%);
--vbnAccentPickXX: var(--vbnAccentHSL-H), calc(var(--vbnAccentHSL-S) - 002%), calc(var(--vbnAccentHSL-L) - 010%);
--vbnAccentBorder: var(--vbnAccentHSL-H), calc(var(--vbnAccentHSL-S) - 000%), calc(var(--vbnAccentHSL-L) + 020%);
--vbnAccentShadow: var(--vbnAccentHSL-H), calc(var(--vbnAccentHSL-S) - 000%), calc(var(--vbnAccentHSL-L) - 000%);
--vbnSecondaryHEX: #454A54;
--vbnSecondaryHSL: 220, 010%, 030%;
--vbnSecondaryHSL-H: 220;
--vbnSecondaryHSL-S: 10%;
--vbnSecondaryHSL-L: 30%;
--vbnSecondaryAltXXX: var(--vbnSecondaryHSL-H), calc(var(--vbnSecondaryHSL-S) - 000%), calc(var(--vbnSecondaryHSL-L) - 000%);
--vbnSecondaryPickXX: var(--vbnSecondaryHSL-H), calc(var(--vbnSecondaryHSL-S) - 000%), calc(var(--vbnSecondaryHSL-L) - 010%);
--vbnSecondaryBorder: var(--vbnSecondaryHSL-H), calc(var(--vbnSecondaryHSL-S) - 000%), calc(var(--vbnSecondaryHSL-L) + 020%);
--vbnSecondaryShadow: var(--vbnSecondaryHSL-H), calc(var(--vbnSecondaryHSL-S) - 000%), calc(var(--vbnSecondaryHSL-L) - 000%);
--vbnPrimaryHEX: #2C2F35;
--vbnPrimaryHSL: 220, 009%, 019%;
--vbnPrimaryHSL-H: 220;
--vbnPrimaryHSL-S: 09%;
--vbnPrimaryHSL-L: 19%;
--vbnPrimaryAltXXX: var(--vbnPrimaryHSL-H), calc(var(--vbnPrimaryHSL-S) - 000%), calc(var(--vbnPrimaryHSL-L) - 000%);
--vbnPrimaryPickXX: var(--vbnPrimaryHSL-H), calc(var(--vbnPrimaryHSL-S) - 000%), calc(var(--vbnPrimaryHSL-L) - 010%);
--vbnPrimaryBorder: var(--vbnPrimaryHSL-H), calc(var(--vbnPrimaryHSL-S) - 000%), calc(var(--vbnPrimaryHSL-L) + 020%);
--vbnPrimaryShadow: var(--vbnPrimaryHSL-H), calc(var(--vbnPrimaryHSL-S) - 000%), calc(var(--vbnPrimaryHSL-L) - 010%);
--vbnGrid-S: hsla(0, 0%, 50%, 0.05);
--vbnGrid-L: hsla(0, 0%, 50%, 0.07);
}
#vbnDOM { z-index: var(--vbnPriority09); pointer-events: none; padding: 0; margin: 0; font-size: var(--vbnBaseSize); }
#vbnDOM, #vbnDOM *, #vbnDOM ::before, #vbnDOM ::after { box-sizing: border-box; outline: none; }
/* ================================================== ↓ VBN */
/* ========== ↓ Animation */
@keyframes vbnSlideIn {
000% { transform: scale(0.00); opacity: 0; }
020% { transform: scale(0.40); opacity: 0.5; }
030% { transform: scale(0.80); opacity: 1.0; }
085% { transform: scale(1.03); opacity: 1.0; }
100% { transform: scale(1.00); opacity: 1.0; }
}
@keyframes vbnSlideOut {
000% { transform: translateX(-200%) scale(0.90); opacity: 0; }
020% { transform: translateX(010px) scale(1.02); opacity: 1; }
030% { transform: translateX(000px) scale(1.00); opacity: 1; }
085% { transform: translateX(000px) scale(1.00); opacity: 1; }
100% { transform: translateX(-100%) scale(0.95); opacity: 0; }
}
@keyframes vbnLoaderUnknown {
000% { left: -10%; width: 10%; }
020% { left: 010%; width: 30%; }
040% { left: 040%; width: 50%; }
060% { left: 070%; width: 30%; }
100% { left: 100%; width: 10%; }
}
/* ========== ↓ LoaderBar */
#vbnLoaderBar {
opacity: .92;
z-index: var(--vbnPriority09);
position: fixed;
top: 0;
left: 0;
width: 0%;
height: 2px;
background: linear-gradient(
90deg,
hsla(var(--vbnGlow05HSL), 1),
hsla(var(--vbnGlow05HSL), 1),
hsla(var(--vbnGlow03HSL), 1));
box-shadow:
0 2px 05px 0px hsla(var(--vbnGlow05HSL), .6),
0 2px 15px 0px hsla(var(--vbnGlow05HSL), .6),
0 2px 25px 2px hsla(var(--vbnGlow03HSL), .6);
border-radius: 100vmax;
will-change: left, width;
transition: width .4s cubic-bezier(0.25, 0.46, 0.45, 0.94), opacity .26s ease-out;
}
#vbnLoaderBar[data-state="loading"] {
animation: vbnLoaderUnknown 2.4s infinite cubic-bezier(0.4, 0.0, 0.6, 1);
}
/* ========== ↓ Panel */
#vbnOptionsPanel {
--vbnHeightHead: 35px;
--vbnHeightRow: 32px;
--vbnRowPadding: 15px;
--vbnGap: 12px;
}
.vbnPanelBase {
pointer-events: auto;
opacity: 0;
will-change: opacity, transform;
padding: 20px;
border: var(--vbnOftenPanelBorderBase);
font-family: var(--vbnBaseFont);
color: var(--vbnBase06HEX);
background: hsla(var(--vbnBase00HSL-H), 60%, 6%, .8);
box-shadow: var(--vbnSurfaceShadow) hsla(var(--vbnAccentShadow), .8);
border-radius: var(--vbnSurfaceRadius);
backdrop-filter: var(--vbnPanelFilter);
transition: all .526s var(--vbnTransitionElastic), opacity .26s ease;
}
.vbnPanelBase.show { opacity: 1; transform: translate(0, -50%); }
.vbnPanelBase.hide { opacity: 0; transform: translate(120%, -50%); }
.vbnOptionBase {
z-index: var(--vbnPriority09);
overflow-y: auto;
display: flex;
flex-direction: column;
gap: var(--vbnGap);
width: calc(260px + 40px);
}
.vbnFixed {
position: fixed;
top: 50%;
right: var(--vbnSpaceAxialX);
transform: translate(120%, -50%);
}
.vbnRelative {
position: relative;
top: 20px;
right: 20px;
}
.vbnOptionBase h2 {
margin-top: 0;
margin: calc(var(--vbnGap) / 2) 0 calc(var(--vbnGap) / 2 + 5px) 0;
color: var(--vbnGlow04HEX);
font-size: 1.7em;
font-weight: var(--vbnTitleWeight);
text-align: center;
text-shadow: 0 0 5px var(--vbnGlow04HEX);
}
.vbnPanelGroup {
display: flex;
flex-direction: column;
gap: 0;
width: 100%;
}
/* ========== ↓ 功能模块 > 子功能样式 */
.vbnBodyRow, .vbnPanelGroup.Sub .vbnHeaderRow {
font-size: .82em;
font-weight: normal;
}
.vbnBodyRow, .vbnPanelGroup.Sub .vbnHeaderRow, .vbnPanelGroup.Sub .vbnFoldBox {
height: var(--vbnHeightRow);
background: hsla(var(--vbnBase00HSL), .4);
transition: background-color .26s, opacity 0.26s;
}
.vbnBodyRow:hover, .vbnPanelGroup.Sub .vbnHeaderRow:hover {
background: hsla(var(--vbnBase00HSL), .8);
}
.vbnPanelGroup.Sub { vbn { top: var(); }
.vbnGroupBody { margin: 0 0 0 calc(var(--vbnGap) - 2px); }
.vbnFoldBox {
opacity: .4;
width: calc(var(--vbnHeightRow) - 5px);
color: hsla(var(--vbnBase00HSL), .8);
background: transparent;
box-shadow: none;
margin: 0 0 0 calc(var(--vbnGap) - 28px);
}
.vbnHeaderRow { padding: 9px var(--vbnRowPadding); }
.vbnHeaderRow, .vbnFoldBox {
border-radius: var(--vbnUIRadius);
box-shadow: 0 10px 20px hsla(var(--vbnBase00HSL), .2);
}
}
/* ========== ↓ Header */
.vbnGroupHeader {
display: flex;
align-items: center;
width: 100%;
}
.vbnHeaderRow, .vbnFoldBox {
background: hsla(var(--vbnBase00HSL), .6);
box-shadow: 0 10px 20px hsla(var(--vbnBase00HSL), .4);
transition: background-color .26s;
}
.vbnHeaderRow:hover, .vbnFoldBox:hover { background: hsla(var(--vbnBase00HSL), .8); }
.vbnHeaderRow {
cursor: pointer;
padding: 5px var(--vbnRowPadding) 5px 5px;
height: var(--vbnHeightHead);
display: flex;
flex: 1 1 auto;
align-items: center;
justify-content: flex-start;
gap: 0;
font-size: .85em;
font-weight: var(--vbnTitleWeight);
border-radius: 0 var(--vbnUIRadius) var(--vbnUIRadius) 0;
}
.vbnHeaderRow > span {
flex-grow: 0;
margin-right: auto;
user-select: none;
}
.vbnFoldBox {
cursor: pointer;
flex: 0 0 auto;
width: calc(var(--vbnHeightHead) - 5px);
height: var(--vbnHeightHead);
font-size: 18px;
user-select: none;
transition: transform 0.4s ease;
display: flex;
align-items: center;
justify-content: center;
border-radius: var(--vbnUIRadius) 0 0 var(--vbnUIRadius);
}
.vbnArrow {
margin: -1px -4px 0 0;
font-size: 16px;
transform: rotate(0deg);
transition: transform .4s ease;
}
.vbnArrow.rotated { transform: rotate(90deg); }
/* ========== ↓ Body */
.vbnGroupBody {
display: flex;
flex-direction: column;
gap: calc(var(--vbnGap) / 2 - 1px);
opacity: 1;
height: auto;
transition: all .526s var(--vbnTransitionSmooth);
}
.vbnGroupBody.open { overflow: hidden; }
.vbnGroupBody.close { overflow: hidden; opacity: 0; height: 0 !important; }
.vbnBodyRow {
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
padding: 9px var(--vbnRowPadding);
margin: 0 0 0 calc(var(--vbnGap) - 2px);
border-radius: var(--vbnUIRadius);
}
.vbnBodyRow:first-of-type { margin: calc(var(--vbnGap) / 2) 0 0 calc(var(--vbnGap) - 2px); }
.vbnBodyRow:last-of-type { margin: 0 0 calc(var(--vbnGap) / 4) calc(var(--vbnGap) - 2px); }
/* ========== ↓ Other */
.vbnOptionBase input[type="checkbox"] {
cursor: pointer;
position: relative;
appearance: none;
width: .6em;
height: .6em;
margin: 0;
background: var(--vbnBase04HEX);
border: none;
border-radius: 50%;
transition: background-color .26s ease;
box-shadow: 0 0 2px hsla(0, 0%, 0%, .3);
}
.vbnOptionBase input[type="checkbox"].correct:checked {
background: var(--vbnStateCorrect);
box-shadow: 0 0 10px var(--vbnStateCorrect);
}
.vbnOptionBase input[type="checkbox"].warn:checked {
background: var(--vbnStateWarn);
box-shadow: 0 0 10px var(--vbnStateWarn);
}
.vbnOptionBase input[type="checkbox"].error:checked {
background: var(--vbnStateError);
box-shadow: 0 0 10px var(--vbnStateError);
}
/* ========== ↓ Other */
/* ========== ↓ ItemBlock */
.vbnItemBlock {
box-sizing: border-box;
position: relative;
padding: var(--vbnSpacePadding);
margin: var(--vbnSpaceMargin);
border: none;
width: 100%;
font-size: 12px;
background: #FFFFFF;
box-shadow: var(--vbnOftenSurfaceShadowBase);
border-radius: var(--vbnSurfaceRadius);
transition: var(--vbnOftenTransition);
}
.vbnItemBlock:hover {
z-index: var(--vbnPriority00);
box-shadow: inset 0 0 2px hsla(0, 0%, 92%, .6), var(--vbnOftenSurfaceShadowHover);
transform: var(--vbnSurfaceZoomIn);
}
/* ========== ↓ Button */
.vbnButtonBase {
cursor: pointer;
user-select: none;
border: var(--vbnUIBorder) var(--vbnAccentBorder);
font-size: 1em;
font-weight: var(--vbnTitleWeight);
color: var(--vbnBase00HEX);
background: var(--vbnAccentHEX);
box-shadow: var(--vbnUIShadow) var(--vbnAccentShadow);
border-radius: var(--vbnPanelRadius);
transition: transform .26s var(--vbnTransitionSoft);
}
.vbnButtonBase:hover { transform: var(--vbnSurfaceZoomIn); }
.vbnButtonBase:first-of-type { margin-top: calc(var(--vbnGap) - 2px); }
.vbnButtonBase.fill { cursor: pointer; }
.vbnButtonBase.outline { cursor: pointer; }
.vbnButtonBase.text { cursor: pointer; }
.vbnButtonBase.ICON { cursor: pointer; }
.vbnButtonBase.open {
border: none;
color: var(--vbnBase00HEX);
background: linear-gradient(
90deg,
var(--vbnGreen001),
var(--vbnBlue0001)
);
box-shadow:
inset 0 0 20px hsla(var(--vbnGlow06HSL), .6),
0 0 10px hsla(var(--vbnGlow04HSL), .4);
}
.vbnButtonBase.close {
border: none;
color: var(--vbnBase00HEX);
background: linear-gradient(
90deg,
var(--vbnGreen001),
var(--vbnBlue0001)
);
box-shadow:
inset 0 0 20px hsla(var(--vbnGlow06HSL), .6),
0 0 10px hsla(var(--vbnGlow04HSL), .4);
}
.vbnButtonFixed {
padding: 5px 10px;
width: var(--vbnButtonWidth);
height: var(--vbnButtonHeight);
}
.vbnButtonAdapt {
padding: 10px 0;
width: 100%;
}
/* ========== ↓ State */
.vbnCurrentRow::after {
content: "";
position: absolute;
top: 50%;
left: 1.2%;
transform: translateY(-50%);
height: 1.2em;
width: .26rem;
background: var(--vbnGlow01HEX);
box-shadow: 4px 0 14px 1px hsla(var(--vbnGlow01HSL), .92);
border-radius: 1em;
}
.vbnTipsInside {
position: absolute;
top: 2%;
left: 50%;
width: 80%;
padding: 5px 12px;
text-align: center;
font-size: 12px;
font-weight: var(--vbnTitleWeight);
color: var(--vbnBase00HEX);
background: var(--vbnAccentHEX);
border-radius: var(--vbnPanelRadius);
transform: translateX(-50%);
}
.vbnTipsHover {
pointer-events: none;
opacity: 0;
z-index: calc(var(--vbnPriority09) + 1);
position: fixed;
padding: 5px 15px;
width: max-content;
/* max-width: 260px; */
min-height: 12px;
border: var(--vbnUIBorder) hsla(var(--vbnAccentHSL), .2);
text-align: justify;
font-size: 12px;
line-height: 1.5;
color: var(--vbnGlow04HEX);
background: hsla(var(--vbnBase00HSL), .8);
box-shadow: var(--vbnUIShadow) hsla(var(--vbnBase00HSL), .4);
border-radius: calc(var(--vbnPanelRadius) - 2.6px);
transition: opacity .2s ease;
}
.vbnTipsHover.show { opacity: 1; }
.vbnTips {
z-index: var(--vbnPriority09);
position: fixed;
top: 2.26em;
left: 2em;
padding: .6em 1.26em;
border: 1.52px solid hsla(var(--vbnBase09HSL), .526);
font-size: 15px;
font-weight: 526;
line-height: 1.5;
color: hsla(var(--vbnBase00HSL), .8);
background: var(--vbnBase08HEX);
box-shadow:
var(--vbnTipsShadow-S) hsla(var(--vbnBase09HSL), .226),
var(--vbnTipsShadow-M) hsla(var(--vbnAccentHSL), .120),
var(--vbnTipsShadow-L) hsla(var(--vbnAccentHSL), .092);
border-radius: .92em;
animation: vbnSlideOut 2s cubic-bezier(0.25, 1.4, 0.5, 1) forwards;
transition: var(--vbnOftenTransition);
}
.vbnTips.remind {
background: var(--vbnBase09HEX);
box-shadow:
var(--vbnTipsShadow-S) hsla(var(--vbnBase09HSL), .226),
var(--vbnTipsShadow-M) hsla(var(--vbnAccentHSL), .120),
var(--vbnTipsShadow-L) hsla(var(--vbnAccentHSL), .092);
}
.vbnTips.correct {
background: var(--vbnBase09HEX);
box-shadow:
var(--vbnTipsShadow-S) hsla(var(--vbnBase09HSL), .226),
var(--vbnTipsShadow-M) hsla(var(--vbnAccentHSL), .120),
var(--vbnTipsShadow-L) hsla(var(--vbnAccentHSL), .092);
}
.vbnTips.warn {
background: var(--vbnStateWarn);
box-shadow:
var(--vbnTipsShadow-S) hsla(var(--vbnBase09HSL), .226),
var(--vbnTipsShadow-M) hsla(20, 85%, 55%, .120),
var(--vbnTipsShadow-L) hsla(20, 85%, 55%, .092);
}
.vbnTips.error {
background: var(--vbnStateError);
box-shadow:
var(--vbnTipsShadow-S) hsla(var(--vbnBase09HSL), .226),
var(--vbnTipsShadow-M) hsla(0, 85%, 55%, .120),
var(--vbnTipsShadow-L) hsla(0, 85%, 55%, .092);
}
/* ========== ↓ Link */
.vbnLink {
position: relative !important;
text-decoration: none !important;
}
.vbnLink::before, .vbnLink::after {
content: "" !important;
position: absolute !important;
top: calc(100% + 0px) !important;
left: 0 !important;
width: 100% !important;
border-bottom: dashed .0926em currentColor !important;
}
.vbnLink:hover::before, .vbnLink:hover::after {
border-bottom: solid .0926em currentColor !important;
}
/* ========== ↓ Load */
.vbnFadeInLoad {
opacity: 0;
transform: translateY(100px);
transition: opacity .5s var(--vbnTransitionSmooth), transform .9s var(--vbnTransitionSmooth);
}
.vbnFadeInLoad.loaded {
opacity: 1;
transform: translateY(0);
}
/* ========== ↓ Focal */
.vbnFocal {
--height: 2px;
--time: .526s;
--offset: -2px;
--base: var(--vbnAccentHEX);
--radius: var(--vbnBaseRadius);
--bezier: var(--vbnTransitionSoft);
position: relative;
width: max-content;
text-decoration: none;
}
.vbnFocal.CT::after {
content: "";
position: absolute;
left: 50%;
bottom: var(--offset);
width: 100%;
height: var(--height);
background: var(--base);
border-radius: var(--radius);
transform: translateX(-50%) scaleX(0);
transform-origin: center;
transition: transform var(--time) var(--bezier);
}
.vbnFocal.CT:hover::after { transform: translateX(-50%) scaleX(1);}
.vbnFocal.LR::after {
content: "";
position: absolute;
left: 0;
bottom: var(--offset);
width: 100%;
height: var(--height);
background: var(--base);
border-radius: var(--radius);
transform: scaleX(0);
transform-origin: left;
transition: transform var(--time) var(--bezier);
}
.vbnFocal.LR:hover::after { transform: scaleX(1); }
/* ========== ↓ Grid */
.vbnGridSolid {
background-attachment: fixed;
background-image:
linear-gradient(00deg, var(--vbnGrid-S) 1px, transparent 0),
linear-gradient(90deg, var(--vbnGrid-S) 1px, transparent 0),
linear-gradient(00deg, var(--vbnGrid-L) 1px, transparent 0),
linear-gradient(90deg, var(--vbnGrid-L) 1px, transparent 0);
background-size: 100px 100px, 100px 100px, 20px 20px, 20px 20px;
}
/* ========== ↓ Table */
.vbnTableBox {
display: flex;
justify-content: center;
padding: 15px;
}
.vbnTable {
overflow: hidden !important;
border-collapse: collapse !important;
background: transparent !important;
box-shadow:
0 0 0 1px hsla(0, 0%, 5%, .02),
0 2px 10px hsla(0, 0%, 0%, .04),
0 10px 10px hsla(0, 0%, 0%, .02) !important;
border-radius: var(--vbnSurfaceRadius) !important;
}
.vbnTable :is(thead) {
font-weight: var(--vbnTitleWeight) !important;
background: #FFF !important;
}
.vbnTable :is(tr):hover { background: #FAFAFA !important; }
/* ========== ↓ 首行 */
.vbnTable :is(tr):first-child :is(td):not(:first-child, :last-child) {
border-left: 1px solid #00000006 !important;
border-right: 1px solid #00000006 !important;
}
/* ========== ↓ 尾行 */
.vbnTable tbody tr:last-child :is(td) { border-bottom: none !important;}
/* ========== ↓ 含代码 */
.vbnTable :is(code) {
padding: 2px 5px !important;
font-family: var(--vbnCodeFont) !important;
color: var(--vbnCodeColor) !important;
background: #F2F2F2 !important;
border-radius: var(--vbnBaseRadius) !important;
}
/* ========== ↓ 单元格 */
.vbnTable :is(th),
.vbnTable :is(td) {
border-style: solid !important;
border-width: 0 0 1px 0 !important;
border-color: transparent transparent #FAFAFA transparent !important;
text-align: left !important;
}
.vbnTable :is(th)[style*="padding: 0px"],
.vbnTable :is(td):not([style*="padding"]) {
padding: 5px 10px !important;
}
.vbnTable :is(th) { color: #4D4D4D !important;}
.vbnTable :is(td) { color: #444 !important;}
`)
})();
(function VBN_GlobalCustom() {
'use strict';
// $ ================================================== ↓ Global
const vbnMatchURL = window.location.href;
const vbnMatchHost = window.location.hostname;
document.documentElement.classList.add('vbn');
// #region Config
const VBN_SITE_GROUP = {
AIGC: [
"*127.0.0.1:8188/*",
"*localhost:8188/*",
"*127.0.0.1:7860/*",
"*localhost:7860/*",
"*127.0.0.1:9222/*",
"*localhost:9222/*",
],
Chat: [ "*deepseek.com/*", "*chatgpt.com/*", ],
ProgDev: [ "*github.com/*", "*huggingface.co/*", ],
Manage: [ "*yuque.com/*", "*ticktick.com/*", "*dida365.com/*", "*workona.com/*", ],
Search: [ "*google.com/*", "*baidu.com/*", "*bing.com/*", ],
Media: [ "*youtube.com/*", "*bilibili.com/*", "*weibo.com/*", ],
Font: [ "*fonts.google.com/*", "*cp.baidu.com/*", ],
};
/**
* @type {Object}
* @property {boolean} debug - 全局调试 | 开启后控制台将输出 当前站点各功能的运行状态
* @property {Object} siteBlock - 站点阻塞 | 功能若与原始站点产生冲突 可在相应功能组内添加站点进行屏蔽 紧急阻塞
*/
const VBN_GLOBAL_CONFIG = {
debug: false,
siteBlock: {
Global: [ ],
Assign: [ ],
Micro: [ ],
},
};
// #endregion
// #region Modules
const VBN_GLOBAL_MODULES = {
Global: {
fold: false,
ScrollBar: {
feature: "原生滚动条样式 个性化",
match: { include: [ "*" ], exclude: [ ] },
},
LoaderBar: {
name: "顶部加载条",
feature: "全局顶部植入 加载状态条 => 进度条",
state: true,
default: true,
debug: false,
match: { include: [ "*" ], exclude: [ ] },
},
CustomICON: {
feature: "站点 ICO 替换 | 书签栏 > DeepSeek > HUA! 黑鲸",
},
FontStyle: {
feature: "字体样式 | 可去 FontStyle 重定义所需站点/变更应用已安装的某款字体",
},
Selection: {
feature: "原生鼠标选取样式 个性化",
match: { include: [ "*" ], exclude: [ "*yuque.com/*" ] },
},
},
Assign: {
fold: false,
Search: {
feature: " ",
},
Chat: {
fold: true,
DeepSeek: {
feature: "聊天窗格 宽度增加",
},
ChatGPT: {
feature: "聊天窗格 宽度增加",
},
},
ComfyUI: {
feature: "YOYOYO",
fold: true,
manager: { },
crystools: { },
rgthree: { },
},
YUQUE: {
fold: true,
vbnTable: {
feature: "表格样式",
},
vbnGrid: {
feature: "背景网格",
}
},
TickTick: {
feature: " ",
},
Youtube: {
feature: " ",
},
Bilibili: {
feature: " ",
},
NetDisk_Check: {
feature: " ",
match: { include: [ "*" ], exclude: [ ] },
},
},
Micro: {
fold: true,
},
};
// #endregion
// #region Basics
const VBN_GLOBAL_DEBUG = (() => {
const Prefix = "[==👽VBN==]";
const logRecord = Object.create(null);
const mapError = Object.create(null);
const mapTime = Object.create(null);
function logFormat({ icon, key, time, msg }) {
return `${Prefix}[${icon}][${time?.toFixed?.(1) || "-"}ms][${key}] | ${msg}`;
}
function logStore(key, msg) {
if (!logRecord[key]) logRecord[key] = [];
logRecord[key].push({ msg, time: Date.now() });
}
function log(key, msg = "DONE", time = 0) {
const icon = "🚀";
const text = logFormat({ icon, key, time, msg });
console.log(text);
logStore(key, text);
}
function warn(key, msg = "DEBUG", time = 0) {
const icon = "🛠️";
const text = logFormat({ icon, key, time, msg });
console.warn(text);
logStore(key, text);
errorMark(key, msg, false);
}
function error(key, msg = "ERROR", time = 0) {
const icon = "👾";
const text = logFormat({ icon, key, time, msg });
console.error(text);
logStore(key, text);
errorMark(key, msg, true);
}
function errorMark(key, msg = "Unknown", isFatal = true) {
const mod = VBN_GLOBAL_LOGIC.get(key);
if (!mod) return;
mod.error = isFatal;
mod.errorMSG = msg;
}
function infoTotal() {
const all = VBN_GLOBAL_LOGIC.getAllModules?.() || {};
for (const [key, mod] of Object.entries(all)) {
const icon = mod.error ? "👾" :
mod.debug ? "🛠️" :
mod.state ? "🚀" : "🏁";
const msg = mod.errorMSG || (mod.error ? "ERROR" : "DONE");
const time = mod.timeCost || 0;
console.log(logFormat({ icon, key, time, msg }));
}
}
return {
log,
warn,
error,
errorMark,
infoTotal
};
})();
// const VBN_GLOBAL_CACHE.valueStorage
// const VBN_VALUE_STORE = (() => {
const VBN_GLOBAL_CACHE = (() => {
const regex = new Map();
const group = new Map();
const chain = new Map();
const match = new Map();
const value = new Map();
function clear(type, key) {
if (type && key) {
if (VBN_GLOBAL_CACHE.hasOwnProperty(type) && VBN_GLOBAL_CACHE[type] instanceof Map) {
VBN_GLOBAL_CACHE[type].delete(key);
}
} else if (type) {
if (VBN_GLOBAL_CACHE[type]) {
VBN_GLOBAL_CACHE[type].clear();
}
} else {
regex.clear();
group.clear();
chain.clear();
match.clear();
value.clear();
}
}
return { regex, group, chain, match, value, clear, };
})();
const VBN_MATCH_RULE = (() => {
function toRegex(pattern) {
if (VBN_GLOBAL_CACHE.regex.has(pattern)) return VBN_GLOBAL_CACHE.regex.get(pattern);
const escaped = pattern
.replace(/([.+^${}()|[\]\\])/g, '\\$1')
.replace(/\*/g, '.*')
.replace(/^https?:/, 'https?:');
const regex = new RegExp('^' + escaped + '$', 'i');
VBN_GLOBAL_CACHE.regex.set(pattern, regex);
return regex;
}
function check(pattern, target) {
return toRegex(pattern).test(target);
}
function match({ include = [], exclude = [], url = vbnMatchURL } = {}) {
if (include.length === 1 && include[0] === "*" && exclude.length === 0) {
return true;
}
return (
include.some(rule => check(rule, url)) &&
!exclude.some(rule => check(rule, url))
);
}
return { toRegex, check, match };
})();
const VBN_MODULE_STORE = (() => {
const flat = {};
const tree = {};
function moduleBase(key, raw, parentKey = null) {
return {
key,
parent: parentKey ?? null,
fold: raw.fold ?? false,
name: " ",
feature: " ",
state: true,
default: true,
debug: false,
match: raw.match ?? {},
...raw,
};
}
for (const [groupName, groupData] of Object.entries(VBN_GLOBAL_MODULES)) {
const groupNode = {};
const groupFold = groupData.fold ?? false;
for (const [modKey, modRaw] of Object.entries(groupData)) {
if (modKey === "fold") continue;
const mod = moduleBase(modKey, modRaw);
flat[modKey] = mod;
groupNode[modKey] = mod;
for (const [subKey, subRaw] of Object.entries(modRaw)) {
if (
["match", "state", "default", "feature", "debug", "name", "fold"].includes(subKey)
|| typeof subRaw !== "object"
) continue;
const subMod = moduleBase(subKey, subRaw, modKey);
flat[subKey] = subMod;
if (!groupNode[modKey].subs) groupNode[modKey].subs = {};
groupNode[modKey].subs[subKey] = subMod;
}
}
tree[groupName] = {
...groupNode,
fold: groupFold,
};
}
function getGroup(key) {
if (VBN_GLOBAL_CACHE.group.has(key)) return VBN_GLOBAL_CACHE.group.get(key);
for (const [groupName, modules] of Object.entries(tree)) {
if (key in modules) {
VBN_GLOBAL_CACHE.group.set(key, groupName);
return groupName;
}
for (const mod of Object.values(modules)) {
if (mod && mod.subs && key in mod.subs) {
VBN_GLOBAL_CACHE.group.set(key, groupName);
return groupName;
}
}
}
VBN_GLOBAL_CACHE.group.set(key, null);
return null;
}
function getChain(key, { includeGroup = false } = {}) {
if (VBN_GLOBAL_CACHE.chain.has(key)) return VBN_GLOBAL_CACHE.chain.get(key);
const chain = [];
let current = flat[key];
while (current) {
chain.unshift(current.key);
current = current.parent ? flat[current.parent] : null;
}
if (includeGroup) {
const group = getGroup(key);
if (group) chain.unshift(group);
}
VBN_GLOBAL_CACHE.chain.set(key, chain);
return chain;
}
return {
get: key => flat[key],
getFlat: () => flat,
getTree: () => tree,
getGroup,
getChain,
};
})();
const VBN_ACTIVATION = (() => {
const defaultMatch = { include: ["*"], exclude: [] };
function findMatch(mod) {
if (!mod) return defaultMatch;
if (VBN_GLOBAL_CACHE.match.has(mod.key)) return VBN_GLOBAL_CACHE.match.get(mod.key);
let result;
if (mod.match?.include?.length || mod.match?.exclude?.length) {
result = mod.match;
} else if (mod.parent) {
result = findMatch(VBN_MODULE_STORE.get(mod.parent));
} else {
result = defaultMatch;
}
VBN_GLOBAL_CACHE.match.set(mod.key, result);
return result;
}
function getValue(key, fallback = true) {
if (VBN_GLOBAL_CACHE.value.has(key)) return VBN_GLOBAL_CACHE.value.get(key);
const val = GM_getValue(key, fallback);
VBN_GLOBAL_CACHE.value.set(key, val);
return val;
}
function clearCache(key) {
if (key) {
VBN_GLOBAL_CACHE.value.delete(key);
VBN_GLOBAL_CACHE.match.delete(key);
} else {
VBN_GLOBAL_CACHE.value.clear();
VBN_GLOBAL_CACHE.match.clear();
}
}
function isBlocked(module, url = vbnMatchURL) {
const blockList = VBN_GLOBAL_CONFIG.siteBlock?.[module.group];
if (!blockList?.length) return false;
return blockList.some(pattern => VBN_MATCH_RULE.check(pattern, url));
}
function isActive(module, options = {}) {
const url = options.url ?? vbnMatchURL;
const matchRule = options.matchSubjoin || findMatch(module);
const matched = VBN_MATCH_RULE.match({
include: matchRule.include,
exclude: matchRule.exclude,
url
});
if (!matched) return false;
const keyChain = VBN_MODULE_STORE.getChain(module.key, { includeGroup: true });
return keyChain.every(key => getValue(key, true));
}
return {
isActive,
isBlocked,
clearCache
};
})();
const VBN_GLOBAL_LOGIC = (() => {
let hasPreheated = false;
function preheat() {
if (hasPreheated) return;
hasPreheated = true;
const all = VBN_MODULE_STORE.getFlat();
for (const key in all) {
const mod = all[key];
VBN_MODULE_STORE.getGroup(key);
VBN_MODULE_STORE.getChain(key, { includeGroup: true });
VBN_ACTIVATION.isActive(mod);
}
}
function activate(key, rule, logic) {
let options = {};
if (typeof rule === "function") {
logic = rule;
} else if (typeof rule === "object") {
options = rule;
}
const mod = VBN_MODULE_STORE.get(key);
if (!mod || mod.state === false) return false;
if (VBN_ACTIVATION.isBlocked(mod, options.url)) {
if (VBN_GLOBAL_CONFIG.debug)
VBN_GLOBAL_DEBUG.warn(key, `siteBlock - ${VBN_MODULE_STORE.getGroup(key)}`);
return false;
}
const active = VBN_ACTIVATION.isActive(mod, options);
if (typeof logic !== "function") return active;
if (active) {
const start = performance.now();
try {
logic();
mod.timeCost = performance.now() - start;
if (VBN_GLOBAL_CONFIG.debug || mod.debug)
VBN_GLOBAL_DEBUG.log(key, "DONE", mod.timeCost);
} catch (e) {
mod.timeCost = performance.now() - start;
VBN_GLOBAL_DEBUG.error(key, e?.message || "ERROR", mod.timeCost);
}
}
return active;
}
return {
get: VBN_MODULE_STORE.get,
getAllModules: VBN_MODULE_STORE.getFlat,
activate,
preheat,
};
})();
// #endregion
// #region Manager
const VBN_OBSERVER_CENTER = (() => {
const observerAnonym = new Set();
const observerKey = new Map();
let observerTarget = new WeakMap();
function observe(target, options = { childList: true, subtree: true }, callback, config = {}) {
if (!(target instanceof Node)) return null;
if (config.preventDuplicate && observerTarget.has(target)) return null;
const observerBase = new MutationObserver((mutations, observerInstance) => {
try {
callback(mutations, observerInstance);
} catch (err) {
document.documentElement.classList.add("vbnTips", "correct");
}
if (config.autoDisconnect || (typeof config.onceWhen === "function" && config.onceWhen(mutations))) {
disconnectTarget(target, observerBase);
}
});
observerBase.observe(target, options);
observerAnonym.add(observerBase);
_addToTargetMap(target, observerBase);
return observerBase;
}
function observeWithKey(key, target, options = { childList: true, subtree: true }, callback, config = {}) {
if (!key || typeof key !== "string" || !(target instanceof Node)) return null;
if (observerKey.has(key)) {
observerKey.get(key).disconnect();
observerKey.delete(key);
}
const observerBase = new MutationObserver((mutations, observerInstance) => {
try {
callback(mutations, observerInstance);
} catch (err) {
document.documentElement.classList.add("vbnTips", "error");
}
if (config.autoDisconnect || (typeof config.onceWhen === "function" && config.onceWhen(mutations))) {
disconnectKey(key);
_removeFromTargetMap(target, observerBase);
}
});
observerBase.observe(target, options);
observerKey.set(key, observerBase);
_addToTargetMap(target, observerBase);
return observerBase;
}
function disconnect(target) {
const observerSet = observerTarget.get(target);
if (observerSet) {
observerSet.forEach(observerBase => {
observerBase.disconnect();
observerAnonym.delete(observerBase);
});
observerTarget.delete(target);
}
}
function disconnectTarget(target, observerBase) {
observerBase.disconnect();
observerAnonym.delete(observerBase);
_removeFromTargetMap(target, observerBase);
}
function disconnectKey(key) {
const observerBase = observerKey.get(key);
if (observerBase) {
observerBase.disconnect();
observerKey.delete(key);
}
}
function disconnectAll() {
observerAnonym.forEach(observerBase => observerBase.disconnect());
observerKey.forEach(observerBase => observerBase.disconnect());
observerAnonym.clear();
observerKey.clear();
observerTarget = new WeakMap();
}
function hasKey(key) {
return observerKey.has(key);
}
function getActiveCount() {
let totalTargeted = 0;
observerTarget.forEach(set => totalTargeted += set.size);
return {
anonymous: observerAnonym.size,
keyed: observerKey.size,
byTarget: totalTargeted
};
}
function _addToTargetMap(target, observerBase) {
if (!observerTarget.has(target)) {
observerTarget.set(target, new Set());
}
observerTarget.get(target).add(observerBase);
}
function _removeFromTargetMap(target, observerBase) {
const set = observerTarget.get(target);
if (set) {
set.delete(observerBase);
if (set.size === 0) observerTarget.delete(target);
}
}
return {
observe,
observeWithKey,
disconnect,
disconnectKey,
disconnectAll,
hasKey,
getActiveCount
};
})();
// #endregion
// #region Builder
const VBN_GLOBAL_DOM = (() => {
let instance = null;
const callbacks = [];
function init() {
if (instance) return;
const div = document.createElement('div');
div.id = 'vbnDOM';
document.body.insertBefore(div, document.body.firstChild);
instance = div;
}
function ensureReady(callback) {
if (callback) callbacks.push(callback);
if (instance) {
while (callbacks.length) {
try { callbacks.shift()(instance); }
catch (e) { console.error(e); }
}
return instance;
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', () => {
init();
ensureReady();
});
} else {
init();
ensureReady();
}
}
return {
load(callback) {
if (callback) {
ensureReady(callback);
} else {
return new Promise(resolve => ensureReady(resolve));
}
},
get() {
return instance || document.querySelector('#vbnDOM');
}
};
})();
// #endregion
// #region Utils
/**
* 类名添加 | 在定位的 DOM 结构上 添加自定义类名 「支持检测链接已访问后添加」
* @param {Object} options
* @param {number} [options.delay=0] - 进入页面后 延迟多久执行 「毫秒」
* @param {string|string[]} options.target - 需添加类名的目标DOM 「选择器」 「支持多个」
* @param {string|string[]} options.subjoin - 需添加的类名 「支持多个」
* @param {boolean} [options.trace=false] - 是否启用 已访问的链接痕迹
* @param {string} [options.traceQuery="a[href]"] - 需查询的链接类型 「选择器」
* @param {string[]|function} [options.traceJudge] - 增强判定 检测链接中需包含的关键词
*/
const VBN_ADD_CLASS = (() => {
const storageKey = 'vbnVisitedLinks';
const attrMark = 'data-vbn-trace';
function apply({
delay = 0,
target,
subjoin,
trace = false,
traceQuery = "a[href]",
traceJudge,
}) {
const packSelector = Array.isArray(target) ? target : [target];
const packClass = Array.isArray(subjoin) ? subjoin : [subjoin];
const visitedSet = new Set(JSON.parse(localStorage.getItem(storageKey) || '[]'));
const observerKey = `subjoin_${packSelector.join('_')}_${packClass.join('_')}`;
function defaultShouldApply(el) {
const links = el.querySelectorAll(traceQuery);
return [...links].some(link => {
const href = link.getAttribute("href");
if (!href) return false;
const isTraceTarget =
typeof traceJudge === "function"
? traceJudge(href)
: Array.isArray(traceJudge)
? traceJudge.every(keyword => href.includes(keyword))
: true;
return isTraceTarget && visitedSet.has(href);
});
}
function applyClass(el) {
packClass.forEach(cls => {
if (!el.classList.contains(cls)) {
el.classList.add(cls);
}
});
el.setAttribute(attrMark, "true");
}
function processDOM() {
packSelector.forEach(sel => {
document.querySelectorAll(sel).forEach(el => {
if (el.hasAttribute(attrMark)) return;
if (trace) {
if (defaultShouldApply(el)) applyClass(el);
} else {
applyClass(el);
}
});
});
}
function setupClickTracking() {
if (!trace || window._VBN_CLICK_TRACK_INITED) return;
window._VBN_CLICK_TRACK_INITED = true;
document.body.addEventListener("click", e => {
const anchor = e.target.closest(traceQuery);
if (!anchor) return;
const href = anchor.getAttribute("href");
if (!href) return;
const isTraceTarget =
typeof traceJudge === "function"
? traceJudge(href)
: Array.isArray(traceJudge)
? traceJudge.every(keyword => href.includes(keyword))
: true;
if (!isTraceTarget) return;
visitedSet.add(href);
localStorage.setItem(storageKey, JSON.stringify([...visitedSet]));
packSelector.forEach(sel => {
const el = anchor.closest(sel);
if (el) applyClass(el);
});
});
}
function startObserve() {
processDOM();
setupClickTracking();
VBN_OBSERVER_CENTER.observeWithKey(
observerKey,
document.body,
{ childList: true, subtree: true },
processDOM,
{ preventDuplicate: true, autoDisconnect: false }
);
}
if (delay > 0) setTimeout(startObserve, delay);
else startObserve();
}
return { apply };
})();
/**
* 自动执行 | 进入页面后 自动执行一系列操作 「最多可支持10个步骤」
* @param {Object} options
* @param {number} [options.delay=200] - 延迟 起始执行 「毫秒」
* @param {number} [options.delayStep=20] - 延迟 每个执行步骤间 「毫秒」
* @param {boolean} [options.backstage=false] - 后台执行 页面未激活/未在前台时 是否执行
* @param {boolean} [options.strict=false] - 严格模式 若某步骤执行失败 是否中断后续步骤
* @param {boolean} [options.debug=false] - 调试输出
* @param {Object} [options.step1.step10] - 定义每个步骤的目标及操作类型
* - target:目标选择器
* - action:执行类型 "click" | "focus" | "hover"
*/
const VBN_AUTO_EXECUTE = (() => {
const maxAutoStep = 10;
const moduleMark = "AUTO_EXECUTE";
function runAction(el, action = "click") {
if (!el) return false;
switch (action) {
case "click": el.click(); break;
case "focus": el.focus(); break;
case "hover":
const event = new MouseEvent("mouseover", { bubbles: true });
el.dispatchEvent(event);
break;
}
return true;
}
function apply(options = {}) {
const {
delay = 200,
delayStep = 20,
backstage = false,
strict = false,
debug = false
} = options;
const steps = [];
for (let i = 1; i <= maxAutoStep; i++) {
const key = `step${i}`;
if (options[key]) steps.push(options[key]);
}
if (!steps.length) return;
let executed = false;
const run = () => {
if (executed) return;
executed = true;
let shouldBreak = false;
setTimeout(() => {
steps.forEach((step, i) => {
const { target, action = "click" } = step;
const delayEach = delayStep * i;
setTimeout(() => {
if (shouldBreak) return;
try {
const el = document.querySelector(target);
if (el) {
runAction(el, action);
VBN_GLOBAL_DEBUG.log(moduleMark, `Step${i + 1} ✅ ${action} - ${target}`, { debug });
} else {
VBN_GLOBAL_DEBUG.warn(moduleMark, `Step${i + 1} ❓ None - ${target}`, { debug });
if (strict) {
shouldBreak = true;
VBN_GLOBAL_DEBUG.error(moduleMark, `Step${i + 1} ❌ Break`, { debug });
}
}
} catch (e) {
VBN_GLOBAL_DEBUG.error(moduleMark, `Step${i + 1} ❌ Error - ${e.message}`, { debug });
}
}, delayEach);
});
}, delay);
};
const tryRun = () => {
if (executed) return;
if (!backstage && document.visibilityState !== "visible") return;
run();
};
document.addEventListener("DOMContentLoaded", tryRun);
document.addEventListener("visibilitychange", tryRun);
}
return { apply };
})();
/**
* 自动加载 | 支持两种模式 无限滚动加载/每次加载多页
* @param {Object} options
* @param {boolean} [options.loadInfinite=false] - 无限滚动加载 是否启用
* @param {number} [options.loadPage=9] - 加载页数 「仅在非无限滚动模式下生效」
* @param {string} [options.itemTarget="#container .c-container"] - 内容所在容器 「父选择器」
* @param {string|HTMLElement} [options.itemWrapper="#container"] - 将新加载内容插入至何处 「选择器」
* @param {string} [options.buttonPrev=".page-prev"] - 上一页按钮 「选择器」
* @param {string} [options.buttonNext=".page-next"] - 下一页按钮 「选择器」
* @param {boolean} [options.fragment=false] - 统一加载 是否启用 「加载每页的完整内容后统一插入」
* @param {boolean} [options.throttle=true] - 动态加载 是否启用 「可防止性能及其他问题」
* @param {number} [options.throttleBase=10] - 动态加载 延迟 基础
* @param {number} [options.throttleJitter=50] - 动态加载 延迟 随机波动
*/
const VBN_AUTO_LOAD = (() => {
function apply({
loadInfinite = false,
loadPage = 9,
itemTarget = "#container .c-container",
itemWrapper = "#container",
buttonPrev = ".page-prev",
buttonNext = ".page-next",
fragment = false,
throttle = true,
throttleBase = 10,
throttleJitter = 50,
} = {}) {
const currentPage = getCurrentPage();
const wrapperEl = typeof itemWrapper === "string"
? document.querySelector(itemWrapper)
: itemWrapper;
if (!wrapperEl) return;
let loading = false;
let loadedPage = currentPage;
// 节流加载单页函数
function loadSinglePage(pageNum) {
return new Promise(resolve => {
setTimeout(() => {
$.get(buildPageUrl(pageNum), html => {
const temp = document.createElement("div");
temp.innerHTML = html;
const items = temp.querySelectorAll(itemTarget);
const mount = fragment
? document.createDocumentFragment()
: wrapperEl;
items.forEach(el => {
el.classList.add("vbnFadeInLoad");
mount.appendChild(el);
});
if (fragment) wrapperEl.appendChild(mount);
requestAnimationFrame(() => {
wrapperEl.querySelectorAll(".vbnFadeInLoad:not(.loaded)").forEach(el => {
el.classList.add("loaded");
});
});
resolve();
});
}, throttle ? (pageNum * throttleBase + Math.random() * throttleJitter) : 0);
});
}
// 非无限滚动 按页数加载
if (!loadInfinite) {
const nextBtn = document.querySelector(buttonNext);
if (nextBtn) {
nextBtn.href = buildPageUrl(currentPage + loadPage + 1);
nextBtn.textContent = `Next ${loadPage + 1}`;
}
const promises = [];
for (let i = 1; i <= loadPage; i++) {
const pageNum = currentPage + i;
promises.push(loadSinglePage(pageNum));
}
return Promise.all(promises);
}
// 无限滚动加载
const observer = new IntersectionObserver(entries => {
const entry = entries[0];
if (!entry.isIntersecting || loading) return;
loading = true;
loadedPage += 1;
observer.unobserve(entry.target);
loadSinglePage(loadedPage).then(() => {
const url = new URL(location.href);
url.searchParams.set("page", loadedPage);
history.replaceState(null, "", url.toString());
observeLastItem();
}).finally(() => {
loading = false;
});
}, {
rootMargin: "500px"
});
function observeLastItem() {
const items = wrapperEl.querySelectorAll(itemTarget);
const lastItem = items[items.length - 1];
if (lastItem) observer.observe(lastItem);
}
observeLastItem();
}
function getCurrentPage() {
const match = location.href.match(/page=(\d+)/);
return match ? parseInt(match[1]) : 1;
}
function buildPageUrl(page) {
const url = new URL(location.href);
url.searchParams.set("page", page);
return url.toString();
}
return { apply };
})();
// #endregion
// #region Derive
const VBN = {
SITE: VBN_SITE_GROUP,
CONFIG: VBN_GLOBAL_CONFIG,
MODULE: VBN_GLOBAL_MODULES,
DEBUG: VBN_GLOBAL_DEBUG,
CACHE: VBN_GLOBAL_CACHE,
MATCH: VBN_MATCH_RULE,
STORE: VBN_MODULE_STORE,
ACTIVATION: VBN_ACTIVATION,
LOGIC: VBN_GLOBAL_LOGIC,
OBSERVER: VBN_OBSERVER_CENTER,
DOM: VBN_GLOBAL_DOM,
CLASS: VBN_ADD_CLASS,
EXECUTE: VBN_AUTO_EXECUTE,
LOAD: VBN_AUTO_LOAD,
};
VBN.LOGIC.preheat();
// #endregion
// #region Options
(function VBN_Options() {
const pendingChanges = {};
const hoverTimeoutMap = new WeakMap();
const hoverTipMap = new WeakMap();
const easterEggAttachedSet = new WeakSet();
function showTip(msg, type = "", timeout = 4126) {
const tip = document.createElement("div");
tip.className = `vbnTips${type ? " " + type : ""}`;
tip.textContent = msg;
VBN_GLOBAL_DOM.load(dom => {
dom.appendChild(tip);
setTimeout(() => tip.remove(), timeout);
});
}
function createFoldAnimation(container, body, arrow, foldKey, initiallyFolded) {
let folded = initiallyFolded;
const toggleFold = () => {
const isCollapsed = folded;
body.classList.add("open");
if (isCollapsed) {
body.classList.remove("close");
const scrollHeight = body.scrollHeight + "px";
body.style.height = "0px";
requestAnimationFrame(() => {
body.style.height = scrollHeight;
});
body.addEventListener("transitionend", function onEnd() {
body.style.height = "auto";
body.classList.remove("open");
body.removeEventListener("transitionend", onEnd);
}, { once: true });
arrow.classList.add("rotated");
GM_setValue(foldKey, false);
folded = false;
} else {
const height = body.scrollHeight + "px";
body.style.height = height;
requestAnimationFrame(() => {
body.style.height = "0px";
});
setTimeout(() => {
body.classList.add("close");
body.classList.remove("open");
body.style.height = "auto";
}, 226);
arrow.classList.remove("rotated");
GM_setValue(foldKey, true);
folded = true;
}
};
if (folded) {
body.classList.add("close");
body.style.height = "0px";
arrow.classList.remove("rotated");
} else {
body.style.height = "auto";
arrow.classList.add("rotated");
}
container.addEventListener("click", e => {
e.stopPropagation();
toggleFold();
});
}
function attachHoverTip(element, text, onceOnly = false, afterShow = () => {}) {
if (!text || text.trim() === "") return;
const onEnter = e => {
const timeout = setTimeout(() => {
const tip = document.createElement("div");
tip.className = "vbnTipsHover";
tip.textContent = text;
document.body.appendChild(tip);
tip.classList.add("show");
const { clientX: x, clientY: y } = e;
const { offsetWidth: w, offsetHeight: h } = tip;
tip.style.left = `${Math.max(20, Math.min(x - w / 2, window.innerWidth - w - 20))}px`;
tip.style.top = `${Math.max(20, y - h - 20)}px`;
hoverTipMap.set(element, tip);
if (typeof afterShow === "function") afterShow();
}, 500);
hoverTimeoutMap.set(element, timeout);
};
const onLeave = () => {
const timeout = hoverTimeoutMap.get(element);
if (typeof timeout === "number") {
clearTimeout(timeout);
hoverTimeoutMap.delete(element);
}
const tip = hoverTipMap.get(element);
if (tip) {
tip.remove();
hoverTipMap.delete(element);
}
if (onceOnly) {
element.removeEventListener("mouseenter", onEnter);
element.removeEventListener("mouseleave", onLeave);
}
};
element.addEventListener("mouseenter", onEnter);
element.addEventListener("mouseleave", onLeave);
}
function attachEasterEggTip(toggleElement) {
if (easterEggAttachedSet.has(toggleElement)) return;
const shownCount = GM_getValue("vbn_EasterEgg_Shown_Count", 0);
if (shownCount < 2) {
const onceOnly = shownCount >= 1;
attachHoverTip(toggleElement, "HEIHEI 彩蛋 | ClickClick", onceOnly, () => {
GM_setValue("vbn_EasterEgg_Shown_Count", shownCount + 1);
});
easterEggAttachedSet.add(toggleElement);
}
}
function createToggleElement(key, value, enabled, meta) {
const row = document.createElement("label");
row.className = "vbnBodyRow";
row.style.opacity = enabled ? 0.9 : 0.4;
const span = document.createElement("span");
span.textContent = key;
span.style.userSelect = "none";
const toggle = document.createElement("input");
toggle.type = "checkbox";
toggle.checked = value;
toggle.id = `vbnChild_${key}`;
toggle.disabled = !enabled;
toggle.classList.add("vbnStatusDot");
if (meta.error) toggle.classList.add("error");
else if (meta.debug) toggle.classList.add("warn");
else if (toggle.checked) toggle.classList.add("correct");
toggle.addEventListener("change", () => {
pendingChanges[key] = toggle.checked;
toggle.classList.toggle("correct", toggle.checked);
});
row.appendChild(span);
row.appendChild(toggle);
const hoverText = meta.error ? meta.errorMSG : (meta.feature || "");
if (hoverText) attachHoverTip(row, hoverText);
return { row, toggle };
}
function renderModuleEntry(modKey, mod, groupBody, groupEnabled) {
if (modKey === "fold" || typeof mod.state !== "boolean") return;
const currentVal = Boolean(GM_getValue(modKey, mod.default ?? true));
const foldedKey = `vbnFold_${modKey}`;
const foldedRaw = GM_getValue(foldedKey, null);
const folded = foldedRaw === null ? !!mod.fold : (foldedRaw === true || foldedRaw === "true");
if (mod.subs || mod.fold) {
const container = document.createElement("div");
container.className = "vbnPanelGroup Sub";
const header = document.createElement("div");
header.className = "vbnGroupHeader";
const toggleSubs = document.createElement("div");
toggleSubs.className = "vbnFoldBox";
toggleSubs.style.cursor = "pointer";
attachEasterEggTip(toggleSubs);
const arrow = document.createElement("div");
arrow.className = "vbnArrow";
arrow.textContent = "›";
if (!folded) arrow.classList.add("rotated");
toggleSubs.appendChild(arrow);
const label = document.createElement("label");
label.className = "vbnHeaderRow";
const span = document.createElement("span");
span.textContent = modKey;
span.style.marginRight = "auto";
span.style.userSelect = "none";
const toggle = document.createElement("input");
toggle.type = "checkbox";
toggle.checked = currentVal;
toggle.id = `vbnChild_${modKey}`;
toggle.disabled = !groupEnabled;
toggle.classList.add("vbnStatusDot");
label.style.opacity = groupEnabled && currentVal ? 0.9 : 0.4;
if (mod.error) toggle.classList.add("error");
else if (mod.debug) toggle.classList.add("warn");
else if (toggle.checked) toggle.classList.add("correct");
toggle.addEventListener("change", () => {
pendingChanges[modKey] = toggle.checked;
toggle.classList.toggle("correct", toggle.checked);
label.style.opacity = groupEnabled && toggle.checked ? 0.9 : 0.4;
if (mod.subs) {
for (const [subKey, subMod] of Object.entries(mod.subs)) {
const subCheckbox = document.querySelector(`#vbnChild_${subKey}`);
if (subCheckbox) {
subCheckbox.disabled = !toggle.checked;
const isChecked = subCheckbox.checked;
const parent = subCheckbox.closest(".vbnBodyRow");
if (parent) {
parent.style.opacity = toggle.checked && isChecked ? 0.9 : 0.4;
}
}
}
}
});
label.appendChild(span);
label.appendChild(toggle);
header.appendChild(toggleSubs);
header.appendChild(label);
const hoverText = mod.error ? mod.errorMSG : (mod.feature || "");
if (hoverText) attachHoverTip(header, hoverText);
const body = document.createElement("div");
body.className = "vbnGroupBody";
container.appendChild(header);
container.appendChild(body);
createFoldAnimation(toggleSubs, body, arrow, foldedKey, folded);
if (mod.subs) {
for (const [subKey, subMod] of Object.entries(mod.subs)) {
if (typeof subMod.state !== "boolean") continue;
const curVal = Boolean(GM_getValue(subKey, subMod.default ?? true));
const enabled = groupEnabled && currentVal;
const { row } = createToggleElement(subKey, curVal, enabled, subMod);
row.style.opacity = enabled && curVal ? 0.9 : 0.4;
body.appendChild(row);
}
}
groupBody.appendChild(container);
}
else {
const { row } = createToggleElement(modKey, currentVal, groupEnabled, mod);
groupBody.appendChild(row);
}
}
function onGroupToggleChange(groupKey, groupData, groupToggle) {
pendingChanges[groupKey] = groupToggle.checked;
groupToggle.classList.toggle("correct", groupToggle.checked);
for (const [modKey, mod] of Object.entries(groupData)) {
if (modKey === "fold") continue;
const allKeys = [modKey];
if (mod.subs) allKeys.push(...Object.keys(mod.subs));
allKeys.forEach(k => {
const checkbox = document.querySelector(`#vbnChild_${k}`);
if (checkbox) {
checkbox.disabled = !groupToggle.checked;
const isEnabled = groupToggle.checked;
const isChecked = checkbox.checked;
const parent = checkbox.closest(".vbnBodyRow, .vbnHeaderRow");
if (parent) parent.style.opacity = isEnabled && isChecked ? 0.9 : 0.4;
}
});
}
}
function buildPanel() {
if (document.querySelector("#vbnOptionsPanel")) return;
const panel = document.createElement("div");
panel.id = "vbnOptionsPanel";
panel.className = "vbnPanelBase vbnOptionBase vbnFixed";
const title = document.createElement("h2");
title.textContent = "Options";
panel.appendChild(title);
const allModules = VBN_MODULE_STORE.getTree();
for (const [groupName, groupData] of Object.entries(allModules)) {
const groupKey = groupName;
const groupEnabled = GM_getValue(groupKey, true);
const groupContainer = document.createElement("div");
groupContainer.className = "vbnPanelGroup";
const groupHeaderWrapper = document.createElement("div");
groupHeaderWrapper.className = "vbnGroupHeader";
const arrowBox = document.createElement("div");
arrowBox.className = "vbnFoldBox";
const toggleIcon = document.createElement("div");
toggleIcon.textContent = "›";
toggleIcon.className = "vbnArrow";
const foldedRaw = GM_getValue(`vbnFold_${groupKey}`, null);
const folded = foldedRaw === null ? !!groupData.fold : (foldedRaw === true || foldedRaw === "true");
arrowBox.appendChild(toggleIcon);
const groupHeader = document.createElement("label");
groupHeader.className = "vbnHeaderRow";
const groupTitle = document.createElement("span");
groupTitle.textContent = groupName;
groupTitle.style.marginRight = "auto";
const groupToggle = document.createElement("input");
groupToggle.type = "checkbox";
groupToggle.checked = groupEnabled;
if (groupEnabled) groupToggle.classList.add("correct");
groupHeader.appendChild(groupTitle);
groupHeader.appendChild(groupToggle);
groupHeaderWrapper.appendChild(arrowBox);
groupHeaderWrapper.appendChild(groupHeader);
groupContainer.appendChild(groupHeaderWrapper);
const groupBody = document.createElement("div");
groupBody.className = "vbnGroupBody";
groupContainer.appendChild(groupBody);
createFoldAnimation(arrowBox, groupBody, toggleIcon, `vbnFold_${groupKey}`, folded);
groupToggle.addEventListener("change", () => {
onGroupToggleChange(groupKey, groupData, groupToggle);
});
for (const [modKey, mod] of Object.entries(groupData)) {
if (modKey === "fold") continue;
renderModuleEntry(modKey, mod, groupBody, groupEnabled);
}
panel.appendChild(groupContainer);
}
const applyBtn = document.createElement("button");
applyBtn.textContent = "Apply";
applyBtn.className = "vbnButtonBase vbnButtonAdapt open";
applyBtn.addEventListener("click", () => {
for (const [key, value] of Object.entries(pendingChanges)) {
GM_setValue(key, !!value);
}
showTip("✔ 已应用", "correct");
setTimeout(() => location.reload(), 260); // 应用后 刷新页面的延迟
});
const resetBtn = document.createElement("button");
resetBtn.textContent = "Reset";
resetBtn.className = "vbnButtonBase vbnButtonAdapt close";
resetBtn.addEventListener("click", () => {
const allModules = VBN_MODULE_STORE.getTree();
for (const [groupKey, groupData] of Object.entries(allModules)) {
GM_setValue(groupKey, true); // 模块组默认开启
for (const [modKey, mod] of Object.entries(groupData)) {
if (modKey === "fold") continue;
GM_setValue(modKey, mod.default ?? true); // 功能模块 采用默认值
if (mod.subs) {
for (const [subKey, subMod] of Object.entries(mod.subs)) {
GM_setValue(subKey, subMod.default ?? true); // 子功能 采用默认值
}
}
}
}
for (const [groupKey, groupData] of Object.entries(allModules)) {
GM_deleteValue(`vbnFold_${groupKey}`);
for (const [modKey, mod] of Object.entries(groupData)) {
GM_deleteValue(`vbnFold_${modKey}`);
if (mod.subs) {
for (const subKey of Object.keys(mod.subs)) {
GM_deleteValue(`vbnFold_${subKey}`);
}
}
}
}
if (typeof VBN_GLOBAL_CACHE?.clear === "function") {
VBN_GLOBAL_CACHE.clear();
}
showTip("✔ 已重置为默认配置", "correct");
setTimeout(() => location.reload(), 520); // 重置后 刷新页面的延迟
});
panel.appendChild(applyBtn);
panel.appendChild(resetBtn);
VBN_GLOBAL_DOM.load(dom => dom.appendChild(panel));
setTimeout(() => panel.classList.add("show"), 20); // 延迟 XXXXX 显示面板
setTimeout(() => {
function handleClickOutside(e) {
if (!panel.contains(e.target)) {
panel.classList.add("hide");
setTimeout(() => { // 延迟 XXXXX 移除面板
panel.remove();
document.removeEventListener("click", handleClickOutside);
}, 526);
}
}
document.addEventListener("click", handleClickOutside);
}, 100); // 延迟 XXXXX 绑定外部点击事件
}
GM_registerMenuCommand("👽 Options Panel", buildPanel);
})();
// #endregion
// #region Theme
(function VBN_Theme() {
const ruleBase = {
light: [ "light", "light-theme", "theme-light" ],
dark: [ "dark", "dark-theme", "theme-dark" ]
};
const ruleAntonym = {
light: [ "darker-dark-theme-deprecate", ],
dark: [ ]
};
let currentTheme = null;
function themeSystem() {
const dark = window.matchMedia("(prefers-color-scheme: dark)").matches;
const light = window.matchMedia("(prefers-color-scheme: light)").matches;
return dark ? "dark" : light ? "light" : null;
}
function matchCount(target, keywords) {
if (!target) return 0;
const items = [...target.classList, ...target.getAttributeNames?.() || []].map(i => i.toLowerCase());
return keywords.reduce((count, key) => count + (items.includes(key) ? 1 : 0), 0);
}
function themeWebsite() {
const html = document.documentElement, body = document.body;
let score = 0;
score += matchCount(html, ruleAntonym.dark) - matchCount(html, ruleAntonym.light);
score += matchCount(body, ruleAntonym.dark) - matchCount(body, ruleAntonym.light);
if (score !== 0) return score > 0 ? "dark" : "light";
score = 0;
score += matchCount(html, ruleBase.dark) - matchCount(html, ruleBase.light);
score += matchCount(body, ruleBase.dark) - matchCount(body, ruleBase.light);
if (score !== 0) return score > 0 ? "dark" : "light";
return null;
}
function subjoinClass() {
const html = document.documentElement;
let newTheme = themeWebsite() || themeSystem();
if (!newTheme) newTheme = "light";
if (newTheme === currentTheme) return;
html.classList.remove("vbnThemeLight", "vbnThemeDark");
html.classList.add(newTheme === "light" ? "vbnThemeLight" : "vbnThemeDark");
currentTheme = newTheme;
}
function debounce(fn, delay = 20) {
let timer;
return () => {
clearTimeout(timer);
timer = setTimeout(fn, delay);
};
}
function observeTargets() {
const targets = [document.documentElement];
if (document.body) targets.push(document.body);
const observerOptions = { attributes: true };
const handler = debounce(subjoinClass, 20);
targets.forEach((target, i) => {
VBN_OBSERVER_CENTER.observeWithKey(
`vbnTheme_${i}`,
target,
observerOptions,
handler,
{ preventDuplicate: true, autoDisconnect: false }
);
});
}
function init() {
const start = () => {
subjoinClass();
observeTargets();
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", subjoinClass);
window.matchMedia("(prefers-color-scheme: light)").addEventListener("change", subjoinClass);
};
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", start);
} else {
start();
}
}
init();
})();
// #endregion
// #region LoaderBar
VBN_GLOBAL_LOGIC.activate("LoaderBar", () => {
(function VBN_LoaderBar() {
function progressBarCreate() {
let loaderBar = document.createElement('div');
loaderBar.id = 'vbnLoaderBar';
VBN_GLOBAL_DOM.load(dom => dom.appendChild(loaderBar));
function loaderBarUpdate() {
let progress = (document.readyState === 'interactive') ? 80 : (document.readyState === 'complete' ? 100 : 0);
loaderBar.style.width = progress + '%';
if (progress === 100) {
setTimeout(() => {
loaderBar.dataset.state = "vbnScrollBar";
loaderBar.style.animation = "none";
scrollBarUpdate();
if (document.documentElement.scrollHeight > window.innerHeight) {
window.addEventListener('scroll', scrollBarUpdate);
loaderBar.style.display = 'block';
} else {
loaderBar.style.display = 'none';
}
}, 260);
}
}
function scrollBarUpdate() {
let scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
let scrollHeight = document.documentElement.scrollHeight - document.documentElement.clientHeight;
let scrollProgress = (scrollTop / scrollHeight) * 100;
loaderBar.style.width = scrollProgress + '%';
}
document.addEventListener('readystatechange', loaderBarUpdate);
}
if (document.body) {
progressBarCreate();
} else {
VBN_OBSERVER_CENTER.observe(
document.documentElement,
{ childList: true, subtree: true },
(mutations, observer) => {
if (document.body) {
observer.disconnect();
progressBarCreate();
}
},
{ onceWhen: () => document.body !== null }
);
}
})();
});
// #endregion
// #region ICON
(function VBN_CustomICON() {
// 配置映射关系 "网址" => "变量" 「可转至350行左右配置对应变量 支持格式 JPG PNG SVG base64...」
const vbnICON_Map = {
"chat.deepseek.com": "--vbnICON-URL-Deepseek",
"chatgpt.com": "--vbnICON-URL-OpenAI",
"gemini.google.com": "--vbnICON-URL-Gemini-Vint",
"liblib.art": "--vbnICON-URL-Liblib",
"prompts.chat": "--vbnICON-URL-Prompt",
"comfyworkflows.com": "--vbnICON-URL-Workflow",
"ticktick.com": "--vbnICON-URL-Tick-Vint",
"dida365.com": "--vbnICON-URL-Tick-Vint",
"yuque.com": "--vbnICON-URL-YUQUE",
"dillinger.io": "--vbnICON-URL-Markdown-Line",
"m.ssone.io": "--vbnICON-URL-Network",
"my.ssonegames.com": "--vbnICON-URL-Network",
"ip.skk.moe": "--vbnICON-URL-Mecha",
"convertio.co": "--vbnICON-URL-Transition",
"bigjpg.com": "--vbnICON-URL-AIGC",
"abbreviationfinder.org": "--vbnICON-URL-Character",
"dict.cn": "--vbnICON-URL-Dict",
"svgviewer.dev": "--vbnICON-URL-SVG",
"2yu7z0.smartapps.baidu.com": "--vbnICON-URL-Music",
};
const vbnICON_Matched = Object.keys(vbnICON_Map).find(site => vbnMatchHost.includes(site));
if (
VBN_GLOBAL_LOGIC.activate("CustomICON") &&
vbnICON_Matched
) {
const vbnICON_CssVarName = vbnICON_Map[vbnICON_Matched];
const vbnICON_URL = getComputedStyle(document.documentElement)
.getPropertyValue(vbnICON_CssVarName)
.trim()
.replace(/^url\(["']?(.*?)["']?\)$/i, '$1')
.replace(/["']/g, '');
const vbnICON_TagLink = document.querySelector("link[rel*='icon']") || document.createElement('link');
if (
vbnICON_URL.startsWith('data:image/svg+xml;base64,') ||
vbnICON_URL.endsWith('.svg')
) {
vbnICON_TagLink.type = 'image/svg+xml';
} else if (
vbnICON_URL.endsWith('.png') ||
vbnICON_URL.endsWith('.jpg') ||
vbnICON_URL.endsWith('.jpeg') ||
vbnICON_URL.startsWith('data:image/png;base64,') ||
vbnICON_URL.startsWith('data:image/jpeg;base64,')
) {
vbnICON_TagLink.type = 'image/png';
} else {
vbnICON_TagLink.type = 'image/x-icon';
}
vbnICON_TagLink.rel = 'icon';
vbnICON_TagLink.href = vbnICON_URL;
const head = document.head;
head.appendChild(vbnICON_TagLink);
}
})();
// #endregion
// #region FontStyle
VBN_GLOBAL_LOGIC.activate("FontStyle", {
matchSubjoin: {
include: [
"file:///*",
"*iconfont.cn/*",
"*emojiall.com/*",
"*greasyfork.org/*",
"*juejin.cn/*",
"*prompts.chat/*",
...VBN_SITE_GROUP.AIGC,
...VBN_SITE_GROUP.Chat,
...VBN_SITE_GROUP.ProgDev,
...VBN_SITE_GROUP.Manage,
...VBN_SITE_GROUP.Search,
...VBN_SITE_GROUP.Media,
],
exclude: [
"*youtube.com/*",
...VBN_SITE_GROUP.Font,
]
} }, () => {
GM_addStyle( /* css */ `
*:not(
.code, .pre, .inline-code, .md-code, .blob-code, .blob-code-inner, .js-file-line, .code-block, .code-container, .language-css,
.cm-line, .cm-line span, ne-code, ne-text,
.icon, .icon-wrap, .fa, .DPvwYc, path, svg, i, .block-pagination ul *, #sslct,
.markdown-body pre, .markdown-body code, code, pre, kbd, samp, textarea, [class^="language-"], [class*="-code"], [class$="-language"], [class*="editor"], [class*="icon"], [class*="emoji"]
) {
font-family: var(--vbnBaseFont) !important;
}
.code, .pre, .inline-code, .md-code, .blob-code, .blob-code-inner, .js-file-line, .code-block, .code-container, .language-css,
.cm-line, .cm-line span, ne-code, ne-text, .Box-sc-g0xbh4-0.iJOeCH *,
.markdown-body pre, .markdown-body code, code, pre, kbd, samp, textarea, [class^="language-"], [class*="-code"] {
font-family: var(--vbnCodeFont) !important;
}
.inline-code, .ds-markdown code, .prose :where(code):not(:where([class~=not-prose] *), pre *) {
padding: .126em .4em !important;
font-weight: 526 !important;
text-shadow: 0 0 .126em currentColor !important;
}
`);
});
// #endregion
// #region Selection
VBN_GLOBAL_LOGIC.activate("Selection", () => {
GM_addStyle(`
::selection {
color: #E2E2E2 !important;
background: var(--vbnBase04HEX) !important;
}
`);
});
// #endregion
// #region ScrollBar
VBN_GLOBAL_LOGIC.activate("ScrollBar", () => {
GM_addStyle( /* css */ `
::-webkit-scrollbar {
width: 5px !important;
height: 5px !important;
scroll-behavior: smooth !important;
border-radius: 100vmax !important;
}
/* ========== 滑块 */
::-webkit-scrollbar-thumb {
background: hsla(var(--vbnBase05HSL), 0.4) !important;
border-radius: 100vmax !important;
}
::-webkit-scrollbar-thumb:vertical { background-image: "" !important;}
::-webkit-scrollbar-thumb:horizontal { background-image: "" !important;}
::-webkit-scrollbar-thumb:hover {
background: linear-gradient(
90deg,
hsla(var(--vbnGlow05HSL), 1),
hsla(var(--vbnGlow05HSL), 1),
hsla(var(--vbnGlow03HSL), 1)) !important;
}
/* ========== 背景 */
::-webkit-scrollbar-track {
background: transparent !important;
border-radius: 100vmax !important;
}
/* ========== 上下按钮 */
::-webkit-scrollbar-button { display: none !important;}
/* ========== 滑块以外 */
::-webkit-scrollbar-track-piece { display: none !important;}
/* ========== 滚动条交界处角落区域 */
::-webkit-scrollbar-corner { display: none !important;}
::-webkit-resizer { display: none !important;}
`);
});
// #endregion
// $ ================================================== ↓ Assign
// #region Baidu
VBN_GLOBAL_LOGIC.activate("Search", {
matchSubjoin: {
include: [ "*baidu.com/*" ],
exclude: []
} }, () => {
GM_addStyle( /* css */ `
html #wrapper #wrapper_wrapper #container #content_left .c-container[tpl="XXXXX"] { vbn { top: var(); }
}
/* ============================== ↓ Global */
html #wrapper {
--colorKeyWord: #3978d0;
--SearchWidth: calc(var(--vbnSpaceWidthVW) / 2 );
--bgRepair: -6px;
}
html .wrapper_new { background: var(--vbnBase09HEX);}
/* ========== ↓ 隐藏模块 */
html #searchTag, /* 顶部 - 搜索关联词 */
html #rs_new .c-color-t.rs-label_ihUhK, /* 底部 - 相关搜索 标题 */
html #wrapper #container #content_right, /* 内容区 - 右侧板块 */
html #wrapper #container .c-container[tpl="note_lead"], /* 内容区 - 模块 精选笔记 */
html #wrapper #container .c-container[tpl="yl_vd_generic_new"], /* 内容区 - 模块 电影 */
html #wrapper #container .c-container[tpl="recommend_list"] .c-color-t.title_Zinx- /* 内容区 - 大家还搜索了 标题 */ {
display: none;
}
/* ========== ↓ 移除下划线 */
html .doc-title_3Jos6 a:hover,
html .doc-title_3Jos6 a:hover em {
text-decoration: none !important;
}
html a, html em, html :link, html a:hover, html em:hover, a:hover em, html a.cos-link:hover,
html #wrapper #container .c-container .t *,
html #wrapper #container .c-container .c-title *,
html #wrapper #container .c-container .cosc-title-a :hover,
html #wrapper #container .c-container .cosc-title-a :hover em,
html #wrapper #container .c-container .cosc-title-slot,
html #wrapper #container .c-container .cosc-title-slot *,
html #wrapper #container .c-container .cosc-title-slot:hover,
html #wrapper #container .c-container .cosc-title-slot:hover *,
html #wrapper #container .c-container .title_7Iz74 .cos-link,
html #wrapper #container .c-container ._sc-title_1g9za_66 *,
html #wrapper #container .c-container ._sc-title_1g9za_66 :hover,
html #wrapper #container .c-container ._sc-title_1g9za_66 :hover *,
html #wrapper #container .c-container .video-main-title_S_LlQ:hover .title-default_518ig,
html #wrapper #container .c-container .site-link_1JEbM .custom-underline a .cosc-title-slot:hover,
html #wrapper #container .c-container ._head-title_1ml43_142 ._link_1ml43_146:hover ._paragraph_1ml43_156 {
text-decoration: none;
}
/* ========== ↓ 内容区图片尺寸 */
html .c-container[tpl="ai_ecology"] .cos-row-col-12 > .cos-col-6, /* 轻秒图片转换器 */
html .c-container .cos-swiper-list .cos-swiper-item[style*="width: calc(33% - 5px)"], /* 百度有驾 */
html .c-container .video-wrap_7yrJ0 .cos-swiper-list .cos-swiper-item[style*="width: 34%;"] /* 百度翻译 */ {
width: 15% !important;
}
html .c-container .cos-row > .cos-col[style*="width:25%"], /* 百度百科 */
html #wrapper #container .c-container[tpl="sg_kg_entity_san"] .cos-row.cos-gutter > .cos-col-3, /* 百度百科 */
html .c-container[tpl="nvl_bookstore_san"] .cos-row-col-12 > .cos-col-3, /* 在线阅读 */
html .c-container .cos-row.bottom-gap_2aWpR.single-image_6zdhC > .cos-col[style*="width:24.5%"] /* 电影 封面 */ {
width: 10% !important;
}
/* ========== ↓ 原生模块边框 */
html .pc-fresh-smooth .c-group-wrapper::after,
html .pc-fresh-smooth .cosc-card-shadow:after,
html .pc-fresh-smooth .new-pmd .c-border::after,
html .pc-fresh-smooth .cu-border._content-border_1ml43_4:after {
border: transparent;
}
/* ========== ↓ 原生模块阴影 */
html .cu-border,
html .new-pmd .c-border,
html .cosc-card-shadow,
html .re-box-shadow_3l74t,
html .re-box-shadow_1FfgR,
html .pc-first-style_4Jcx0 {
box-shadow: none;
}
/* ========== ↓ 标题 */
html #wrapper #container h3:not(
.cos-space-mt-md h3,
.card-title_2GtKe h3,
.exta-links-pc_2sXPl h3,
.exta-link-pc_3aUAb h3,
.c-container[tpl="wenda_generate"] h3,
) {
padding: var(--vbnSpacePadding);
margin: -10px -20px 10px -20px;
width: 100%;
background: var(--vbnBase09HEX);
border-radius: var(--vbnSurfaceRadius) var(--vbnSurfaceRadius) 5px 5px;
}
html .cos-pc .title-box_4YBsj { width: 100%; }
html .cos-pc .title-wrapper_6E6PV { margin-top: -10px; }
html .cos-pc .title-wrapper_6E6PV .pre-text_6ulGP { z-index: 1; }
html ._link_1iyz5_2 { margin-bottom: 0; }
/* ========== ↓ 标题文字 */
html a, html a:hover,
html a.cos-link, html a.cos-link:hover { color: var(--colorKeyWord); }
html ._paragraph_1g9za_2.md,
html .cosc-title-md,
html #wrapper #container.sam_newgrid .c-container .t,
html #wrapper #container.sam_newgrid .c-container .c-title {
color: var(--colorKeyWord);
font-size: 15px;
font-weight: bold;
line-height: 1.5;
}
/* ========== ↓ 官方标 */
html .cos-pc .title-wrapper_6E6PV .suffix-icon_3Ox2w {
position: absolute;
top: -.55em;
right: -1em;
}
html .cos-pc .title-wrapper_6E6PV .suffix-icon_3Ox2w .www-tag-fill-blue_3n0y3 { border-radius: var(--vbnUIRadius); }
/* ========== ↓ 标题 icon */
html .front-icon_7wpfB { z-index: 999;}
/* ========== ↓ 模块 通用 */
html #wrapper #container .new-pmd.c-container,
html #wrapper #container .new-pmd[tpl="app/rs"] {
box-sizing: border-box;
position: relative;
padding: var(--vbnSpacePadding);
margin: var(--vbnSpaceMargin);
width: 100%;
font-size: 12px;
background: #FFFFFF;
box-shadow: var(--vbnOftenSurfaceShadowBase);
border-radius: var(--vbnSurfaceRadius);
transition: var(--vbnOftenTransition);
}
html #wrapper #container .new-pmd.c-container:hover,
html #wrapper #container .new-pmd[tpl="app/rs"]:hover {
z-index: 2;
box-shadow: inset 0 0 2px hsla(0, 0%, 92%, .6), var(--vbnOftenSurfaceShadowHover);
transform: var(--vbnSurfaceZoomIn);
}
html #wrapper #container #content_left > :first-of-type:hover, /* 内容区 首个 */
html #wrapper #container .new-pmd[tpl="app/rs"]:hover, /* 相关搜索 */
html #wrapper #container .new-pmd.c-container[tpl="jr_stock"]:hover, /* 百度股市通 */
html #wrapper #container .new-pmd.c-container[tpl="jr_exchange_rate"]:hover, /* 百度股市通 */
html #wrapper #container .new-pmd.c-container[tpl="wenda_generate"]:hover, /* AI 问答生成 */
html #wrapper #container .new-pmd.c-container[tpl="ai_ask"]:hover, /* AI 提问 */
html #wrapper #container .new-pmd.c-container[tpl="image_grid_san"]:hover, /* 百度图片 */
html #wrapper #container .new-pmd.c-container[tpl="ai_agent_qa_recommend"]:hover /* 聊一下更多精彩 */ {
transform: none;
}
/* ---------- ↓ 内容块 -> 内容 距离 */
html ._content-border_1ml43_4:not([tpl="jy_hy_zi_accu_san"] ._content-border_1ml43_4) {
padding: var(--vbnSpacePadding);
margin: 0 -20px;
}
/* ---------- ↓ 内容块 -> 内容 宽度 */
html #wrapper #container .c-container[tpl="www_index"] { vbn { top: var(); }
.cos-row .cos-col.content-space-between_44mGk[style*="width:75%;"] {
width: 89% !important;
}
}
/* ========== ↓ Markdown AI 问答区 「预计更改」 */
html .cosd-markdown .marklang h3 { font-size: 14px; }
html .cosd-markdown .marklang,
html .cosd-markdown .marklang .marklang-paragraph {
font-size: 14px;
}
/* ============================== ↓ Head */
html .wrapper_new #head {
top: 0;
width: 100%;
background: var(--vbnGlassLight);
backdrop-filter: var(--vbnPanelFilter);
transition: var(--vbnOftenTransition);
}
html .wrapper_new #head.peak-down { background: transparent; }
html .wrapper_new #head.no-box-shadow,
html .wrapper_new #head.no-box-shadow.s_down {
box-shadow: var(--vbnGlassShadow);
}
html #wrapper #head:not(.s-manhattan-index div, .s_form_nologin div) { vbn { top: var(); }
.head_wrapper {
display: flex;
justify-content: space-around;
transform: translate3d(-15px, 0 , 1px);
width: 100%;
}
/* ========== ↓ 用户中心 */
.head_wrapper #u {
position: fixed;
right: 40px;
padding: 0;
}
/* ========== ↓ 搜索框 */
.s_form {
display: flex;
justify-content: center;
padding: 0;
width: auto;
}
.s_ipt_wr { width: var(--SearchWidth); }
.s_form_fresh { width: inherit; padding: 0; }
.bdsug-new { width: var(--SearchWidth); }
.soutu-env-new .soutu-layer .soutu-url-wrap, .soutu-env-new .soutu-layer #soutu-url-kw { width: var(--SearchWidth); }
#kw.s_ipt { width: 87%; }
}
/* ========== ↓ 分类 */
html .result-molecule.new-pmd:has(#s_tab) {
--container-left-gap: auto;
display: flex;
justify-content: center;
}
html #wrapper .new-pmd[tpl="app/head-tab"] { vbn { top: var(); }
#s_tab {
display: flex;
justify-content: center;
border: none;
padding-top: 70px;
padding-left: 0;
}
#s_tab .s_tab_inner {
display: flex;
justify-content: space-between;
width: calc(var(--vbnSpaceWidthVW) / 2 + 260px);
min-width: 920px;
padding-left: 0;
}
}
/* ========== ↓ 检索信息 搜索框下 */
html #rs_top_new, html .hit-toptip, html .hit_top_new {
opacity: .6;
display: flex;
justify-content: center;
margin-top: calc(-1.2em + -2.6px);
width: auto;
}
html #wrapper .new-pmd[tpl="app/search-tool"] { vbn { top: var(); }
br { display: none; }
/* ========== ↓ 筛选信息 */
.outer_wqJjM { margin: 10px 0 -10px 0;}
.options_2Vntk { opacity: .8; width: 90%; margin: 0 auto;}
}
html #wrapper .new-pmd[tpl="app/toptip"] { vbn { top: var(); }
br { display: none; }
}
html #wrapper .new-pmd[tpl="app/hit-top-new"] { vbn { top: var(); }
br { display: none; }
.c-icon-bear-circle { transform: scale(.8); }
}
/* ============================== ↓ Content */
html #wrapper #wrapper_wrapper { margin: 0 auto; width: var(--vbnSpaceWidthVW); }
html #wrapper #container {
width: 100%;
padding: 0;
margin: 0 auto;
}
html #wrapper #container #content_left {
width: 100%;
padding: 0 !important;
margin: 0 auto !important;
}
/* ========== ↓ 组件 */
/* ========== ↓ 计算器 */
html #wrapper #container .c-container[tpl="ms_new_calc"] { vbn { top: var(); }
.new-pmd { width: 60%; margin: 20px auto; }
.calc-oprate_24c8k { display: flex; justify-content: space-evenly; }
.calc-oprate_24c8k .func-calc_3t0OK { width: 60%;}
.calc-box_1qoea {
box-shadow:
inset 1px 1px 1px 0px rgba(255, 255, 255, 0.8),
inset -1px -1px 1px 0px rgba(40, 49, 85, 0.3),
1px 1px 3px 0px rgba(40, 49, 85, 0.1);
}
}
/* ========== ↓ 日历 */
html #wrapper #container .c-container[tpl="ms_calendar_san"] { vbn { top: var(); }
&.new-pmd { width: 60%; min-width: 600px; margin: 20px auto; }
._bg-header_1ml43_46 { width: 99%; top: -5px; left: 5px; }
}
/* ========== ↓ 汇率换算 */
html #wrapper #container .c-container[tpl="jr_exrate_san"] { vbn { top: var(); }
.aladdin_3Tvaz .bg-header_G63NE { top: var(--bgRepair); }
}
/* ========== ↓ 单位换算 */
html #wrapper #container .c-container[tpl="ms_measures_san"] { vbn { top: var(); }
.cosc-card-light-bg { top: -18px; }
.cosc-card-horizontal-gradient { width: 110%; background-position: center; }
}
/* ========== ↓ 模块 百度AI */
html #wrapper .c-group-wrapper {
padding: 0;
margin: 0;
background: transparent;
box-shadow: none;
}
html #wrapper .c-group-wrapper .result-op { width: 100% !important; }
html #wrapper #container .new-pmd.c-container[tpl="wenda_generate"] { padding-top: 20px; }
/* ========== ↓ 问答生成 */
html #wrapper #container .c-container[tpl="ai_index"],
html #wrapper #container .c-container[tpl="wenda_generate"],
html #wrapper #container .c-container[tpl="new_baikan_index"] {
overflow: auto;
max-height: 526px;
&::-webkit-scrollbar { display: none; }
/* .cosc-card-content { margin-top: var(--bgRepair); } */
.cosc-card-light-bg:not([tpl="wenda_generate"] div) { top: var(--bgRepair); }
.cosd-markdown .marklang .marklang-paragraph { line-height: 1.5; }
}
html #wrapper #container .c-container[tpl="ai_index"] { vbn { top: var(); }
div[class*="_aladdin"] {
width: 97%;
margin: 0 auto;
padding: 0;
}
.swiper-box_33dzT {
width: 102.6%;
margin: -10px auto;
margin-left: -20px;
box-shadow: none;
border-radius: var(--vbnPanelRadius);
}
._bg-header_1ml43_46 { overflow: visible; }
._horizontal-gradient_1ml43_56 {
width: 102.6%;
margin: 3px auto;
margin-left: -20px;
background-size: 110% 100% !important;
background-position: top center !important;
border-radius: var(--vbnPanelRadius);
}
}
html #wrapper #container .c-container[tpl="wenda_generate"] { vbn { top: var(); }
/* ---------- ↓ ICON 听 */
.audio_63a7U { margin-top: 0; }
}
html #wrapper #container .c-container[tpl="new_baikan_index"] { vbn { top: var(); }
}
html #wrapper #container .c-container[tpl="ai_ask"] { vbn { top: var(); }
}
/* ========== ↓ 模块 百度健康 */
html #wrapper #container .c-container[tpl="med_aigc_guru_san"] { vbn { top: var(); }
.medAigcPcCard_29xxv { margin-top: -5px; }
}
/* ========== ↓ 模块 百度翻译 */
html #wrapper #container .c-container[tpl="fy_fanyi_ai_san"],
html #wrapper #container .c-container[tpl="fy_sg_dictwisenew_san"] { vbn { top: var(); }
h3 { /* margin: -10px -20px -5px -20px; */ background: transparent; }
.dict-card_Pbfer .cosc-card { padding-top: 0 !important; }
.daoliu-con_3mmBo { margin-top: 15px; }
.footer_6VBOp { margin-top: -5px; }
.cosc-card-content { margin-top: var(--bgRepair); }
.cosc-card-light-bg:not([tpl="wenda_generate"] div) { top: var(--bgRepair); }
}
/* ========== ↓ 模块 百度贴吧 */
html #wrapper #container .c-container[tpl="tieba_general"] { vbn { top: var(); }
.cos-space-mt-md { width: 96%; }
}
/* ========== ↓ 模块 百度图片 */
html #wrapper #container .c-container[tpl="image_grid_san"] { vbn { top: var(); }
h3 { margin: 0px -20px; background: transparent; }
.image-container_7qr7Y.image-container-pc_57ELg { display: flex; gap: 40px; }
.image-container_7qr7Y .row-border-list_50f1g { gap: 20px; }
}
/* ========== ↓ 模块 百度百科 */
html #wrapper #container .c-container[tpl="bk_polysemy"] { vbn { top: var(); }
.c-span9 { width: calc(100% - 128px - 20px); }
.c-span12 { width: 100%; }
}
html #wrapper #container .c-container[tpl="sg_kg_entity_san"] { vbn { top: var(); }
.button_sx9Ei .content_7L4g2 { color: var(--colorKeyWord); }
.c-span9 { width: 85%; }
/* ========== ↓ 演员列表 */
.cos-swiper-list { justify-content: space-around; }
}
/* ========== ↓ 模块 百度文库 */
/* html #wrapper #container .c-container[tpl="www_index"][mu*="https://wenku.baidu.com/"] { vbn { top: var(); } */
html #wrapper #container .c-container[tpl="jy_wenku_wenshu"] { vbn { top: var(); }
h3 { padding: 10px 45px; margin: -10px -20px 10px -43px; }
.title-wrapper_6E6PV .front-icon_7wpfB { z-index: 1; font-size: 15px; }
/* ========== ↓ 修复标题 */
.doc-title_3Jos6 { background: transparent; }
}
/* ========== ↓ 模块 百度汉语 */
html #wrapper #container .c-container[tpl="jy_hy_zi_attr_san"],
html #wrapper #container .c-container[tpl="jy_hy_zi_accu_san"] { vbn { top: var(); }
.bg-header_2y46S._bg-header_1ml43_46,
.bg-header_5SZvD {
width: 102%;
top: -6px;
left: -15px;
right: 0;
}
h3 { background: transparent; }
}
/* ========== ↓ 模块 百度天气 */
html #wrapper #container .c-container[tpl="weather_forecast_san"] { vbn { top: var(); }
--width: 10px;
.content-border_2OSp3 { box-shadow: none; }
/* ========== ↓ 按钮 左右翻页 */
.load_4cwYw.back_5ndVv { left: var(--width); }
.load_4cwYw.more_3kyUW { right: var(--width); }
}
/* ========== ↓ 模块 百度有驾 */
html #wrapper #container .c-container[tpl="car_kg2_san"] { vbn { top: var(); }
}
/* ========== ↓ 模块 AI 工具箱 */
html #wrapper #container .c-container[tpl="ai_ecology"] { vbn { top: var(); }
--width: 12%;
.cos-row-col-12 > .cos-col-3 { width: var(--width); }
.card-footer-normal_nPWGd { left: calc(var(--width) - 15px/4); }
}
/* ========== ↓ 模块 音乐 */
html #wrapper #container .c-container[tpl="yl_music_song"] { vbn { top: var(); }
--width: 1260px;
.table-container_39X6k .table-thead_2yUCX .th-num_390pb,
.table-container_39X6k .table-tbody_3exJd .td-num_evVor {
width: var(--width);
}
}
/* ========== ↓ 模块 百家号 */
/* ========== ↓ 模块 全网热卖 */
html #wrapper #container .c-container[tpl="sp_purc_pc"] { vbn { top: var(); }
h3 { margin: -22px -20px 10px -20px; }
.content-wrap_2UG9e > div[style*="display: block"] {
display: flex !important;
justify-content: space-evenly;
}
.row_IIB9a { margin: 0; }
.sp_purc_pc-sku-item_3KDHq { margin: 15px 40px 15px 0; }
}
/* ========== ↓ 模块 在线阅读 */
/* ========== ↓ 模块 在线观看 */
html #wrapper #container .c-container[tpl="yl-vd-basis"] { vbn { top: var(); }
.c-span9 { width: max-content; }
}
/* ========== ↓ 模块 高清在线观看 */
html #wrapper #container .c-container[tpl="short_video"] { vbn { top: var(); }
.content_LHXYt > div { display: flex; gap: 20px; }
.content_LHXYt .c-row { display: flex; gap: 20px; }
.c-gap-top-large, .c-span4 { margin: 0; }
}
/* ========== ↓ 模块 聊一下更多精彩 */
html #wrapper #container .c-container[tpl="ai_agent_distribute"] { vbn { top: var(); }
.card-title_6qPL6 { width: 100%; }
.content_EbWw1 .common-content_4dXMi { width: 95%; }
}
/* ========== ↓ 模块 实时智能回复 */
html #wrapper #container .c-container[tpl="ai_agent_qa_recommend"] { vbn { top: var(); }
/* ========== ↓ 标题 */
.cos-space-mt-lg { margin-top: 0; }
.agent-qa-card_3V5cX .card-title_2GtKe { margin: 10px 0; }
}
/* ========== ↓ 模块 最新信息 */
html #wrapper #container .c-container[tpl="news-realtime"] { vbn { top: var(); }
.single-card-wrapper_2nlg9 {
display: flex;
justify-content: flex-start;
border-radius: var(--vbnSurfaceRadius);
box-shadow: none;
}
.single-card-wrapper_2nlg9 > .c-row { display: flex; }
.single-card-wrapper_2nlg9 > .c-row:last-of-type { display: none; }
}
/* ========== ↓ 模块 最新相关信息 */
html #wrapper #container .c-container[tpl="rel_base_realtime"] { vbn { top: var(); }
img { border-radius: var(--vbnBaseRadius); }
.cos-image-3-2 { padding-bottom: 25%; }
.cos-image-fit-cover .cos-image-background { background-size: contain; }
}
/* ========== ↓ 模块 最新相关信息 */
html #wrapper #container .c-container[mu*="https://wenku.baidu.com/"] { vbn { top: var(); }
._image_14uts_1 {
background-size: contain !important;
padding-bottom: 25% !important;
}
}
/* ========== ↓ 模块 相关搜索 */
html #wrapper #container .c-container[tpl="recommend_list"] { vbn { top: var(); }
.pc-rg-upgrade_2X3zi .item_3WKCf { margin: 5px !important; color: var(--colorKeyWord); }
}
html #wrapper .new-pmd[tpl="app/rs"] { vbn { top: var(); }
padding: var(--vbnSpacePadding) !important;
margin: var(--vbnSpaceMargin) !important;
#rs_new { margin: 0; width: 100%; }
#rs_new table { margin: 20px auto; }
#rs_new table tr { display: flex; gap: 40px; }
#rs_new table tr .rs-link_2DE3Q { color: var(--vbnBaseColor);}
}
/* ========== ↓ Other */
html #wrapper #container .c-container { vbn { top: var(); }
.recommend-none-border { display: flex; gap: 20px; }
.c-gap-top-middle { margin-top: 0; }
}
/* ============================== ↓ Bottom */
html #wrapper .new-pmd[tpl="app/page"] { vbn { top: var(); }
#page {
width: 100% !important;
background: transparent;
}
.page_2muyV a { color: var(--colorKeyWord); }
#page a:hover .pc, #page .n:hover, .page_2muyV a:hover {
filter: none;
color: var(--colorKeyWord);
background: transparent;
box-shadow: var(--vbnSurfaceShadow) hsla(var(--vbnAccentHSL), .200);
}
.page_2muyV .page-inner_2jZi2 {
padding: 0 !important;
margin: 10px auto !important;
width: max-content !important;
}
}
html #wrapper .new-pmd[tpl="app/footer"] { vbn { top: var(); }
.foot-container_2X1Nt { visibility: hidden;}
}
`);
/* ========== vbnFocal */
(function VBN_Baidu_vbnFocal() {
VBN_ADD_CLASS.apply({
delay: 260,
target: [
".c-container [data-module='title']",
".c-container [class^='title_']",
".c-container h3[class*='title'] a",
],
subjoin: [ "vbnFocal", "LR", ],
});
})();
});
// #endregion
// // #region Google
// VBN_GLOBAL_LOGIC.activate("Search", {
// matchSubjoin: {
// include: [ "*Google.com/*" ],
// exclude: []
// } }, () => {
// GM_addStyle( /* css */ `
// html .main { background: var(--vbnBase09HEX);}
// html .sfbg, html .Lu57id { background: transparent;}
// /* ========== ↓ 隐藏模块 */
// html .b_footer, /* 底部 - XXXXX */
// html #search .dURPMd > .ULSxyf /* 内容区 - 图片模块 */ {
// display: none;
// }
// /* ============================== ↓ Head */
// html #searchform { margin: 10px 0;}
// html .minidiv .logo { top: 2px;}
// html .minidiv .RNNXgb { margin: 12px 0 0;}
// /* ========== ↓ Head 粘性定位 */
// html .minidiv .sfbg {
// height: 90px;
// background: hsla(0, 0%, 100%, 0.4);
// backdrop-filter: var(--vbnPanelFilter);
// box-shadow:
// inset 0px -1px 3px #FFFFFF50,
// var(--vbnPanelShadow) hsla(var(--vbnBase04HSL), 0.05);
// }
// /* ========== ↓ NAV */
// html .ym1pid.qS9jbf.KLEmSd {border: none;}
// /* ---------- ↓ NAV 修正 */
// @media (max-width: 1920px) {html #hdtb-sc {margin: 0 0 0 -14vw;}}
// @media (min-width: 1920px) {html #hdtb-sc {margin: 0 0 0 -5vw;}}
// /* ============================== ↓ Content */
// html #main #cnt {margin: 0 auto; width: var(--vbnSpaceWidthVW);}
// html div[two-father] {width: var(--vbnSpaceWidthVW) !important;}
// /* ---------- ↓ 内容区 修正 */
// @media (max-width: 1920px) {html #center_col { margin: 0px 0 0 -29vw;}}
// @media (min-width: 1920px) {html #center_col { margin: 0px 0 0 -21vw;}}
// /* ---------- ↓ 什么 NT 玩意 */
// @media (min-width: 1675px) {
// html .YNk70c { grid-template-columns: 400px repeat(20,36px) minmax(0,1fr); }
// }
// /* ========== ↓ 通用模块 */
// html .MjjYud,
// html #rso div[two-father] div[two-child] {
// width: 100% !important;
// padding: var(--vbnSpacePadding) !important;
// margin: var(--vbnSpaceMargin) !important;
// border: none !important;
// border-radius: var(--vbnSurfaceRadius) !important;
// background: #FFF !important;
// box-shadow: var(--vbnSurfaceShadow) hsla(var(--vbnBase04HSL), 0.050) !important;
// transition: all .526s var(--vbnTransitionSoft) !important;
// }
// html .MjjYud:hover,
// html #rso div[two-father] div[two-child]:hover {
// position: relative !important;
// z-index: 9 !important;
// border: none !important;
// box-shadow: var(--vbnSurfaceShadow) hsla(var(--vbnAccentHSL), 0.260) !important;
// transition: all .6s cubic-bezier(0.25, 0.46, 0.45, 0.94) !important;
// transform: var(--vbnSurfaceZoomIn) !important;
// }
// /* ---------- ↓ 通用模块 修正 */
// html div[two-father] div[two-child] > div {background: transparent;}
// /* ========== ↓ 标题动画 */
// html #rcnt #res h3:visited,
// html #rcnt #extrares h3:visited,
// html div[two-child] h3:visited,
// html div[two-father] div[two-child] a h3:visited {
// display: inline-block;
// width: max-content;
// font-weight: bold;
// }
// html #rcnt #res h3:after,
// html #rcnt #extrares h3:after,
// html div[two-child] h3:after,
// html div[two-father] div[two-child] a h3:after {
// content: "";
// position: absolute;
// left: 100%;
// bottom: -2px;
// width: 0;
// border-bottom: 2px solid var(--vbnAccentHEX);
// transition: transform 350ms, left 350ms;
// }
// html #rcnt #res h3:hover:after,
// html #rcnt #extrares h3:hover:after,
// html div[two-child] h3:hover:after,
// html div[two-father] div[two-child] a h3:hover:after {
// left: 0;
// width: 100%;
// transition: transform .26s;
// }
// /* ========== ↓ 模块 用户还搜索了 */
// html #bres > .ULSxyf { width: calc(var(--vbnSpaceWidthVW) - 40px );}
// html .b2Rnsc:hover { color: var(--vbnAccentHEX); text-decoration: none;}
// /* ---------- ↓ 通用模块 修正 */
// #rso div[two-father] div[two-child] { width: calc(var(--vbnSpaceWidthVW) - 40px) !important;}
// html .IiOSLb .rsGxI.Ww4FFb, .Ww4FFb {background-color: transparent;}
// html .eqAnXb {margin: -20px 0 0 0; width: var(--vbnSpaceWidthVW);}
// /* ============================== ↓ Bottom */
// html .f6F9Be.TrMVnc {border-radius: var(--vbnSurfaceRadius) var(--vbnSurfaceRadius) 0 0;}
// html .b2hzT {border-bottom: none;}
// /* ---------- ↓ Bottom 修正 */
// @media (max-width: 1920px) { html .SLPe5b {margin: 10px 0 0 -18vw;} }
// @media (min-width: 1920px) { html .SLPe5b {margin: 10px 0 0 -12vw;} }
// /* ============================== ↓ 修正 */
// /* ---------- ↓ NAV */
// html .XtQzZd {padding: 0 0 5px 0;}
// /* ---------- ↓ 通用模块 第一个 */
// html .tF2Cxc.asEBEc {margin: var(--vbnSpaceMargin);}
// /* ---------- ↓ 模块 用户还搜索了 */
// html .ULSxyf > .MjjYud .oIk2Cb {padding: 15px 20px;}
// `);
// });
// // #endregion
// // #region Bing
// VBN_GLOBAL_LOGIC.activate("Search", {
// matchSubjoin: {
// include: [ "*bing.com/*" ],
// exclude: []
// } }, () => {
// GM_addStyle( /* css */ `
// html body, html #b_header { background: var(--vbnBase09HEX) !important;}
// /* ========== ↓ 隐藏模块 */
// html .mfa_btn, /* Head 背景 */
// html #b_mcw > #b_topw.b_results_eml, /* 内容区 - 第一个 国际版 */
// html #b_results>.b_ans.b_top, /* 内容区 - 第一个 */
// html #b_results>.b_ans.b_mop, /* 内容区 - 影片模块 & 问了以下问题 */
// html #b_results>.b_ans.b_mop.b_vidAns /* 内容区 - 影片模块 */ {
// display: none;
// }
// /* ============================== ↓ Head */
// /* ========== ↓ 用户中心 */
// html #b_header.as_rsform #id_h, #b_header #id_h { position: fixed !important; top: 2% !important; right: 1% !important;}
// /* ========== ↓ 按钮 国内版 国际版 */
// html body #b_header #est_switch { margin: 25px auto; padding: 0;}
// html body #est_switch #est_cn {margin: 0 20px;}
// html #est_switch .est_selected,
// #est_switch .est_unselected {
// width: 50px;
// height: 20px;
// padding: 2px 2px 2px 15px;
// font-size: 14px;
// font-weight: bold;
// line-height: 8px;
// text-align: center;
// color: white;
// }
// #est_switch .est_selected::after {
// border: none !important;
// background: #007AFF;
// box-shadow: none !important;
// }
// /* ========== ↓ Head 粘性定位 */
// html body.b_pinhead #b_header {
// height: calc(20px + var(--vbnSpace4X)) !important;
// background: hsla(0, 0%, 100%, 0.4) !important;
// backdrop-filter: var(--vbnPanelFilter) !important;
// box-shadow:
// inset 0px -1px 3px #FFFFFF50,
// var(--vbnPanelShadow) hsla(var(--vbnBase04HSL), 0.05) !important;
// }
// /* ========== ↓ 搜索框 */
// html #b_header #sb_form { margin: 12px auto;}
// html .b_searchboxForm {
// box-shadow:
// 0px 0px 00px 1px hsla(0, 0%, 0%, .02),
// 2px 5px 10px 1px hsla(0, 0%, 0%, .06);
// }
// /* ============================== ↓ Content */
// #b_content #b_results { width: var(--vbnSpaceWidthVW) !important; max-width: 100% !important;}
// /* ---------- ↓ 通用模块 */
// html #b_content #b_results > li:not(#mfa_root) {
// padding: var(--vbnSpacePadding) !important;
// margin: 8px 0 !important;
// border: none !important;
// border-radius: var(--vbnSurfaceRadius) !important;
// box-shadow: var(--vbnSurfaceShadow) hsla(var(--vbnBase04HSL), 0.050) !important;
// transition: all .526s var(--vbnTransitionSoft) !important;
// }
// /* ========== ↓ 通用模块 Hover */
// html #b_content #b_results > li:not(#mfa_root):hover {
// box-shadow: var(--vbnSurfaceShadow) hsla(var(--vbnAccentHSL), 0.260) !important;
// transform: var(--vbnSurfaceZoomIn) !important;
// }
// /* ========== ↓ 标题动画 */
// html body #b_content #b_results a:after,
// #b_content #b_results h2 a:after {
// bottom: -2px;
// border-bottom: 2px solid var(--vbnAccentHEX);
// transition: transform .26s, left .26s;
// }
// /* ============================== ↓ Bottom */
// /* ============================== ↓ 修正 */
// /* ========== ↓ Head 背景 */
// html body.b_respl.bing.b_sbText.b_pinhead header#b_header {background-color: transparent !important;}
// #b_results .b_ans #brsv3 { width: calc(var(--vbnSpaceWidthVW) - 100px) !important; margin: 10px auto !important;}
// #b_results .b_ans #brsv3 .b_vList { padding: 0 !important;}
// #b_results #brsv3 .b_vList li { width: 300px !important; padding: 0 !important; margin: 5px !important;}
// #b_header .b_topbar, #b_header .b_scopebar { margin: 20px 0 0px 0 !important;}
// #b_header .b_searchbox { width: 861px !important;}
// `);
// });
// // #endregion
// #region ComfyUI
VBN_GLOBAL_LOGIC.activate("ComfyUI", {
matchSubjoin: {
include: [ ...VBN_SITE_GROUP.AIGC ],
exclude: []
} }, () => {
GM_addStyle( /* css */ `
:root {
--themeColor: 220, 90%, 60%;
--navHeight: 50px;
--rgHeight: 10px;
}
#vue-app {
--bar-shadow: 0 0 1.5rem #00000060;
}
html .comfyui-menu[data-v-1545ebd4] { height: var(--navHeight); }
html .comfyui-body-left[data-v-0e9641c8] { z-index: 999; }
html .side-tool-bar-container[data-v-44002598], html .comfyui-menu[data-v-1545ebd4] {
background: var(--vbnGlassShadow);
backdrop-filter: var(--vbnSurfaceFilter);
}
/* ========== ↓ 右键菜单 */
html .litegraph.litecontextmenu {
padding: 5px;
width: max-content;
min-width: 150px;
max-width: 260px;
border-radius: var(--vbnUIRadius);
box-shadow: var(--vbnUIShadow) #00000060 !important;
}
/* ========== ↓ 菜单选项 */
html .litegraph.litecontextmenu .litemenu-entry:not(.separator) {
display: flex;
align-items: center;
padding: 2px;
margin: 4px 0px;
height: 25px;
}
html .litegraph.litecontextmenu .litemenu-entry.submenu:not(.separator),
html .litegraph.litecontextmenu.dark .litemenu-entry.submenu {
padding: 0 8px;
line-height: 1.92;
border-radius: var(--vbnUIRadius);
}
html .litegraph .litemenu-entry.separator {
border-bottom: .1em dashed #00000040;
}
/* ========== ↓ 箭头图标 */
html .litemenu-entry.has_submenu::after {
content: "";
position: absolute;
top: 50%;
right: 5px;
transform: translateY(-50%);
height: 1.2em;
width: .2rem;
background: hsla(var(--themeColor), 1);
box-shadow: 2px 0 6px 0px hsla(var(--themeColor), .6);
border-radius: 1em;
}
html .litegraph .litemenu-entry.has_submenu { border-right: none;}
/* ========== ↓ 取值输入框 */
html .litegraph .graphdialog {
padding: 7px 10px 7px 15px;
border: var(--vbnUIBorder) var(--border-color);
border-radius: var(--vbnPanelRadius);
}
html .graphdialog {
box-shadow: var(--bar-shadow);
}
html .graphdialog input, html .graphdialog textarea, html .graphdialog select {
border-radius: var(--vbnUIRadius);
}
`);
(function VBN_ComfyUI_manager() {
if (!VBN_GLOBAL_LOGIC.activate("manager")) return;
GM_addStyle( /* css */ `
html #cm-manager-dialog {
--vbnColumnH: 40px;
--vbnRadiusS: var(--vbnUIRadius);
--vbnRadiusM: var(--vbnPanelRadius);
--vbnRadiusL: var(--vbnSurfaceRadius);
--vbnFont: var(--vbnCodeFont);
--vbnMappingText: var(--p-text-muted-color, #FFFFFFCC);
--vbnMappingBase: var(--p-dialog-background, #00000040);
--vbnMappingButtonBase: var(--p-listbox-option-focus-background, #00000050);
--vbnMappingInputBase: var(--p-inputtext-background, #00000050);
--vbnMappingBorder: 1px solid var(--p-select-border-color, #FFFFFF20);
--vbnMappingBorderColor: var(--p-dialog-border-color, #FFFFFF20);
width: 50vw;
height: 50vh;
}
html .comfy-modal {
padding: 40px 20px;
padding-bottom: 20px;
border: 2px solid var(--vbnMappingBorderColor);
background-color: var(--vbnMappingBase);
box-shadow: none;
border-radius: var(--vbnRadiusL);
font-family: var(--vbnFont);
}
html .comfy-modal-content {
display: flex;
flex-direction: column;
align-items: center;
}
html .cm-title, html #cm-close-button {
width: calc(100% - 40px);
height: calc(var(--vbnColumnH) * 2);
background-color: var(--vbnMappingButtonBase);
border-radius: var(--vbnRadiusM);
}
html body #cm-close-button {
position: sticky;
bottom: 0;
overflow: visible;
flex-shrink: 0;
height: calc(var(--vbnColumnH) + 20px);
box-shadow: 0 10px 25px 0 #00000020;
border-radius: var(--vbnRadiusM);
}
html .cm-title > font { color: var(--vbnMappingText); }
html .cm-menu-container {
display: flex;
justify-content: space-around;
gap: 20px;
width: calc(100% - 40px);
padding: 10px 0;
}
html .cm-menu-column {
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
width: auto;
}
html .cm-menu-column > br:first-of-type { display: none; }
html .comfy-modal input, html .comfy-modal select {
height: var(--vbnColumnH);
padding-left: 8px;
border: var(--vbnMappingBorder);
font-family: var(--vbnFont);
font-size: .9em;
color: var(--vbnMappingText);
background-color: var(--vbnMappingInputBase);
border-radius: var(--vbnRadiusS);
}
html .comfy-btn,
html .comfy-menu > button,
html .comfy-menu-btns button,
html .comfy-menu .comfy-list button,
html .comfy-modal button {
margin-top: 4px;
height: var(--vbnColumnH);
border: var(--vbnMappingBorder);
color: var(--vbnMappingText);
font-family: var(--vbnFont);
background-color: var(--vbnMappingButtonBase);
border-radius: var(--vbnRadiusS);
}
html .comfy-btn:hover:not(:disabled),
html .comfy-menu > button:hover,
html .comfy-menu-btns button:hover,
html .comfy-menu .comfy-list button:hover,
html .comfy-modal button:hover,
html .comfy-menu-actions button:hover {
border: var(--vbnMappingBorder);
background-color: var(--vbnMappingButtonBase);
will-change: auto;
}
html #cm-manual-button, html #cm-nodeinfo-button { height: var(--vbnColumnH); }
html #workflowgallery-button {height: calc(var(--vbnColumnH) + 20px); }
html .cm-notice-board {
border: var(--vbnMappingBorder);
color: #626262;
font-size: 14px;
border-radius: var(--vbnRadiusM);
}
html .cm-experimental { border: var(--vbnMappingBorder); }
html .cm-experimental-legend { line-height: 1.7;}
html .cm-experimental-legend, html .cm-button-red { background-color: #B52121 !important;}
html .comfy-modal p { color: var(--vbnMappingText) !important; }
html .comfy-modal p, html .cm-experimental-button, html .cm-button, html #cm-nodeinfo-button {
font-size: .9em !important;
}
`);
})();
(function VBN_ComfyUI_crystools() {
if (!VBN_GLOBAL_LOGIC.activate("crystools")) return;
GM_addStyle( /* css */ `
/*
html .comfyui-menu-right > .flex > .comfyui-button-group:nth-child(2) { order: 1; flex-shrink: 0; }
html .comfyui-menu-right > .flex > .comfyui-button-group { order: 2; flex-shrink: 0; }
html .comfyui-menu #crystools-monitors-root { vbn { top: var(); }
--vbnRadiusS: var(--vbnBaseRadius);
order: 0;
margin: 0 auto;
flex: 0 1 auto;
*/
html .comfyui-menu #crystools-monitors-root { vbn { top: var(); }
--vbnFontSize: 8px;
--vbnRadiusS: 3px;
position: fixed;
top: calc( var(--navHeight) + var(--rgHeight) + 5px );
left: 50%;
transform: translateX(-50%);
width: max-content;
.crystools-monitor {
/* display: flex !important; */
align-content: center;
justify-content: center;
border-radius: var(--vbnRadiusS);
background: transparent;
}
.crystools-monitor[class*="Crystools.ShowRam"] {
order: 1 !important; .crystools-slider { background: #ef5f19 !important; }
}
.crystools-monitor[class*="Crystools.ShowCpu"] {
order: 2 !important; .crystools-slider { background: #b5e70d !important; } /* #ff3cac */
}
.crystools-monitor[class*="Crystools.ShowGpuUsageZero"] {
order: 3 !important; .crystools-slider { background: #45d911 !important; }
}
.crystools-monitor[class*="Crystools.ShowGpuVramZero"] {
order: 4 !important; .crystools-slider { background: #00F29C !important; }
}
.crystools-monitor[class*="Crystools.ShowGpuTemperatureZero"] {
order: 5 !important; .crystools-slider { background: #8576f7 !important; }
}
.crystools-monitor[class*="Crystools.ShowHdd"] {
order: 6 !important; .crystools-slider { background: #475295 !important; }
}
.crystools-slider {
border-radius: var(--vbnRadiusS);
}
/* .crystools-monitor .crystools-content {
display: flex;
width: 8vw;
max-width: 260px;
height: 12px;
} */
.crystools-monitor .crystools-content {
display: flex;
width: calc( 100vw / 5 - 126px);
height: var(--vbnFontSize);
background: #0d0f1499 !important;
}
.crystools-monitor .crystools-text {
bottom: auto;
margin-left: 0;
color: #FFF;
font-size: var(--vbnFontSize);
font-weight: 700;
}
.crystools-label {
top: 0;
right: 10px;
font-size: var(--vbnFontSize);
font-weight: 700;
}
}
`);
})();
(function VBN_ComfyUI_rgthree() {
if (!VBN_GLOBAL_LOGIC.activate("rgthree")) return;
GM_addStyle( /* css */ `
html rgthree-progress-bar { height: var(--rgHeight) !important; }
html rgthree-progress-bar {
--rgthree-progress-bg-color: #171717cc;
--rgthree-progress-nodes-bg-color: #524AF7cc;
--rgthree-progress-steps-bg-color: #1dffb7cc;
--rgthree-progress-error-bg-color: #e3520ccc;
}
`);
})();
});
// #endregion
// #region DeepSeek
VBN_GLOBAL_LOGIC.activate("Chat", {
matchSubjoin: {
include: [ "*deepseek.com/*" ],
exclude: []
} }, () => {
if (!VBN_GLOBAL_LOGIC.activate("DeepSeek")) return;
GM_addStyle( /* css */ `
:root {
--vbnCustomWidth: calc(var(--vbnSpaceWidth02) + 24vw);
--message-list-max-width: var(--vbnSpaceWidth02) !important;
transition: all .526s var(--vbnTransitionSoft);
}
html ._9a2f8e4 { max-width: var(--vbnSpaceWidth02); }
@media (max-width: 1600px){
:root { --message-list-max-width: var(--vbnCustomWidth) !important;}
html ._9a2f8e4 { max-width: var(--vbnCustomWidth); }
}
html ._62b4800 {background: none;}
`);
});
// #endregion
// #region ChatGPT
VBN_GLOBAL_LOGIC.activate("Chat", {
matchSubjoin: {
include: [ "*chatgpt.com/*" ],
exclude: []
} }, () => {
if (!VBN_GLOBAL_LOGIC.activate("ChatGPT")) return;
GM_addStyle( /* css */ `
* { --thread-content-max-width: var(--vbnSpaceWidth02) !important; }
@media (max-width: 1600px){
* { --thread-content-max-width: calc(var(--vbnSpaceWidth02) + 24vw) !important;}
}
`);
});
// #endregion
// #region YUQUE
VBN_GLOBAL_LOGIC.activate("YUQUE", {
matchSubjoin: {
include: [ "*yuque.com/*" ],
exclude: []
} }, () => {
GM_addStyle( /* css */ `
/* ========== ↓ 右侧边栏 文档导航 */
html .sidePanel-module_panel_Vr-DC, html .ne-toc-sidebar .ne-toc-view { background-color: transparent; }
/* ========== ↓ 内容宽度 */
#main, #commonEditPage {
--vbnWidth: 260px; /* 实际内容宽度为 原 750px + 设置的宽度 */
--vbnWidthOffset: -60px; /* 因原有左右侧边栏宽度不一 可设置向右偏移 调整至视觉居中 */
}
@media (max-width: 2460px) { #main, #commonEditPage { --vbnWidth: 260px; --vbnWidthOffset: 0px; } }
@media (max-width: 1920px) { #main, #commonEditPage { --vbnWidth: 100px; --vbnWidthOffset: 0px; } }
@media (max-width: 1202px) { #main, #commonEditPage { --vbnWidth: 000px; --vbnWidthOffset: 0px; } }
html .ne-viewer-body > *, html .DocReader-module_header_xAOtU { transition: all .92s var(--vbnTransitionSoft) }
/* ========== ↓ 阅读模式 */
/* ========== ↓ 标题 */
html .DocReader-module_comment_eDglS, html .DocReader-module_header_xAOtU, html .DocReader-module_info_yXA4e {
max-width: calc(850px + var(--vbnWidth) / 2 + var(--vbnWidthOffset));
}
/* ========== ↓ 内容 */
html .ne-doc-major-viewer .ne-viewer-layout-mode-fixed .ne-viewer-body > * {
max-width: calc(750px + var(--vbnWidth));
}
html .article-content .ne-doc-major-viewer .ne-viewer-layout-mode-adapt .ne-viewer-body > *,
html .article-content .ne-doc-major-viewer .ne-viewer-layout-mode-fixed .ne-viewer-body > * {
margin-right: calc(var(--viewer-center-align-right) - var(--vbnWidth) / 2 + var(--vbnWidthOffset)) !important;
}
/* ========== ↓ 代码块 */
html .article-content .ne-doc-major-viewer .ne-viewer-layout-mode-fixed .ne-viewer-body > ne-alert-hole,
html .article-content .ne-doc-major-viewer .ne-viewer-layout-mode-fixed .ne-viewer-body > ne-container-hole,
html .article-content .ne-doc-major-viewer .ne-viewer-layout-mode-fixed .ne-viewer-body > ne-hole {
width: calc(100% - var(--viewer-center-align-value) + var(--vbnWidth));
}
/* ========== ↓ 编辑模式 */
/* ========== ↓ 标题 */
html .ne-doc-major-editor .ne-editor.layout-read-write:not(.ne-layout-mode-adapt) .ne-editor-extra-box {
max-width: calc(890px + var(--vbnWidth) / 2 + var(--vbnWidthOffset));
}
/* ========== ↓ 内容 */
html .ne-doc-major-editor .ne-editor.layout-read-write:not(.ne-layout-mode-adapt) .ne-engine>:not(.ne-full-width) {
margin-right: calc(var(--center-editor-margin-right) - var(--vbnWidth) / 2 + var(--vbnWidthOffset)) !important;
max-width: calc(750px + var(--vbnWidth));
}
/* ========== ↓ 表格 */
html .ne-doc-major-editor .ne-layout-mode-fixed.ne-normal-toc:not(.ne-ui-sidebar-visible).ne-viewport-size-toc-XXL .ne-engine ne-table-hole {
max-width: calc(752px + var(--vbnWidth));
}
/* ========== ↓ Font */
/* ---------- ↓ 代码 */
html .ͼg .cm-scroller {
font-family: var(--vbnCodeFont);
font-size: var(--vbnCodeSize);
}
/* ---------- ↓ 行内代码 */
html ne-code-content { font-family: var(--vbnCodeFont); }
html ne-code ne-text { font-size: var(--vbnCodeSize); }
/* ========== ↓ Picture */
html .ne-image-wrap .ne-image-box {
overflow: visible;
background: transparent;
}
html .ne-image-wrap,
html .ne-viewer ne-card[data-card-type=inline][data-card-name=image], /* 预览模式 */
html .ne-editor ne-card[data-card-type=inline][data-card-name=image] /* 编辑模式 */ {
display: flex;
justify-content: center;
align-items: center;
}
html .ne-paragraph-spacing-relax.ne-typography-classic ne-card[data-card-name=image] img {
border-radius: var(--vbnPanelRadius);
filter: drop-shadow(0 20px 30px hsla(var(--vbnBase04HSL), 0.050));
transition: all .526s var(--vbnTransitionSoft);
}
html .ne-paragraph-spacing-relax.ne-typography-classic ne-card[data-card-name=image] img:hover {
filter: drop-shadow(0 20px 30px hsla(var(--vbnAccentHSL), 0.260));
transform: var(--vbnSurfaceZoomIn);
}
/* ---------- ↓ 默认样式 */
/* ---------- ↓ Hover */
html .ne-editor ne-card[data-card-type=inline][data-card-name=image].ne-card-hovered .ne-image-wrap,
html .ne-editor ne-card[data-card-type=inline][data-card-name=image].ne-focused .ne-image-wrap {
border-color: transparent;
}
/* ---------- ↓ 选中图片的默认边框 */
html .ne-active .ne-ui-image-resizer-box { display: none; }
/* ========== ↓ Table 「下方功能添加 vbnTable样式 此处仅作修复显示」 */
html ne-table-wrap.ne-ui-table-right-shadow:after { display: none; }
/* ---------- ↓ table 外层容器 */
html .ne-table-hole > ne-table-wrap > ne-table-inner-wrap {
overflow: visible !important;
}
/* ---------- ↓ 标题 */
html table[ne-table-row-head=true]:not([ne-table-head-text-gradient=true]) tr:first-child td .ne-td-content>.ne-b-filler,
html table[ne-table-row-head=true]:not([ne-table-head-text-gradient=true]) tr:first-child td ne-text {
font-weight: 700 !important;
color: #4D4D4D !important;
}
/* ---------- ↓ 标题 背景及边框 */
html table[ne-table-row-head=true]:not([ne-table-head-text-gradient=true]) tr:first-child td {
background-color: #FAFAFA !important;
border-color: #00000000 !important;
}
html table[ne-table-row-head=true]:not([ne-table-head-text-gradient=true]) tr:first-child td:not(:first-child, :last-child) {
border-left: 1px solid #00000010 !important;
border-right: 1px solid #00000010 !important;
}
/* ---------- ↓ Sticky */
html ne-table-hole[class="ne-table-hole"] > ne-table-wrap > div[style*="top: 0px"] {
top: -27px !important;
}
html tr.ne-tr.ne-tr-sticky {
top: calc(79px - 27px) !important;
border-radius: 0 0 var(--vbnSurfaceRadius) var(--vbnSurfaceRadius);
}
/* ========== ↓ 标题 */
html #article-title,
html ant-input lake-title,
html .ne-viewer ne-h1 ne-text, html .ne-engine ne-h1 ne-text { color: var(--vbnMarkdownH1);}
html .ne-viewer ne-h2 ne-text, html .ne-engine ne-h2 ne-text { color: var(--vbnMarkdownH2);}
html .ne-viewer ne-h3 ne-text, html .ne-engine ne-h3 ne-text { color: var(--vbnMarkdownH3);}
html .ne-viewer ne-h4 ne-text, html .ne-engine ne-h4 ne-text { color: var(--vbnMarkdownH4);}
html .ne-viewer ne-h5 ne-text, html .ne-engine ne-h5 ne-text { color: var(--vbnMarkdownH5);}
html .ne-viewer ne-h6 ne-text, html .ne-engine ne-h6 ne-text { color: var(--vbnMarkdownH6);}
html .lake-title-editor .lake-title { background-color: transparent; }
/* ========== ↓ 工具栏 */
/* ---------- ↓ 选中图片 */
html .ne-card-toolbar {
magic: 10px 0 0;
border-radius: var(--vbnPanelRadius);
}
`);
(function VBN_YUQUE_vbnTable() {
if (!VBN_GLOBAL_LOGIC.activate("vbnTable")) return;
VBN_ADD_CLASS.apply({
delay: 260,
target: [ "#main.BookReader-module_content_BGKYX table", ],
subjoin: [ "vbnTable", ],
});
})();
(function VBN_YUQUE_vbnGrid() {
if (!VBN_GLOBAL_LOGIC.activate("vbnGrid")) return;
VBN_ADD_CLASS.apply({
delay: 260,
target: [
".BookReader-module_wrapper_s6Jdt",
".ne-layout-mode-adapt .ne-editor-wrap-box",
".ne-layout-mode-fixed .ne-editor-wrap-box",
],
subjoin: [ "vbnGridSolid", ],
});
})();
});
// #endregion
// #region TickTick
VBN_GLOBAL_LOGIC.activate("TickTick", {
matchSubjoin: {
include: [
"*dida365.com/*",
"*ticktick.com/*",
],
exclude: [ ]
} }, () => {
GM_addStyle( /* css */ `
/* ---------- ↓ 默认阴影 */
html .shadow-default, html .shadow-md {
box-shadow: var(--vbnUIShadow) hsla(var(--vbnBase04HSL), .12);
}
/* ---------- ↓ 左下角 小日历 */
html .bg-sidebar-bg-color { background: transparent; }
/* ---------- ↓ 看板 各列 */
html #column-list-inner > article { width: var(--vbnSpace4Y) !important; }
`);
});
// #endregion
// #region Youtube
VBN_GLOBAL_LOGIC.activate("Youtube", {
matchSubjoin: {
include: [ "*youtube.com/*" ],
exclude: [ ]
} }, () => {
GM_addStyle( /* css */ `
@media (min-width: 1500px) {
/* ---------- ↓ Video */
html ytd-rich-grid-renderer[is-default-grid] ytd-rich-item-renderer[rendered-from-rich-grid] {
--ytd-rich-grid-items-per-row: 6 !important;
}
/* ---------- ↓ Shots */
html ytd-rich-shelf-renderer[is-shorts] ytd-rich-item-renderer[items-per-row][is-slim-media] {
--ytd-rich-grid-items-per-row: 8 !important;
}
/* ---------- ↓ News */
html ytd-rich-shelf-renderer[elements-per-row] ytd-rich-item-renderer[is-shelf-item] {
--ytd-rich-grid-items-per-row: 6 !important;
}
}
`);
});
// #endregion
// #region Bilibili
VBN_GLOBAL_LOGIC.activate("Bilibili", {
matchSubjoin: {
include: [ "*Bilibili.com/*" ],
exclude: [ ]
} }, () => {
GM_addStyle( /* css */ `
/* ---------- ↓ 默认小按钮 */
html.vbn .video-pod .video-pod__header .header-bottom .right .subscribe-btn {
border-radius: var(--vbnBaseRadius);
}
/* ---------- ↓ 播放列表高度 */
html.vbn .video-container-v1 .video-pod .video-pod__body {
max-height: 43vh;
}
`);
});
// #endregion
// #region Other
/* ========== Greasyfork */
if (
VBN_MATCH_RULE.match({
include: [
"*greasyfork.org/*",
],
exclude: [ ]
})
) {
GM_addStyle( /* css */ `
/*
html .install-help-link { font-size: 1.08em; }
html .install-link[data-ping-url] { font-size: 1.08em; }
*/
`);
/* ========== vbnLink */
(function VBN_Greasyfork_vbnLink() {
VBN_ADD_CLASS.apply({
delay: 260,
target: [
"body a[href]:not(#script-links [href], #install-area [href], #script-list-option-groups [href], #main-header [href]):not(:has(img))",
"#main-header a[href]:not(#site-name [href])",
".browser-list-selector:not(.browser-list-selector-active)",
],
subjoin: [ "vbnLink", ],
});
})();
}
/* ========== Dillinger */
if (
VBN_MATCH_RULE.match({
include: [ "*dillinger.io/*" ],
exclude: [ ]
})
) {
GM_addStyle( /* css */ `
.vbn {
& html, body { font-family: var(--vbnBaseFont); }
}
`);
}
/* ========== Bigjpg */
if (
VBN_MATCH_RULE.match({
include: [ "*bigjpg.com/*" ],
exclude: [ ]
})
) {
GM_addStyle( /* css */ `
@media (min-width: 768px) {
html .container { max-width: none; }
html .jumbotron {
padding-top: 80px;
padding-bottom: 80px;
}
}
`);
}
/* ========== 115 */
if (
VBN_MATCH_RULE.match({
include: [ "*://115.com/*" ],
exclude: [ ]
})
) {
GM_addStyle( /* css */ `
/* ========== 云下载 弹窗 */
html .offline-box {
position: fixed !important;
top: 50% !important;
left: 50% !important;
transform: translate(-50%, -50%);
width: 43vw !important;
height: 50vh;
border-radius: var(--vbnSurfaceRadius);
transition: all .43s var(--vbnTransitionSoft);
}
/* ---------- 云下载 输入框 */
html .dialog-input.input-offline textarea {
height: 32vh;
border-radius: var(--vbnSurfaceRadius);
}
@media (max-width: 1200px) {
html .offline-box { width: 59vw !important; height: 92vh;}
html .dialog-input.input-offline textarea { height: 70vh;}
}
`);
}
/* ========== XXXXX */
if (
VBN_MATCH_RULE.match({
include: [ "*mp.weixin.qq.com/*" ],
exclude: [ ]
})
) {
GM_addStyle( /* css */ `
html .pages_skin_pc.wx_wap_desktop_fontsize_2 .rich_media_area_primary_inner {
max-width: var(--vbnSpaceWidth02);
}
`);
}
/* ========== XXXXX */
if (
VBN_MATCH_RULE.match({
include: [ "*douyin.com/*" ],
exclude: [ ]
})
) {
GM_addStyle( /* css */ `
html.vbn, html body, html body > div:first-child { height: auto; }
`);
}
/* ========== XXXXX */
if (
VBN_MATCH_RULE.match({
include: [ "*periodic-table-tags-mu-six.vercel.app/*" ],
exclude: [ ]
})
) {
GM_addStyle( /* css */ `
html .title h1 { display: none; }
html .star { margin: 100px 0; }
html .intro { margin: 24vh 0 14vh 20vw; }
html .elements[data-v-ff33deea] {
border-radius: var(--vbnUIRadius);
transition: all .526s var(--vbnTransitionSoft);
width: 5rem;
font-family: var(--vbnCodeFont);
font-size: var(--vbnCodeSize);
}
html .elements:hover {
z-index: var(--vbnPriority00);
box-shadow:
var(--vbnPanelShadow) hsla(var(--vbnBase02HSL), 0.8),
0 0 0 2px #00000080 !important;
transform: var(--vbnUIZoomIn);
}
html .elements .info[data-v-ff33deea] {
z-index: var(--vbnPriority00);
border-radius: var(--vbnPanelRadius);
}
`);
}
// #endregion
// $ ================================================== ↓ Micro
// #region NetDisk.Check
VBN_GLOBAL_LOGIC.activate("NetDisk_Check", () => {
GM_addStyle( /* css */ `
/* ========== 连接正确 */
html .one-pan-tip { text-decoration: none;}
html .one-pan-tip::before {
height: .95em;
width: .95em;
margin: 0 .15em .15em;
background-image: var(--vbnICON-URL-Correct);
}
/* ========== 连接错误 */
html .one-pan-tip-error { text-decoration: none;}
html .one-pan-tip-error::before {
background-image: var(--vbnICON-URL-Error);
}
/* ========== 带提取码 */
html .one-pan-tip-lock::before { background-image: var(--vbnICON-URL-Safety); }
/* ========== 夸克 */
html .one-pan-tip-partial::before { background-image: var(--vbnICON-URL-Info); }
`);
});
// #endregion
})();