Greasy Fork

Greasy Fork is available in English.

护眼模式助手 - 简化版(新增墨黑模式)- 传统设置版

全网通用护眼模式,简化版(新增墨黑模式)- 传统设置面板,集成bilivod夜间模式优化

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name              护眼模式助手 - 简化版(新增墨黑模式)- 传统设置版
// @namespace         https://github.com/syhyz1990/darkmode
// @version           5.2.1
// @description       全网通用护眼模式,简化版(新增墨黑模式)- 传统设置面板,集成bilivod夜间模式优化
// @author            YouXiaoHou & 适配优化
// @license           MIT
// @homepage          https://www.youxiaohou.com/tool/install-darkmode.html
// @supportURL        https://github.com/syhyz1990/darkmode
// @match             *://*/*
// @run-at            document-start
// @grant             GM_getValue
// @grant             GM_setValue
// @grant             GM_registerMenuCommand
// @grant             GM_unregisterMenuCommand
// @icon              data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMjggMTI4Ij48cGF0aCBkPSJNOTMuNSA5NC1WjEwLjYgMCAyMC4zLTMuMyAyOC4yLTktOC4zIDIyLjUtMzAuMiAzOC2LTU2IDM4LjYtMzIuNyAwLTU5LjMtMjUuOC01OS4zLTU3LjdTMzIuOSA4LjcgNjUuNyA4LjdoMi4yQzU0LjYgMTcgNDUuNyAzMS41IDQ1LjcgNDhjMCAyNS43IDI1LjcgNDYuNiA1Mi4xIDQ2LjZ6IiBmaWxsPSIjZmZiNTc4Ii8+PHBhdGggZD0iTTEyMS42IDgxLjhjLS44IDAtMS42LjItMi4zLjctNy41IDUuMy0xNi41IDguMS0yNS44IDguMS0yNC4yIDAtNDMuOS0xOS4lLTQzLUtI9mmgxMy43YzEuNiAwIDIuOSAxLjMgMi45IDIuOXMtMS4zIDIuOS0yLjkgMi45em0xMy4yLTMxLjFoLTE0LjRjLTEuNiAwLTIuOS0xLjMtMi45LTIuOSAwLTEgLjQtMS45IDEuMi0yLjRsNi4yLTQuMWgtNC43YzEuNiAwIDIuOSAxLjMgMi45IDIuOXMtMS4yIDIuOS0yLjggMi45eiIgZmlsbD0iIzQ0NCIvPjwvc3ZnPg==
// ==/UserScript==

;(function () {
    'use strict';

    // 存储所有菜单命令ID
    let menuCommands = [];

    let EyeProtect = {
        // 当前模式存储
        currentMode: null,

        // 默认配置
        defaults: {
            globalEnable: false,       // 全局开关
            enableList: [],           // 启用列表(白名单)
            autoExclude: true,        // 智能排除
            forcedEnableList: [],     // 强制启用列表
            originThemeColor: '#ffffff', // 原始主题色
            runDuringDay: true,       // 白天保持开启
            darkAuto: false,          // 跟随浏览器暗色模式
            customDayNight: '6:00|18:00', // 自定义昼夜时间
            autoSwitch: '',           // 自动切换模式
            customDark1: '60|50',     // 亮度模式设置
            customDark2: '60|40|50|50', // 暖色模式设置
            customDark3: '90',        // 反色模式设置
            dark3Exclude: 'img, .img, video, [style*="background"][style*="url"], svg, .video-player, .player, [class*="player"], [class*="Player"], [id*="player"], [id*="Player"], .plyr, .jw-player, .video-js', // 排除元素
            inkModeConfig: '#343c3e|#ffffff|#4a5457|#5d696c|#009688|#26a69a',
            siteSpecificModes: '{}'   // 网站专用模式
        },

        // 初始化
        init() {
            this.initConfig();
            this.saveOriginThemeColor();
            
            // 获取当前模式,修复可能的模式错误
            this.fixModeIssue();
            
            this.initMenu();
            this.applyMode();
            
            // 监听系统主题变化
            window.matchMedia('(prefers-color-scheme: dark)').addListener(() => {
                this.applyMode();
                this.refreshMenu();
            });
            
            // 监听页面动态加载
            this.observeDOMChanges();
        },

        // 修复模式问题:确保模式正确
        fixModeIssue() {
            let storedMode = this.getConfig('currentMode');
            const validModes = ['light', 'dark', 'ink'];
            
            // 如果存储的模式不是有效模式,重置为light
            if (!validModes.includes(storedMode)) {
                this.setConfig('currentMode', 'light');
                this.currentMode = 'light';
            } else {
                this.currentMode = storedMode;
            }
        },

        // 初始化配置
        initConfig() {
            for (let key in this.defaults) {
                let value = GM_getValue(key);
                if (value === undefined) {
                    GM_setValue(key, this.defaults[key]);
                }
            }
            
            // 初始化当前模式
            if (GM_getValue('currentMode') === undefined) {
                GM_setValue('currentMode', 'light');
                this.currentMode = 'light';
            }
        },

        // 获取配置值
        getConfig(key) {
            return GM_getValue(key);
        },

        // 设置配置值
        setConfig(key, value) {
            GM_setValue(key, value);
        },

        // 保存原始主题色
        saveOriginThemeColor() {
            let meta = document.querySelector('meta[name="theme-color"]');
            if (meta && meta.content) {
                this.setConfig('originThemeColor', meta.content);
            }
        },

        // 监听DOM变化(用于动态加载的页面)
        observeDOMChanges() {
            const observer = new MutationObserver((mutations) => {
                // 检查是否需要重新应用模式
                let style = document.querySelector('style[id^="eye-protect-"]');
                if (!style && this.shouldApplyMode()) {
                    setTimeout(() => this.applyMode(), 100);
                }
                
                // 对特定网站特别处理
                if (window.location.hostname.includes('123pan.com') ||
                    window.location.hostname.includes('github.com') ||
                    window.location.hostname.includes('hemudu.cc') ||
                    window.location.hostname.includes('bilivod.com') ||
                    window.location.hostname.includes('zzoc.cc') ||
                    window.location.hostname.includes('lanzou')) {
                    setTimeout(() => this.applyMode(), 300);
                }
            });
            
            observer.observe(document.body || document.documentElement, {
                childList: true,
                subtree: true
            });
        },

        // 判断是否为白天
        isDaytime() {
            let time = this.getConfig('customDayNight').split('|');
            let now = new Date();
            let currentTime = now.getHours() * 60 + now.getMinutes();
            let dayStart = this.timeToMinutes(time[0]);
            let dayEnd = this.timeToMinutes(time[1]);
            
            if (dayStart < dayEnd) {
                return currentTime >= dayStart && currentTime < dayEnd;
            } else {
                return currentTime >= dayStart || currentTime < dayEnd;
            }
        },

        timeToMinutes(timeStr) {
            let parts = timeStr.split(':');
            return parseInt(parts[0]) * 60 + parseInt(parts[1] || 0);
        },

        // 获取当前应该应用的模式
        getCurrentMode() {
            // 首先检查网站专用模式(最高优先级)
            let siteSpecificMode = this.getSiteSpecificMode();
            if (siteSpecificMode && siteSpecificMode !== 'default') {
                return siteSpecificMode;
            }
            
            // 确保只有有效模式
            let mode = this.currentMode || this.getConfig('currentMode');
            const validModes = ['light', 'dark', 'ink'];
            
            if (!validModes.includes(mode)) {
                mode = 'light';
                this.setConfig('currentMode', 'light');
            }
            
            // 如果启用了自动切换
            if (this.getConfig('autoSwitch')) {
                let modes = this.getConfig('autoSwitch').split('|');
                if (modes.length === 2) {
                    if (this.isDaytime()) {
                        mode = modes[0] === '1' ? 'dark' : modes[0] === '2' ? 'ink' : 'light';
                    } else {
                        mode = modes[1] === '1' ? 'dark' : modes[1] === '2' ? 'ink' : 'light';
                    }
                }
            }
            
            // 如果跟随浏览器暗色模式
            if (this.getConfig('darkAuto')) {
                let prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
                if (prefersDark && mode === 'light') {
                    mode = 'dark';
                }
            }
            
            return mode;
        },

        // 彻底清理所有样式和修改
        cleanupAllStyles() {
            // 1. 移除所有样式标签
            let styles = document.querySelectorAll('style[id^="eye-protect-"]');
            styles.forEach(style => style.remove());
            
            // 2. 恢复原始主题色
            let meta = document.querySelector('meta[name="theme-color"]');
            if (meta) {
                meta.content = this.getConfig('originThemeColor');
            }
            
            // 3. 移除动态添加的内联样式
            let elements = document.querySelectorAll('[data-eye-protect]');
            elements.forEach(element => {
                element.removeAttribute('data-eye-protect');
                element.removeAttribute('style');
            });
        },

        // 应用样式(带模式标识)
        applyStyle(css, modeId) {
            // 移除所有之前可能存在的样式
            this.cleanupAllStyles();
            
            let style = document.createElement('style');
            style.id = 'eye-protect-' + modeId;
            style.setAttribute('data-eye-protect-mode', modeId);
            style.innerHTML = css;
            document.head.appendChild(style);
            
            // 标记body,方便调试
            document.body.setAttribute('data-eye-protect', 'enabled');
            document.body.setAttribute('data-eye-mode', modeId);
        },

        // 获取网站专用模式
        getSiteSpecificMode() {
            try {
                let host = location.host;
                let siteModesStr = this.getConfig('siteSpecificModes') || '{}';
                let siteModes = {};
                
                siteModes = JSON.parse(siteModesStr);
                return siteModes[host] || null;
            } catch (e) {
                return null;
            }
        },

        // 设置网站专用模式
        setSiteSpecificMode(mode) {
            try {
                let host = location.host;
                let siteModesStr = this.getConfig('siteSpecificModes') || '{}';
                let siteModes = {};
                
                siteModes = JSON.parse(siteModesStr);
                
                if (mode === 'default' || mode === null) {
                    delete siteModes[host];
                } else {
                    siteModes[host] = mode;
                }
                
                this.setConfig('siteSpecificModes', JSON.stringify(siteModes));
            } catch (e) {
                console.error('设置网站专用模式出错:', e);
            }
        },

        // 应用夜间模式
        applyDarkMode() {
            // 彻底清理所有样式
            this.cleanupAllStyles();
            
            // 根据域名使用不同的处理逻辑
            let hostname = window.location.hostname;
            
            // 检查网站专用模式
            let siteSpecificMode = this.getSiteSpecificMode();
            
            if (siteSpecificMode === 'light') {
                // 如果网站专用模式是白天模式,清理样式
                this.cleanupAllStyles();
                return;
            } else if (hostname.includes('123pan.com')) {
                this.apply123PanInvertMode();
            } else if (hostname.includes('bilivod.com')) {
                // bilivod.com使用从第一个脚本移植的专门优化的夜间模式
                this.applyBilivodDarkMode();
            } else if (hostname.includes('lanzou')) {
                this.applyLanzouDarkMode();
            } else {
                // 其他网站使用经典夜间模式
                this.applyClassicDarkMode();
            }
            
            // 设置主题色为深色
            let meta = document.querySelector('meta[name="theme-color"]');
            if (meta) {
                meta.content = '#131313';
            } else {
                let metaEle = document.createElement('meta');
                metaEle.name = 'theme-color';
                metaEle.content = '#131313';
                document.head.appendChild(metaEle);
            }
        },

        // 经典夜间模式(恢复以前的样式)
        applyClassicDarkMode() {
            let style_30 = this.getConfig('customDark3') || '90';
            let dark3Exclude = this.getConfig('dark3Exclude');
            
            let style_31 = `
                html {
                    filter: invert(${style_30}%) !important;
                    text-shadow: 0 0 0 !important;
                }
                ${dark3Exclude} {
                    filter: invert(1) !important;
                }
                img[alt="[公式]"] {
                    filter: none !important;
                }
                
                /* 确保设置面板不受影响 */
                .eye-protect-settings-panel,
                .eye-protect-settings-panel * {
                    filter: none !important;
                    background: none !important;
                    color: inherit !important;
                }
                
                /* 滚动条样式 */
                ::-webkit-scrollbar {
                    height: 12px !important;
                    width: 12px !important;
                }
                ::-webkit-scrollbar-thumb {
                    border-radius: 0;
                    border-color: transparent;
                    border-style: dashed;
                    background-color: #3f4752 !important;
                    background-clip: padding-box;
                    transition: background-color .32s ease-in-out;
                }
                ::-webkit-scrollbar-corner {
                    background: #202020 !important;
                }
                ::-webkit-scrollbar-track {
                    background-color: #22272e !important;
                }
                ::-webkit-scrollbar-thumb:hover {
                    background: #3f4752 !important;
                }
            `;
            
            if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1) {
                style_31 = `
                    html {
                        filter: invert(${style_30}%) !important;
                        background-image: url();
                        text-shadow: 0 0 0 !important;
                    }
                    ${dark3Exclude} {
                        filter: invert(1) !important;
                    }
                    img[alt="[公式]"] {
                        filter: none !important;
                    }
                    
                    /* 确保设置面板不受影响 */
                    .eye-protect-settings-panel,
                    .eye-protect-settings-panel * {
                        filter: none !important;
                        background: none !important;
                        color: inherit !important;
                    }
                `;
            }
            
            this.applyStyle(style_31, 'dark-mode-classic');
        },

        // bilivod.com专用夜间模式(从第一个脚本移植的优化版本)
        applyBilivodDarkMode() {
            let style_30 = this.getConfig('customDark3') || '90';
            let isType32Page = window.location.pathname.includes('/type/32');
            
            let css = `
                /* bilivod.com专用夜间模式 - 使用${style_30}%反色 */
                
                /* 1. 对整个HTML应用反色 */
                html {
                    filter: invert(${style_30}%) hue-rotate(180deg) !important;
                    background-color: #1a1a1a !important;
                    text-shadow: 0 0 0 !important;
                }
                
                /* 2. 排除不需要反色的元素 */
                img, 
                svg, 
                video, 
                canvas,
                iframe, 
                embed, 
                object,
                [class*="icon"],
                [class*="Icon"],
                .icon, 
                .svg-icon, 
                .avatar, 
                .logo, 
                .thumbnail,
                .emoji,
                .emoticon,
                [src*=".svg"],
                [src*=".png"],
                [src*=".jpg"],
                [src*=".jpeg"],
                [src*=".gif"],
                [src*=".webp"],
                .video-player,
                .player,
                [class*="player"],
                [class*="Player"],
                [id*="player"],
                [id*="Player"],
                .plyr,
                .jw-player,
                .video-js {
                    filter: invert(1) hue-rotate(180deg) !important;
                }
                
                /* 3. 特殊处理 - 确保背景色正确 */
                body {
                    background-color: #1a1a1a !important;
                }
                
                /* 4. bilivod.com特定优化 */
                
                /* 4.1 覆盖所有白色背景 */
                body, 
                div, 
                section, 
                main, 
                article, 
                nav, 
                header, 
                footer, 
                aside,
                .container, 
                .wrapper, 
                .content, 
                .main-content,
                .panel, 
                .card, 
                .box, 
                .block,
                .list, 
                .item, 
                .entry,
                .video-list,
                .video-item,
                .vod-item,
                .movie-item,
                .film-item {
                    background-color: #1a1a1a !important;
                    color: #d0d0d0 !important;
                    border-color: #333 !important;
                }
                
                /* 4.2 强力覆盖所有内联白色背景 */
                [style*="background-color: white"],
                [style*="background: white"],
                [style*="background:#fff"],
                [style*="background-color:#fff"],
                [style*="background-color: #fff"],
                [style*="background-color: #ffffff"],
                [style*="background: #ffffff"],
                [style*="background-color: #f0f0f0"],
                [style*="background-color: #f5f5f5"],
                [style*="background-color: #f8f8f8"],
                [style*="background-color: #fafafa"],
                [style*="background-color: #fcfcfc"] {
                    background-color: #1a1a1a !important;
                }
                
                [style*="color: black"],
                [style*="color:#000"],
                [style*="color: #000"],
                [style*="color: #333"],
                [style*="color: #555"],
                [style*="color: #666"] {
                    color: #d0d0d0 !important;
                }
                
                /* 4.3 导航栏和头部 */
                .header, .navbar, .nav, .top-bar,
                .menu, .toolbar, .bar,
                [class*="header"], [class*="Header"],
                [class*="nav"], [class*="Nav"],
                [class*="menu"], [class*="Menu"] {
                    background-color: #222 !important;
                }
                
                /* 4.4 侧边栏 */
                .sidebar, .side-panel, .side-nav {
                    background-color: #222 !important;
                }
                
                /* 4.5 按钮和表单 */
                button, .btn, .button,
                input, textarea, select,
                .form-control, .input, .search-input {
                    background-color: #2a2a2a !important;
                    color: #e0e0e0 !important;
                    border-color: #444 !important;
                }
                
                /* 4.6 链接和蓝色区域 */
                a, a:link, a:visited {
                    color: #ff7700 !important; /* 蓝色反色为橙色 */
                }
                a:hover {
                    color: #ff9933 !important;
                }
                
                [style*="background-color: blue"],
                [style*="background:#00f"],
                [style*="background-color:#00f"],
                [style*="background-color: #00f"],
                [style*="background-color: #0000ff"],
                [style*="background-color: #007bff"],
                .btn-primary, .primary, .blue {
                    background-color: #ff7700 !important;
                }
                
                /* 4.7 视频卡片和缩略图 */
                .video-card, .vod-card, .movie-card,
                .film-card, .thumb, .thumbnail,
                .poster, .cover {
                    background-color: #222 !important;
                    border-color: #333 !important;
                }
                
                .video-title, .vod-title, .movie-title,
                .film-title, .title, .name {
                    color: #ffffff !important;
                }
                
                .video-info, .vod-info, .movie-info,
                .film-info, .info, .meta {
                    color: #a0a0a0 !important;
                }
                
                /* 4.8 分页 */
                .pagination, .page-nav, .page-numbers {
                    background-color: #1a1a1a !important;
                }
                
                .page-item, .page-link {
                    background-color: #2a2a2a !important;
                    color: #e0e0e0 !important;
                    border-color: #444 !important;
                }
                
                .active .page-link {
                    background-color: #ff7700 !important;
                    color: #ffffff !important;
                }
                
                /* 4.9 搜索框 */
                .search-box, .search-bar, .search-input {
                    background-color: #2a2a2a !important;
                    color: #e0e0e0 !important;
                    border-color: #444 !important;
                }
                
                /* 4.10 分类和标签 */
                .category, .tag, .label,
                .badge, .chip, .mark {
                    background-color: #2a2a2a !important;
                    color: #e0e0e0 !important;
                    border-color: #444 !important;
                }
                
                /* 4.11 滚动条 */
                ::-webkit-scrollbar {
                    background-color: #1a1a1a !important;
                }
                ::-webkit-scrollbar-thumb {
                    background-color: #444 !important;
                }
                ::-webkit-scrollbar-thumb:hover {
                    background-color: #555 !important;
                }
                ::-webkit-scrollbar-track {
                    background-color: #222 !important;
                }
                
                /* 4.12 确保Firefox兼容性 */
                @-moz-document url-prefix() {
                    html {
                        filter: invert(${style_30}%) hue-rotate(180deg) !important;
                        background-image: url() !important;
                        background-color: #1a1a1a !important;
                    }
                }
                
                /* 4.13 确保设置面板不受影响 */
                .eye-protect-settings-panel,
                .eye-protect-settings-panel * {
                    filter: none !important;
                    background: none !important;
                    color: inherit !important;
                }
            `;
            
            // 专门为/type/32页面添加额外优化
            if (isType32Page) {
                css += `
                    /* === 专门针对 /type/32 页面的优化 === */
                    
                    /* 1. 分类页面标题区域优化 */
                    .type-header, .category-header, .page-header,
                    .title-area, .header-area {
                        background-color: #222 !important;
                        border-bottom: 2px solid #333 !important;
                    }
                    
                    /* 2. 分类页面内容区域 */
                    .type-content, .category-content, .page-content,
                    .main-area, .content-area {
                        background-color: #1a1a1a !important;
                    }
                    
                    /* 3. 分类页面侧边栏 */
                    .type-sidebar, .category-sidebar, .side-content,
                    .filter-area, .filter-sidebar {
                        background-color: #222 !important;
                        border-right: 1px solid #333 !important;
                    }
                    
                    /* 4. 分类页面筛选器 */
                    .filter, .filter-item, .filter-group,
                    .sort, .sort-item, .sort-group {
                        background-color: #2a2a2a !important;
                        color: #e0e0e0 !important;
                        border-color: #444 !important;
                    }
                    
                    /* 5. 分类页面视频列表 */
                    .type-video-list, .category-video-list,
                    .video-grid, .video-container {
                        background-color: #1a1a1a !important;
                    }
                    
                    /* 6. 分类页面视频项优化 */
                    .type-video-item, .category-video-item,
                    .vod-grid-item, .movie-grid-item {
                        background-color: #222 !important;
                        border: 1px solid #333 !important;
                        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3) !important;
                    }
                    
                    /* 7. 分类页面分页优化 */
                    .type-pagination, .category-pagination,
                    .pagination-container, .pagination-wrapper {
                        background-color: #1a1a1a !important;
                        border-top: 1px solid #333 !important;
                    }
                    
                    /* 8. 分类页面底部 */
                    .type-footer, .category-footer, .page-footer {
                        background-color: #222 !important;
                        border-top: 2px solid #333 !important;
                    }
                    
                    /* 9. 处理分类页面的特殊背景 */
                    [class*="type-32"], [class*="category-32"],
                    [id*="type32"], [id*="category32"] {
                        background-color: #1a1a1a !important;
                        color: #d0d0d0 !important;
                    }
                    
                    /* 10. 分类页面广告区域处理 */
                    .ad, .advertisement, .adsense,
                    [class*="ad-"], [id*="ad-"],
                    [class*="ads-"], [id*="ads-"] {
                        filter: brightness(0.8) !important;
                        background-color: #2a2a2a !important;
                    }
                    
                    /* 11. 分类页面工具提示 */
                    .tooltip, .tip, .hint {
                        background-color: #2a2a2a !important;
                        color: #e0e0e0 !important;
                        border: 1px solid #444 !important;
                    }
                    
                    /* 12. 分类页面模态框 */
                    .modal, .popup, .dialog,
                    .overlay, .lightbox {
                        background-color: rgba(0, 0, 0, 0.8) !important;
                    }
                    
                    /* 13. 分类页面加载动画 */
                    .loading, .spinner, .loader {
                        background-color: transparent !important;
                    }
                    
                    /* 14. 分类页面空状态 */
                    .empty, .no-results, .no-data {
                        background-color: #1a1a1a !important;
                        color: #888 !important;
                    }
                    
                    /* 15. 分类页面悬停效果优化 */
                    .video-item:hover, .vod-item:hover,
                    .movie-item:hover, .film-item:hover {
                        background-color: #2a2a2a !important;
                        transform: translateY(-2px) !important;
                        box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4) !important;
                    }
                    
                    /* 16. 分类页面选中状态 */
                    .selected, .active-item, .current {
                        background-color: #333 !important;
                        border-color: #ff7700 !important;
                    }
                    
                    /* 17. 分类页面按钮组 */
                    .button-group, .btn-group, .action-group {
                        background-color: #222 !important;
                        border: 1px solid #333 !important;
                    }
                    
                    /* 18. 分类页面表单组 */
                    .form-group, .input-group, .field-group {
                        background-color: #222 !important;
                    }
                    
                    /* 19. 分类页面标签组 */
                    .tag-group, .label-group, .badge-group {
                        background-color: #222 !important;
                    }
                    
                    /* 20. 分类页面网格系统 */
                    .grid, .row, .column {
                        background-color: #1a1a1a !important;
                    }
                    
                    .grid-item, .col, .cell {
                        background-color: #222 !important;
                        border-color: #333 !important;
                    }
                    
                    /* 21. 分类页面响应式优化 */
                    @media (max-width: 768px) {
                        .type-header, .category-header {
                            background-color: #222 !important;
                        }
                        
                        .type-sidebar, .category-sidebar {
                            background-color: #222 !important;
                        }
                        
                        .video-item, .vod-item {
                            background-color: #222 !important;
                        }
                    }
                `;
            }
            
            this.applyStyle(css, 'dark-mode-bilivod');
        },

        // 123云盘优化的反色模式
        apply123PanInvertMode() {
            let style_30 = this.getConfig('customDark3') || '90';
            
            let css = `
                /* 123云盘优化反色模式 */
                html {
                    filter: invert(${style_30}%) hue-rotate(180deg) !important;
                    background-color: #1a1a1a !important;
                    text-shadow: 0 0 0 !important;
                }
                img, svg, video, canvas, iframe {
                    filter: invert(1) hue-rotate(180deg) !important;
                }
                body {
                    background-color: #1a1a1a !important;
                    margin: 0 !important;
                    padding: 0 !important;
                }
                .btn-primary, .primary, .blue,
                [style*="background-color: #007bff"],
                [style*="background-color: #0066cc"] {
                    background-color: #ff7700 !important;
                    border-color: #ff7700 !important;
                    color: white !important;
                }
                .header, .navbar, .sidebar, .side-nav {
                    background-color: #222 !important;
                    border-color: #333 !important;
                }
                .file-list, .folder-list, .grid-view, .list-view {
                    background-color: #1a1a1a !important;
                    border-color: #333 !important;
                }
                .file-item, .folder-item, .grid-item {
                    background-color: #222 !important;
                    color: #e0e0e0 !important;
                    border-color: #333 !important;
                    margin: 2px 0 !important;
                }
                .file-item:hover, .folder-item:hover {
                    background-color: #2a2a2a !important;
                }
                input, textarea, select, .form-control, .search-input {
                    background-color: #2a2a2a !important;
                    color: #e0e0e0 !important;
                    border-color: #444 !important;
                }
                a, a:link, a:visited {
                    color: #ff7700 !important;
                }
                a:hover {
                    color: #ff9933 !important;
                }
                ::-webkit-scrollbar {
                    background-color: #222 !important;
                }
                ::-webkit-scrollbar-thumb {
                    background-color: #444 !important;
                }
                ::-webkit-scrollbar-thumb:hover {
                    background-color: #ff7700 !important;
                }
                @-moz-document url-prefix() {
                    html {
                        filter: invert(${style_30}%) hue-rotate(180deg) !important;
                        background-image: url() !important;
                        background-color: #1a1a1a !important;
                    }
                }
                
                /* 确保设置面板不受影响 */
                .eye-protect-settings-panel,
                .eye-protect-settings-panel * {
                    filter: none !important;
                    background: none !important;
                    color: inherit !important;
                }
            `;
            
            this.applyStyle(css, 'dark-mode-123pan');
        },

        // 蓝奏云优化的反色模式
        applyLanzouDarkMode() {
            let style_30 = this.getConfig('customDark3') || '90';
            
            let css = `
                /* 蓝奏云夜间模式优化版 */
                html {
                    filter: invert(${style_30}%) hue-rotate(180deg) !important;
                    background-color: #1a1a1a !important;
                    text-shadow: 0 0 0 !important;
                }
                
                img, svg, video, canvas, iframe,
                .icon, .logo, .qrcode, .code-img,
                .verify-img, .captcha-img, .ad-container {
                    filter: invert(1) hue-rotate(180deg) !important;
                }
                
                body, html {
                    background-color: #1a1a1a !important;
                    color: #e0e0e0 !important;
                }
                
                div, section, main, article, nav, header, footer, aside,
                .container, .wrapper, .content, .main, .panel, .box {
                    background-color: #1a1a1a !important;
                    color: #e0e0e0 !important;
                }
                
                .file-list, .folder-list, .data-list,
                .table, .list-container, .list-box {
                    background-color: #222 !important;
                    border: 1px solid #333 !important;
                    border-radius: 6px !important;
                    padding: 10px !important;
                }
                
                .file-item, .folder-item, .list-item,
                tr, .data-item, .list-row {
                    background-color: #2a2a2a !important;
                    color: #e0e0e0 !important;
                    border-color: #333 !important;
                    padding: 10px 15px !important;
                }
                
                button, .btn, input[type="button"],
                input[type="submit"], .download-btn,
                .submit-btn, .confirm-btn {
                    background-color: #0066cc !important;
                    color: white !important;
                    border: 1px solid #0066cc !important;
                    border-radius: 4px !important;
                    padding: 8px 16px !important;
                    cursor: pointer !important;
                }
                
                button:hover, .btn:hover, .download-btn:hover {
                    background-color: #0080ff !important;
                    border-color: #0080ff !important;
                }
                
                input, textarea, select, .form-control,
                .search-input, .text-input {
                    background-color: #2a2a2a !important;
                    color: #e0e0e0 !important;
                    border: 1px solid #444 !important;
                    border-radius: 4px !important;
                    padding: 8px 12px !important;
                }
                
                a, a:link, a:visited {
                    color: #66aaff !important;
                }
                
                a:hover, a:active {
                    color: #88ccff !important;
                }
                
                ::-webkit-scrollbar {
                    width: 12px !important;
                    height: 12px !important;
                    background-color: #222 !important;
                }
                
                ::-webkit-scrollbar-thumb {
                    background-color: #444 !important;
                    border-radius: 6px !important;
                }
                
                @-moz-document url-prefix() {
                    html {
                        filter: invert(${style_30}%) hue-rotate(180deg) !important;
                        background-image: url() !important;
                        background-color: #1a1a1a !important;
                    }
                }
                
                /* 确保设置面板不受影响 */
                .eye-protect-settings-panel,
                .eye-protect-settings-panel * {
                    filter: none !important;
                    background: none !important;
                    color: inherit !important;
                }
            `;
            
            this.applyStyle(css, 'dark-mode-lanzou');
        },

        // 应用墨黑模式
        applyInkMode() {
            // 彻底清理所有样式
            this.cleanupAllStyles();
            
            // 获取墨黑模式配置
            let config = this.getConfig('inkModeConfig').split('|');
            let backgroundColor = config[0] || '#343c3e';
            let textColor = config[1] || '#ffffff';
            let secondaryBg = config[2] || '#4a5457';
            let borderColor = config[3] || '#5d696c';
            let primaryColor = config[4] || '#009688';
            let hoverColor = config[5] || '#26a69a';
            
            let css = this.generateInkModeCSS(backgroundColor, textColor, secondaryBg, borderColor, primaryColor, hoverColor);
            
            this.applyStyle(css, 'ink-mode');
            
            // 设置主题色
            let meta = document.querySelector('meta[name="theme-color"]');
            if (meta) {
                meta.content = backgroundColor;
            } else {
                let metaEle = document.createElement('meta');
                metaEle.name = 'theme-color';
                metaEle.content = backgroundColor;
                document.head.appendChild(metaEle);
            }
        },

        // 生成墨黑模式CSS
        generateInkModeCSS(bgColor, textColor, secondaryBg, borderColor, primaryColor, hoverColor) {
            return `
                /* 墨黑模式 */
                html, body {
                    background-color: ${bgColor} !important;
                    color: ${textColor} !important;
                }
                div, section, main, article, nav, header, footer, aside,
                .container, .wrapper, .content, .card, .box {
                    background-color: ${bgColor} !important;
                    color: ${textColor} !important;
                    border-color: ${borderColor} !important;
                }
                p, span, h1, h2, h3, h4, h5, h6 {
                    color: ${textColor} !important;
                }
                a, a:link, a:visited {
                    color: ${primaryColor} !important;
                }
                a:hover, a:active {
                    color: ${hoverColor} !important;
                }
                button, .btn, input[type="button"], input[type="submit"] {
                    background-color: ${secondaryBg} !important;
                    color: ${textColor} !important;
                    border-color: ${borderColor} !important;
                }
                button:hover, .btn:hover {
                    background-color: ${primaryColor} !important;
                    border-color: ${primaryColor} !important;
                }
                input, textarea, select {
                    background-color: ${secondaryBg} !important;
                    color: ${textColor} !important;
                    border-color: ${borderColor} !important;
                }
                input:focus, textarea:focus {
                    border-color: ${primaryColor} !important;
                }
                table, tr, th, td {
                    background-color: ${bgColor} !important;
                    color: ${textColor} !important;
                    border-color: ${borderColor} !important;
                }
                th {
                    background-color: ${secondaryBg} !important;
                }
                tr:nth-child(even) {
                    background-color: ${secondaryBg} !important;
                }
                ::-webkit-scrollbar {
                    width: 12px !important;
                    height: 12px !important;
                    background-color: ${secondaryBg} !important;
                }
                ::-webkit-scrollbar-thumb {
                    background-color: ${borderColor} !important;
                }
                ::-webkit-scrollbar-thumb:hover {
                    background-color: ${primaryColor} !important;
                }
                
                /* 确保设置面板不受影响 */
                .eye-protect-settings-panel,
                .eye-protect-settings-panel * {
                    filter: none !important;
                    background: none !important;
                    color: inherit !important;
                }
            `;
        },

        // 是否应该排除当前网站
        shouldExcludeSite() {
            let hostname = window.location.hostname;
            
            // 对于特定网站,我们使用专门的处理逻辑
            if (hostname.includes('123pan.com') || 
                hostname.includes('github.com') ||
                hostname.includes('hemudu.cc') ||
                hostname.includes('bilivod.com') ||
                hostname.includes('zzoc.cc') ||
                hostname.includes('lanzou')) {
                return false;
            }
            
            let forcedList = this.getConfig('forcedEnableList');
            if (forcedList.includes(location.host)) {
                return false;
            }
            
            // 通用排除逻辑
            let html = document.documentElement;
            let body = document.body;
            
            if (document.querySelector('head>meta[name="color-scheme"],head>link[href^="resource:"]')) {
                return true;
            }
            
            if (html.className.includes('dark') || body.className.includes('dark')) {
                return true;
            }
            
            if (html.getAttribute('data-theme') && html.getAttribute('data-theme').includes('dark')) {
                return true;
            }
            
            if (html.getAttribute('data-color-mode') && html.getAttribute('data-color-mode').includes('dark')) {
                return true;
            }
            
            return false;
        },

        // 是否应该应用模式
        shouldApplyMode() {
            let globalEnable = this.getConfig('globalEnable');
            let enableList = this.getConfig('enableList');
            let host = location.host;
            
            // 如果当前模式被激活,即使全局未开启,也应该应用
            let currentMode = this.getCurrentMode();
            if ((currentMode === 'dark' || currentMode === 'ink') && enableList.includes(host)) {
                return true;
            }
            
            return globalEnable || enableList.includes(host);
        },

        // 应用模式
        applyMode() {
            if (!this.shouldApplyMode()) {
                this.cleanupAllStyles();
                return;
            }
            
            // 智能排除逻辑
            if (this.getConfig('autoExclude') && this.shouldExcludeSite()) {
                this.cleanupAllStyles();
                return;
            }
            
            // 检查网站专用模式
            let siteSpecificMode = this.getSiteSpecificMode();
            
            if (siteSpecificMode && siteSpecificMode !== 'default') {
                // 应用网站专用模式
                switch(siteSpecificMode) {
                    case 'light':
                        this.cleanupAllStyles();
                        break;
                    case 'dark':
                        this.applyDarkMode();
                        break;
                    case 'ink':
                        this.applyInkMode();
                        break;
                }
            } else {
                // 使用全局模式
                let mode = this.getCurrentMode();
                switch(mode) {
                    case 'dark':
                        this.applyDarkMode();
                        break;
                    case 'ink':
                        this.applyInkMode();
                        break;
                    case 'light':
                    default:
                        this.cleanupAllStyles();
                        break;
                }
            }
        },

        // 切换模式
        switchMode() {
            // 检查是否有网站专用模式
            let siteSpecificMode = this.getSiteSpecificMode();
            if (siteSpecificMode && siteSpecificMode !== 'default') {
                // 如果有网站专用模式,显示提示
                this.showNotification('当前网站使用专用模式,请在设置面板中修改');
                setTimeout(() => this.showSettings(), 100);
                return;
            }
            
            let currentMode = this.currentMode || this.getConfig('currentMode') || 'light';
            let nextMode = currentMode === 'light' ? 'dark' : 
                          currentMode === 'dark' ? 'ink' : 'light';
            
            // 更新当前模式
            this.currentMode = nextMode;
            this.setConfig('currentMode', nextMode);
            
            // 显示通知
            this.showNotification(`正在切换到 ${this.getModeName(nextMode)}`);
            
            // 立即应用新模式
            setTimeout(() => {
                this.applyMode();
                this.refreshMenu();
                this.showNotification(`已切换到 ${this.getModeName(nextMode)}`);
            }, 100);
        },

        // 获取模式名称
        getModeName(mode) {
            switch(mode) {
                case 'light':
                    return '白天模式';
                case 'dark':
                    return '夜间模式';
                case 'ink':
                    return '墨黑模式';
                default:
                    return '白天模式';
            }
        },

        // 获取网站模式名称
        getSiteModeName(mode) {
            switch(mode) {
                case 'light': return '白天模式';
                case 'dark': return '夜间模式';
                case 'ink': return '墨黑模式';
                default: return '默认';
            }
        },

        // 切换全局开关
        toggleGlobal() {
            let current = this.getConfig('globalEnable');
            this.setConfig('globalEnable', !current);
            this.applyMode();
            this.refreshMenu();
            this.showNotification(!current ? '已开启全局模式' : '已关闭全局模式');
        },

        // 切换当前网站开关(白名单管理)
        toggleCurrentSite() {
            let enableList = this.getConfig('enableList');
            let host = location.host;
            
            if (enableList.includes(host)) {
                // 从白名单中移除,立即禁用
                enableList = enableList.filter(domain => domain !== host);
                this.cleanupAllStyles();
                this.setConfig('enableList', enableList);
                this.showNotification('已在当前网站禁用护眼模式');
            } else {
                // 添加到白名单,立即启用
                enableList.push(host);
                this.setConfig('enableList', enableList);
                this.applyMode();
                this.showNotification('已在当前网站启用护眼模式');
            }
            
            // 刷新菜单显示
            this.refreshMenu();
        },

        // 切换强制启用
        toggleForceEnable() {
            let forcedList = this.getConfig('forcedEnableList');
            let host = location.host;
            
            if (forcedList.includes(host)) {
                forcedList = forcedList.filter(domain => domain !== host);
                this.showNotification('已取消强制启用当前网站');
            } else {
                forcedList.push(host);
                this.showNotification('已强制启用当前网站');
            }
            
            this.setConfig('forcedEnableList', forcedList);
            this.applyMode();
            this.refreshMenu();
        },

        // 显示通知
        showNotification(message) {
            // 先移除可能存在的旧通知
            let oldNotifications = document.querySelectorAll('.eye-protect-notification');
            oldNotifications.forEach(notification => {
                notification.remove();
            });
            
            let notification = document.createElement('div');
            notification.className = 'eye-protect-notification';
            notification.style.cssText = `
                position: fixed;
                top: 20px;
                right: 20px;
                background: rgba(0, 0, 0, 0.8);
                color: white;
                padding: 10px 20px;
                border-radius: 5px;
                z-index: 999999;
                font-size: 14px;
                box-shadow: 0 2px 5px rgba(0,0,0,0.2);
                opacity: 1;
                transition: opacity 0.5s;
                max-width: 300px;
                word-wrap: break-word;
            `;
            notification.textContent = message;
            document.body.appendChild(notification);
            
            setTimeout(() => {
                notification.style.opacity = '0';
                setTimeout(() => notification.remove(), 500);
            }, 2000);
        },

        // 显示设置面板
        showSettings() {
            // 移除现有的设置面板
            let existingPanel = document.querySelector('.eye-protect-settings-panel');
            if (existingPanel) {
                existingPanel.remove();
                return;
            }
            
            // 获取当前配置
            let currentMode = this.getCurrentMode();
            let globalEnable = this.getConfig('globalEnable');
            let enableList = this.getConfig('enableList');
            let autoExclude = this.getConfig('autoExclude');
            let forcedList = this.getConfig('forcedEnableList');
            let runDuringDay = this.getConfig('runDuringDay');
            let darkAuto = this.getConfig('darkAuto');
            let inkConfig = this.getConfig('inkModeConfig');
            let autoSwitch = this.getConfig('autoSwitch');
            let customDayNight = this.getConfig('customDayNight');
            let customDark3 = this.getConfig('customDark3');
            let host = location.host;
            let siteEnabled = enableList.includes(host);
            let isForced = forcedList.includes(host);
            
            // 获取当前网站的专用模式
            let siteSpecificMode = this.getSiteSpecificMode();
            
            // 创建设置面板
            let panel = document.createElement('div');
            panel.className = 'eye-protect-settings-panel';
            
            // 使用亮色主题样式,不受当前模式影响
            panel.style.cssText = `
                position: fixed !important;
                top: 50% !important;
                left: 50% !important;
                transform: translate(-50%, -50%) !important;
                width: 500px !important;
                max-width: 90% !important;
                max-height: 80vh !important;
                background: #ffffff !important;
                color: #333333 !important;
                border-radius: 10px !important;
                box-shadow: 0 5px 20px rgba(0,0,0,0.2) !important;
                z-index: 1000000 !important;
                overflow: hidden !important;
                font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;
                border: 1px solid #e0e0e0 !important;
            `;
            
            // 面板内容 - 使用亮色主题
            panel.innerHTML = `
                <div class="settings-header" style="
                    background: #f5f5f5 !important;
                    color: #333333 !important;
                    padding: 15px !important;
                    border-radius: 10px 10px 0 0 !important;
                    display: flex !important;
                    justify-content: space-between !important;
                    align-items: center !important;
                    border-bottom: 1px solid #e0e0e0 !important;
                ">
                    <div class="settings-title" style="
                        font-size: 18px !important;
                        font-weight: bold !important;
                        color: #333333 !important;
                    ">🛡️ 护眼模式设置 v5.2.1</div>
                    <button class="close-btn" id="closeBtn" style="
                        background: transparent !important;
                        border: none !important;
                        color: #666666 !important;
                        font-size: 24px !important;
                        cursor: pointer !important;
                        padding: 0 !important;
                        width: 30px !important;
                        height: 30px !important;
                        line-height: 30px !important;
                        text-align: center !important;
                        border-radius: 4px !important;
                    ">×</button>
                </div>
                
                <div class="settings-content" style="
                    padding: 20px !important;
                    max-height: calc(80vh - 70px) !important;
                    overflow-y: auto !important;
                    overflow-x: hidden !important;
                    background: #ffffff !important;
                    color: #333333 !important;
                ">
                    <div class="settings-section" style="
                        background: #f9f9f9 !important;
                        border-radius: 8px !important;
                        padding: 15px !important;
                        margin-bottom: 15px !important;
                        border: 1px solid #e0e0e0 !important;
                    ">
                        <h3 style="
                            margin: 0 0 15px 0 !important;
                            color: #333333 !important;
                            font-size: 16px !important;
                        ">📱 当前状态</h3>
                        <div class="setting-item" style="
                            display: flex !important;
                            justify-content: space-between !important;
                            align-items: center !important;
                            margin-bottom: 12px !important;
                            padding: 8px 0 !important;
                        ">
                            <span class="setting-label" style="
                                font-size: 14px !important;
                                color: #555555 !important;
                            ">当前模式:</span>
                            <span class="setting-value" style="
                                font-size: 14px !important;
                                color: #333333 !important;
                            ">
                                ${currentMode === 'light' ? '☀️ 白天模式' : currentMode === 'dark' ? '🌙 夜间模式' : '🖋️ 墨黑模式'}
                            </span>
                        </div>
                        <div class="setting-item" style="
                            display: flex !important;
                            justify-content: space-between !important;
                            align-items: center !important;
                            margin-bottom: 12px !important;
                            padding: 8px 0 !important;
                        ">
                            <span class="setting-label" style="
                                font-size: 14px !important;
                                color: #555555 !important;
                            ">当前网站:</span>
                            <span class="setting-value" style="
                                font-size: 14px !important;
                                color: #333333 !important;
                            ">${host}</span>
                        </div>
                        <div class="setting-item" style="
                            display: flex !important;
                            justify-content: space-between !important;
                            align-items: center !important;
                            margin-bottom: 12px !important;
                            padding: 8px 0 !important;
                        ">
                            <span class="setting-label" style="
                                font-size: 14px !important;
                                color: #555555 !important;
                            ">白名单状态:</span>
                            <span class="setting-value" style="
                                font-size: 14px !important;
                                color: #333333 !important;
                            ">${siteEnabled ? '✅ 已启用' : '❌ 未启用'}</span>
                        </div>
                        <div class="setting-item" style="
                            display: flex !important;
                            justify-content: space-between !important;
                            align-items: center !important;
                            margin-bottom: 12px !important;
                            padding: 8px 0 !important;
                        ">
                            <span class="setting-label" style="
                                font-size: 14px !important;
                                color: #555555 !important;
                            ">强制启用:</span>
                            <span class="setting-value" style="
                                font-size: 14px !important;
                                color: #333333 !important;
                            ">${isForced ? '⚡ 已强制' : '🚫 未强制'}</span>
                        </div>
                        <div class="setting-item" style="
                            display: flex !important;
                            justify-content: space-between !important;
                            align-items: center !important;
                            padding: 8px 0 !important;
                        ">
                            <span class="setting-label" style="
                                font-size: 14px !important;
                                color: #555555 !important;
                            ">网站专用模式:</span>
                            <span class="setting-value" style="
                                font-size: 14px !important;
                                color: #333333 !important;
                            ">${siteSpecificMode ? this.getSiteModeName(siteSpecificMode) : '默认'}</span>
                        </div>
                    </div>
                    
                    <!-- 网站专用模式设置 -->
                    <div class="settings-section" style="
                        background: #f9f9f9 !important;
                        border-radius: 8px !important;
                        padding: 15px !important;
                        margin-bottom: 15px !important;
                        border: 1px solid #e0e0e0 !important;
                    ">
                        <h3 style="
                            margin: 0 0 15px 0 !important;
                            color: #333333 !important;
                            font-size: 16px !important;
                        ">🌐 网站专用模式设置</h3>
                        <div class="help-text" style="
                            font-size: 12px !important;
                            color: #666666 !important;
                            margin-bottom: 10px !important;
                        ">为当前网站设置专用模式,此设置仅在白名单或全局开启时生效</div>
                        <div class="site-mode-select" style="
                            margin-top: 10px !important;
                            padding: 10px !important;
                            background: #ffffff !important;
                            border-radius: 6px !important;
                            border: 1px solid #e0e0e0 !important;
                        ">
                            <label for="siteSpecificMode" style="
                                display: block !important;
                                margin-bottom: 5px !important;
                                font-weight: bold !important;
                                color: #333333 !important;
                            ">${host} 的专用模式:</label>
                            <select id="siteSpecificMode" style="
                                width: 100% !important;
                                padding: 8px 12px !important;
                                border: 1px solid #e0e0e0 !important;
                                border-radius: 6px !important;
                                background: #ffffff !important;
                                color: #333333 !important;
                                font-size: 14px !important;
                            ">
                                <option value="default" ${!siteSpecificMode ? 'selected' : ''}>默认(跟随全局设置)</option>
                                <option value="light" ${siteSpecificMode === 'light' ? 'selected' : ''}>☀️ 白天模式</option>
                                <option value="dark" ${siteSpecificMode === 'dark' ? 'selected' : ''}>🌙 夜间模式</option>
                                <option value="ink" ${siteSpecificMode === 'ink' ? 'selected' : ''}>🖋️ 墨黑模式</option>
                            </select>
                            <div class="current-site-mode" style="
                                font-size: 13px !important;
                                color: #333333 !important;
                                margin-top: 5px !important;
                            ">
                                当前设置:${siteSpecificMode ? this.getSiteModeName(siteSpecificMode) : '默认'}
                            </div>
                            <div class="help-text" style="
                                font-size: 12px !important;
                                color: #666666 !important;
                                margin-top: 5px !important;
                                line-height: 1.4 !important;
                            ">
                                <strong>注意:</strong>bilivod.com已内置专门优化的夜间模式,无需单独设置
                            </div>
                        </div>
                        <div class="action-buttons" style="
                            display: flex !important;
                            gap: 10px !important;
                            margin-top: 15px !important;
                        ">
                            <button class="btn btn-secondary" id="applySiteMode" style="
                                padding: 10px 20px !important;
                                border: none !important;
                                border-radius: 6px !important;
                                cursor: pointer !important;
                                font-size: 14px !important;
                                font-weight: 500 !important;
                                background: #f0f0f0 !important;
                                color: #333333 !important;
                                border: 1px solid #e0e0e0 !important;
                                flex: 1 !important;
                            ">💾 应用网站专用模式</button>
                            <button class="btn btn-secondary" id="resetSiteMode" style="
                                padding: 10px 20px !important;
                                border: none !important;
                                border-radius: 6px !important;
                                cursor: pointer !important;
                                font-size: 14px !important;
                                font-weight: 500 !important;
                                background: #f0f0f0 !important;
                                color: #333333 !important;
                                border: 1px solid #e0e0e0 !important;
                                flex: 1 !important;
                            ">🔄 重置为默认</button>
                        </div>
                    </div>
                    
                    <div class="settings-section" style="
                        background: #f9f9f9 !important;
                        border-radius: 8px !important;
                        padding: 15px !important;
                        margin-bottom: 15px !important;
                        border: 1px solid #e0e0e0 !important;
                    ">
                        <h3 style="
                            margin: 0 0 15px 0 !important;
                            color: #333333 !important;
                            font-size: 16px !important;
                        ">⚙️ 全局设置</h3>
                        <div class="setting-item" style="
                            display: flex !important;
                            justify-content: space-between !important;
                            align-items: center !important;
                            margin-bottom: 12px !important;
                            padding: 8px 0 !important;
                        ">
                            <span class="setting-label" style="
                                font-size: 14px !important;
                                color: #555555 !important;
                            ">全局开关:</span>
                            <label class="toggle-switch" style="
                                position: relative !important;
                                display: inline-block !important;
                                width: 50px !important;
                                height: 24px !important;
                            ">
                                <input type="checkbox" id="globalEnable" ${globalEnable ? 'checked' : ''} style="
                                    opacity: 0 !important;
                                    width: 0 !important;
                                    height: 0 !important;
                                ">
                                <span class="toggle-slider" style="
                                    position: absolute !important;
                                    cursor: pointer !important;
                                    top: 0 !important;
                                    left: 0 !important;
                                    right: 0 !important;
                                    bottom: 0 !important;
                                    background-color: #e0e0e0 !important;
                                    border-radius: 24px !important;
                                "></span>
                            </label>
                        </div>
                        <div class="setting-item" style="
                            display: flex !important;
                            justify-content: space-between !important;
                            align-items: center !important;
                            margin-bottom: 12px !important;
                            padding: 8px 0 !important;
                        ">
                            <span class="setting-label" style="
                                font-size: 14px !important;
                                color: #555555 !important;
                            ">智能排除:</span>
                            <label class="toggle-switch" style="
                                position: relative !important;
                                display: inline-block !important;
                                width: 50px !important;
                                height: 24px !important;
                            ">
                                <input type="checkbox" id="autoExclude" ${autoExclude ? 'checked' : ''} style="
                                    opacity: 0 !important;
                                    width: 0 !important;
                                    height: 0 !important;
                                ">
                                <span class="toggle-slider" style="
                                    position: absolute !important;
                                    cursor: pointer !important;
                                    top: 0 !important;
                                    left: 0 !important;
                                    right: 0 !important;
                                    bottom: 0 !important;
                                    background-color: #e0e0e0 !important;
                                    border-radius: 24px !important;
                                "></span>
                            </label>
                        </div>
                        <div class="setting-item" style="
                            display: flex !important;
                            justify-content: space-between !important;
                            align-items: center !important;
                            margin-bottom: 12px !important;
                            padding: 8px 0 !important;
                        ">
                            <span class="setting-label" style="
                                font-size: 14px !important;
                                color: #555555 !important;
                            ">白天开启:</span>
                            <label class="toggle-switch" style="
                                position: relative !important;
                                display: inline-block !important;
                                width: 50px !important;
                                height: 24px !important;
                            ">
                                <input type="checkbox" id="runDuringDay" ${runDuringDay ? 'checked' : ''} style="
                                    opacity: 0 !important;
                                    width: 0 !important;
                                    height: 0 !important;
                                ">
                                <span class="toggle-slider" style="
                                    position: absolute !important;
                                    cursor: pointer !important;
                                    top: 0 !important;
                                    left: 0 !important;
                                    right: 0 !important;
                                    bottom: 0 !important;
                                    background-color: #e0e0e0 !important;
                                    border-radius: 24px !important;
                                "></span>
                            </label>
                        </div>
                        <div class="setting-item" style="
                            display: flex !important;
                            justify-content: space-between !important;
                            align-items: center !important;
                            padding: 8px 0 !important;
                        ">
                            <span class="setting-label" style="
                                font-size: 14px !important;
                                color: #555555 !important;
                            ">跟随系统:</span>
                            <label class="toggle-switch" style="
                                position: relative !important;
                                display: inline-block !important;
                                width: 50px !important;
                                height: 24px !important;
                            ">
                                <input type="checkbox" id="darkAuto" ${darkAuto ? 'checked' : ''} style="
                                    opacity: 0 !important;
                                    width: 0 !important;
                                    height: 0 !important;
                                ">
                                <span class="toggle-slider" style="
                                    position: absolute !important;
                                    cursor: pointer !important;
                                    top: 0 !important;
                                    left: 0 !important;
                                    right: 0 !important;
                                    bottom: 0 !important;
                                    background-color: #e0e0e0 !important;
                                    border-radius: 24px !important;
                                "></span>
                            </label>
                        </div>
                    </div>
                    
                    <div class="settings-section" style="
                        background: #f9f9f9 !important;
                        border-radius: 8px !important;
                        padding: 15px !important;
                        margin-bottom: 15px !important;
                        border: 1px solid #e0e0e0 !important;
                    ">
                        <h3 style="
                            margin: 0 0 15px 0 !important;
                            color: #333333 !important;
                            font-size: 16px !important;
                        ">🎨 模式设置</h3>
                        <div class="input-group" style="
                            margin-top: 10px !important;
                        ">
                            <label style="
                                display: block !important;
                                margin-bottom: 5px !important;
                                font-size: 14px !important;
                                color: #555555 !important;
                            ">昼夜时间:</label>
                            <input type="text" id="customDayNight" value="${customDayNight}" placeholder="6:00|18:00" style="
                                width: 100% !important;
                                padding: 8px 12px !important;
                                border: 1px solid #e0e0e0 !important;
                                border-radius: 6px !important;
                                background: #ffffff !important;
                                color: #333333 !important;
                                font-size: 14px !important;
                            ">
                            <div class="help-text" style="
                                font-size: 12px !important;
                                color: #666666 !important;
                                margin-top: 5px !important;
                            ">格式:白天开始时间|白天结束时间,如6:00|18:00</div>
                        </div>
                        <div class="input-group" style="
                            margin-top: 10px !important;
                        ">
                            <label style="
                                display: block !important;
                                margin-bottom: 5px !important;
                                font-size: 14px !important;
                                color: #555555 !important;
                            ">自动切换模式:</label>
                            <input type="text" id="autoSwitch" value="${autoSwitch}" placeholder="1|2" style="
                                width: 100% !important;
                                padding: 8px 12px !important;
                                border: 1px solid #e0e0e0 !important;
                                border-radius: 6px !important;
                                background: #ffffff !important;
                                color: #333333 !important;
                                font-size: 14px !important;
                            ">
                            <div class="help-text" style="
                                font-size: 12px !important;
                                color: #666666 !important;
                                margin-top: 5px !important;
                            ">格式:白天模式|夜间模式,0=白天 1=夜间 2=墨黑</div>
                        </div>
                        <div class="input-group" style="
                            margin-top: 10px !important;
                        ">
                            <label style="
                                display: block !important;
                                margin-bottom: 5px !important;
                                font-size: 14px !important;
                                color: #555555 !important;
                            ">反色强度:</label>
                            <input type="text" id="customDark3" value="${customDark3}" placeholder="90" style="
                                width: 100% !important;
                                padding: 8px 12px !important;
                                border: 1px solid #e0e0e0 !important;
                                border-radius: 6px !important;
                                background: #ffffff !important;
                                color: #333333 !important;
                                font-size: 14px !important;
                            ">
                            <div class="help-text" style="
                                font-size: 12px !important;
                                color: #666666 !important;
                                margin-top: 5px !important;
                            ">夜间模式反色强度,默认90(0-100)</div>
                        </div>
                        <div class="input-group" style="
                            margin-top: 10px !important;
                        ">
                            <label style="
                                display: block !important;
                                margin-bottom: 5px !important;
                                font-size: 14px !important;
                                color: #555555 !important;
                            ">墨黑模式配色:</label>
                            <input type="text" id="inkModeConfig" value="${inkConfig}" placeholder="背景|文字|次要背景|边框|主色调|悬停色" style="
                                width: 100% !important;
                                padding: 8px 12px !important;
                                border: 1px solid #e0e0e0 !important;
                                border-radius: 6px !important;
                                background: #ffffff !important;
                                color: #333333 !important;
                                font-size: 14px !important;
                            ">
                            <div class="help-text" style="
                                font-size: 12px !important;
                                color: #666666 !important;
                                margin-top: 5px !important;
                            ">格式:背景色|文字色|次要背景色|边框色|主色调|悬停色</div>
                        </div>
                    </div>
                    
                    <div class="action-buttons" style="
                        display: flex !important;
                        gap: 10px !important;
                        margin-top: 20px !important;
                    ">
                        <button class="btn btn-primary" id="toggleMode" style="
                            padding: 10px 20px !important;
                            border: none !important;
                            border-radius: 6px !important;
                            cursor: pointer !important;
                            font-size: 14px !important;
                            font-weight: 500 !important;
                            background: #007bff !important;
                            color: white !important;
                            flex: 1 !important;
                        ">
                            ${currentMode === 'light' ? '🌙 切换夜间模式' : currentMode === 'dark' ? '🖋️ 切换墨黑模式' : '☀️ 切换白天模式'}
                        </button>
                        <button class="btn btn-secondary" id="toggleSite" style="
                            padding: 10px 20px !important;
                            border: none !important;
                            border-radius: 6px !important;
                            cursor: pointer !important;
                            font-size: 14px !important;
                            font-weight: 500 !important;
                            background: #f0f0f0 !important;
                            color: #333333 !important;
                            border: 1px solid #e0e0e0 !important;
                            flex: 1 !important;
                        ">
                            ${siteEnabled ? '❌ 禁用本站' : '✅ 启用本站'}
                        </button>
                    </div>
                    
                    <div class="action-buttons" style="
                        display: flex !important;
                        gap: 10px !important;
                        margin-top: 10px !important;
                    ">
                        <button class="btn btn-secondary" id="saveSettings" style="
                            padding: 10px 20px !important;
                            border: none !important;
                            border-radius: 6px !important;
                            cursor: pointer !important;
                            font-size: 14px !important;
                            font-weight: 500 !important;
                            background: #f0f0f0 !important;
                            color: #333333 !important;
                            border: 1px solid #e0e0e0 !important;
                            flex: 1 !important;
                        ">💾 保存设置</button>
                        <button class="btn btn-secondary" id="resetSettings" style="
                            padding: 10px 20px !important;
                            border: none !important;
                            border-radius: 6px !important;
                            cursor: pointer !important;
                            font-size: 14px !important;
                            font-weight: 500 !important;
                            background: #f0f0f0 !important;
                            color: #333333 !important;
                            border: 1px solid #e0e0e0 !important;
                            flex: 1 !important;
                        ">🔄 恢复默认</button>
                    </div>
                </div>
            `;
            
            // 添加到页面
            document.body.appendChild(panel);
            
            // 添加设置面板专用CSS,确保其不受任何模式影响
            let panelStyle = document.createElement('style');
            panelStyle.textContent = `
                /* 设置面板专用样式 - 强制亮色主题,不受任何模式影响 */
                .eye-protect-settings-panel {
                    filter: none !important;
                    background: #ffffff !important;
                    color: #333333 !important;
                    border-color: #e0e0e0 !important;
                }
                
                .eye-protect-settings-panel * {
                    filter: none !important;
                    background: inherit !important;
                    color: inherit !important;
                }
                
                /* 切换开关样式 */
                .toggle-switch input:checked + .toggle-slider::before {
                    transform: translateX(26px) !important;
                }
                .toggle-switch input:checked + .toggle-slider {
                    background-color: #007bff !important;
                }
                .toggle-switch .toggle-slider::before {
                    content: "" !important;
                    position: absolute !important;
                    height: 16px !important;
                    width: 16px !important;
                    left: 4px !important;
                    bottom: 4px !important;
                    background-color: white !important;
                    border-radius: 50% !important;
                    transition: .4s !important;
                }
            `;
            document.head.appendChild(panelStyle);
            
            // 事件绑定
            setTimeout(() => {
                // 关闭按钮事件
                panel.querySelector('#closeBtn').addEventListener('click', (e) => {
                    e.stopPropagation();
                    panel.remove();
                });
                
                // 网站专用模式相关事件
                panel.querySelector('#applySiteMode').addEventListener('click', () => {
                    let select = panel.querySelector('#siteSpecificMode');
                    let mode = select.value;
                    if (mode === 'default') {
                        this.setSiteSpecificMode(null);
                        this.showNotification('已重置当前网站的专用模式为默认');
                    } else {
                        this.setSiteSpecificMode(mode);
                        this.showNotification(`已为当前网站设置专用模式:${this.getSiteModeName(mode)}`);
                    }
                    this.applyMode();
                    this.refreshMenu();
                    panel.remove();
                });
                
                panel.querySelector('#resetSiteMode').addEventListener('click', () => {
                    this.setSiteSpecificMode(null);
                    this.showNotification('已重置当前网站的专用模式为默认');
                    this.applyMode();
                    this.refreshMenu();
                    panel.remove();
                });
                
                // 功能按钮事件
                panel.querySelector('#toggleMode').addEventListener('click', () => {
                    this.switchMode();
                    panel.remove();
                });
                
                panel.querySelector('#toggleSite').addEventListener('click', () => {
                    this.toggleCurrentSite();
                    panel.remove();
                });
                
                panel.querySelector('#saveSettings').addEventListener('click', () => {
                    // 保存所有设置
                    this.setConfig('globalEnable', panel.querySelector('#globalEnable').checked);
                    this.setConfig('autoExclude', panel.querySelector('#autoExclude').checked);
                    this.setConfig('runDuringDay', panel.querySelector('#runDuringDay').checked);
                    this.setConfig('darkAuto', panel.querySelector('#darkAuto').checked);
                    
                    let dayNight = panel.querySelector('#customDayNight').value;
                    if (dayNight) this.setConfig('customDayNight', dayNight);
                    
                    let autoSwitchVal = panel.querySelector('#autoSwitch').value;
                    this.setConfig('autoSwitch', autoSwitchVal);
                    
                    let dark3Val = panel.querySelector('#customDark3').value;
                    if (dark3Val) this.setConfig('customDark3', dark3Val);
                    
                    let inkConfigVal = panel.querySelector('#inkModeConfig').value;
                    if (inkConfigVal) {
                        this.setConfig('inkModeConfig', inkConfigVal);
                        if (this.getCurrentMode() === 'ink') this.applyInkMode();
                    }
                    
                    this.applyMode();
                    this.refreshMenu();
                    this.showNotification('✅ 设置已保存');
                    panel.remove();
                });
                
                panel.querySelector('#resetSettings').addEventListener('click', () => {
                    if (confirm('确定要恢复所有默认设置吗?')) {
                        for (let key in this.defaults) {
                            this.setConfig(key, this.defaults[key]);
                        }
                        this.setConfig('currentMode', 'light');
                        this.currentMode = 'light';
                        this.applyMode();
                        this.refreshMenu();
                        this.showNotification('✅ 已恢复默认设置');
                        panel.remove();
                    }
                });
                
                // ESC键关闭
                const handleEscKey = (e) => {
                    if (e.key === 'Escape' && panel && panel.parentNode) {
                        panel.remove();
                        document.removeEventListener('keydown', handleEscKey);
                    }
                };
                
                document.addEventListener('keydown', handleEscKey);
            }, 0);
        },

        // 清除所有菜单
        clearMenu() {
            menuCommands.forEach(cmd => {
                try {
                    GM_unregisterMenuCommand(cmd);
                } catch (e) {
                    // 忽略错误
                }
            });
            menuCommands = [];
        },

        // 刷新菜单
        refreshMenu() {
            this.clearMenu();
            this.initMenu();
        },

        // 初始化菜单
        initMenu() {
            let currentMode = this.getCurrentMode();
            let globalEnable = this.getConfig('globalEnable');
            let enableList = this.getConfig('enableList');
            let host = location.host;
            let siteEnabled = enableList.includes(host);
            let siteSpecificMode = this.getSiteSpecificMode();
            
            let modeIcon = currentMode === 'light' ? '☀️' : currentMode === 'dark' ? '🌙' : '🖋️';
            let siteModeText = siteSpecificMode ? ` [${this.getSiteModeName(siteSpecificMode)}]` : '';
            
            menuCommands.push(GM_registerMenuCommand(`${modeIcon} ${this.getModeName(currentMode)}${siteModeText}`, () => {
                this.switchMode();
            }));
            
            menuCommands.push(GM_registerMenuCommand(globalEnable ? '🌍 全局: 开启 (点击关闭)' : '🌍 全局: 关闭 (点击开启)', () => {
                this.toggleGlobal();
            }));
            
            menuCommands.push(GM_registerMenuCommand(siteEnabled ? '✅ 本站: 启用 (点击禁用)' : '❌ 本站: 禁用 (点击启用)', () => {
                this.toggleCurrentSite();
            }));
            
            menuCommands.push(GM_registerMenuCommand('⚙️ 设置面板', () => {
                this.showSettings();
            }));
        }
    };

    // 初始化
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', () => {
            EyeProtect.init();
        });
    } else {
        EyeProtect.init();
    }
})();