diff --git a/scripts/userstyles.yml b/scripts/userstyles.yml index 6c2850dce8..03a2b498ce 100644 --- a/scripts/userstyles.yml +++ b/scripts/userstyles.yml @@ -70,6 +70,7 @@ collaborators: - &zenoix zenoix - &NekoDrone NekoDrone - &adamperkowski adamperkowski + - &sixuan911 sixuan911 userstyles: advent-of-code: @@ -146,6 +147,13 @@ userstyles: color: green note: "Make sure to use the default **Teal** theme from the built-in color picker (located at the bottom of the page) for the best experience!" current-maintainers: [*rockquiet] + bilibili: + name: Bilibili + link: https://bilibili.com + categories: [entertainment, social_networking, photo_and_video] + icon: bilibili + color: sapphire + current-maintainers: [*sixuan911] canvas-lms: name: Canvas LMS link: https://www.instructure.com/canvas diff --git a/styles/bilibili/catppuccin.user.less b/styles/bilibili/catppuccin.user.less new file mode 100644 index 0000000000..261c5cb34b --- /dev/null +++ b/styles/bilibili/catppuccin.user.less @@ -0,0 +1,1134 @@ +/* ==UserStyle== +@name Bilibili Catppuccin +@namespace github.com/catppuccin/userstyles/styles/bilibili +@homepageURL https://github.com/catppuccin/userstyles/tree/main/styles/bilibili +@version 2000.01.01 +@updateURL https://github.com/catppuccin/userstyles/raw/main/styles/bilibili/catppuccin.user.less +@supportURL https://github.com/catppuccin/userstyles/issues?q=is%3Aopen+is%3Aissue+label%3Abilibili +@description Soothing pastel theme for Bilibili +@author Catppuccin +@license MIT + +@preprocessor less +@var select lightFlavor "Light Flavor" ["latte:Latte*", "frappe:Frappé", "macchiato:Macchiato", "mocha:Mocha"] +@var select darkFlavor "Dark Flavor" ["latte:Latte", "frappe:Frappé", "macchiato:Macchiato", "mocha:Mocha*"] +@var select accentColor "Accent" ["rosewater:Rosewater", "flamingo:Flamingo", "pink:Pink", "mauve:Mauve*", "red:Red", "maroon:Maroon", "peach:Peach", "yellow:Yellow", "green:Green", "teal:Teal", "blue:Blue", "sapphire:Sapphire", "sky:Sky", "lavender:Lavender", "subtext0:Gray"] +==/UserStyle== */ +@import "https://userstyles.catppuccin.com/lib/lib.less"; + +@-moz-document domain("bilibili.com") { + :root { + @media (prefers-color-scheme: light) { + #catppuccin(@lightFlavor); + } + @media (prefers-color-scheme: dark) { + #catppuccin(@darkFlavor); + } + } + + #catppuccin(@flavor) { + #lib.palette(); + #lib.defaults(); + + /* Override Bilibili CSS variables | 覆盖B站的CSS变量 */ + :root, + #app, + body { + --text1: @text !important; + --text2: @subtext0 !important; + --text3: @subtext1 !important; + --bg1: @surface0 !important; /* Main background (comment box active) | 主要背景色(评论框激活) */ + --bg3: @surface0 !important; /* Comment box background | 评论框背景 */ + --Ga1: @surface1 !important; /* Comment box border | 评论框边框 */ + --graph_bg_thick: @surface0 !important; /* Active state background | 激活状态背景 */ + --graph_weak: @surface1 !important; /* Button border | 按钮边框 */ + --brand_blue: @accent !important; /* Brand blue to accent color | 品牌蓝色改为强调色 */ + --brand_blue_rgb: #lib.rgbify(@accent) [] !important; /* Accent color RGB value | 强调色RGB值 */ + --bili-comment-tag-bg-light: @surface1 !important; + --bili-comment-tag-color-light: @text !important; + } + + body { + background-color: @base; + + > div { + color: @text; + background-color: @surface0; + } + } + + a:link, + a:visited { + color: @accent; + } + + // === Homepage background colors | 首页背景色 === + .bili-feed4{ // Homepage recommendation section background | 首页推荐区块背景 + background-color:@base !important; // Base background color | base 背景色 + } + .bili-header .large-header { // Header background | 头部背景 + background-color: @mantle !important; // Mantle header background | mantle 头部背景色 + } + .bili-header__bar { // Top bar | 顶部栏 + background-color: @mantle !important; + } + + + // === Top left text | 顶部左侧文字 === + .bili-header__bar .left-entry span, + .bili-header__bar .left-entry a { // Homepage top-left title text | 主页左上角标题文字 + color : @text !important; + } + + .bili-header__bar .left-entry span:hover, + .bili-header__bar .left-entry a:hover { // Homepage left icon hover | 主页左侧图标悬停 + color : @accent !important; + } + .bili-header__bar .left-entry .entry-title svg.zhuzhan-icon, + .bili-header__bar .left-entry .entry-title svg.zhuzhan-icon path, + .bili-header__bar .left-entry .entry-title svg.zhuzhan-icon use{ + fill: @mauve !important; // Homepage left icon color | 主页左侧图标颜色 + stroke: @mauve !important; + } + .zhuzhan-icon{ + fill: @mauve !important; // Homepage left icon color | 主页左侧图标颜色 + } + .bili-header .left-entry .mini-header__logo, + .bili-header .left-entry .mini-header__logo svg, + .bili-header .left-entry .mini-header__logo svg path, + .bili-header .left-entry svg.mini-header__logo, + .bili-header .left-entry svg.mini-header__logo path { + fill: @mauve !important; // Top-left mini logo purple | 左上角小 logo 紫色 + stroke: @mauve !important; + } + + + + // === Top search box | 顶部搜索框 === + .bili-header .center-search-container { + background-color: @mantle !important; // Search box background | 搜索框背景 + } + .nav-search, + .nav-search .center-search__bar { + background-color: @mantle !important; // Search box dropdown | 搜索框下拉 + } + .trending-item { + color: @text !important; // Search box dropdown text | 搜索框下拉文字 + } + .nav-search-content { + background-color: @mantle !important; // Search box outer ring | 搜索框外圈 + border-color: @accent !important; // Search box outer ring border | 搜索框外圈边框 + } + .nav-searchform, + #nav-searchform, + #nav-searchform.is-focus { + border-color: @surface1 !important; // Search box border | 搜索框边框 + background-color: @surface0 !important; // Search box inner background | 搜索框内部背景 + } + .nav-search-input { + background-color: @surface0 !important; + color: @text !important; // Search box input | 搜索框输入 + } + .nav-search-input::placeholder { + color: @subtext0 !important; // Search box placeholder | 搜索框占位符 + } + .search-panel { // Search suggestions dropdown | 搜索建议下拉 + background-color: @surface0 !important; + border-color: @surface1 !important; + } + .history-item { + background-color: @surface1 !important; // Search history background | 搜索历史背景 + } + .history-item:hover, + .search-panel .history-item:hover { + background-color: fade(@surface2, 50%) !important; // Search history hover background (darker) | 搜索历史悬停背景(更暗) + } + .trending-item:hover { + background-color: fade(@surface2, 50%) !important; // Hot search hover | 热搜悬停 + } + .history .header .title{ + color: @text !important; // Search history title text | 搜索历史标题文字 + } + .history-text{ + color: @text !important; // Search history text | 搜索历史文字 + } + .trending .header .title{ + color: @text !important; // Search hot topics title text | 搜索热门标题文字 + } + .trendings-rank .search-rank-top{ + color : @yellow !important; // Search hot topics ranking text | 搜索热门排行文字 + } + .suggest-item { + color: @text !important; // Search suggestion text | 搜索建议文字 + } + .suggest-item:hover { + background-color: @surface0 !important; // Search suggestion hover | 搜索建议悬停 + color: @accent !important; // Search suggestion hover text | 搜索建议悬停文字 + } + + + // === Top right icons | 顶部右侧图标 === + .bili-header .header-login-entry{ + background: @mauve !important; //登陆图标 + color: @text !important; //登陆文字 + } + .bili-header .right-entry__outside .right-entry-icon svg, + .bili-header .right-entry__outside .right-entry-icon svg path, + .bili-header .right-entry__outside .right-entry-icon svg use, + .bili-header__bar .right-entry__outside svg, + .bili-header__bar .right-entry__outside svg path, + .bili-header__bar .right-entry__outside svg use { + fill: @mauve !important; // Right side icon color | 右侧图标颜色 + stroke: @mauve !important; + color: @mauve !important; + } + + // === Top navigation bar items text | 顶部导航栏文字 === + .bili-header__bar .left-entry .v-popover-wrap, + .bili-header__bar .left-entry .default-entry, + .header-entry-mini, + .header-entry-title { + color: @text !important; + } + + .bili-header__bar .left-entry .v-popover-wrap:hover, + .bili-header__bar .left-entry .default-entry:hover { + color: @accent !important; + } + + // === Right side user info and icons | 右侧用户信息和图标 === + .header-avatar-wrap__text, + .right-entry__outside .right-entry-text, + .right-entry__outside .right-entry-item { + color: @text !important; + } + + .header-avatar-wrap:hover .header-avatar-wrap__text, + .right-entry__outside .right-entry-text:hover { + color: @accent !important; + } + + .bili-header .header-upload-entry { + background-color: @accent !important; // Upload button background | 上传按钮背景 + color: @base !important; // Text on accent background should be base | 强调色背景上的文字应为base + } + + + + + + + + + + // === Channel navigation below top bar | 顶部下面分区栏目 === + .bili-header__channel { + background-color: @base !important; // Channel navigation background | 分区栏目背景 + } + .bili-header__channel .channel-icons { + color: @text !important; // Channel navigation text | 分区栏目文字 + } + .right-channel-container{ + background-color: @base !important; // Channel navigation background | 分区栏目背景 + } + .channel-items_left{ + background-color: @base !important; // Channel navigation left background | 分区栏目左侧背景 + } + .bili-header__channel .channel-link{ + background-color: @surface0 !important; // Channel navigation background | 分区栏目背景 + color: @text !important; // Text color | 文字颜色 + border-color: @surface1 !important; // Border color | 边框颜色 + } + + .bili-header__channel .channel-link:hover{ + background-color: @surface1 !important; // Channel navigation hover background | 分区栏目悬停背景 + color: @accent !important; // Hover text uses accent | 悬停文字使用强调色 + border-color: @surface2 !important; // Hover border color | 悬停边框颜色 + } + .channel-entry-more__link{//分区栏目"更多" + background-color: @surface0 !important; /* Subtle background | 淡色背景 */ + color: @text !important; /* Normal text | 普通文字 */ + border-color: @surface1 !important; /* Border color | 边框颜色 */ + } + + .channnel-entry-more__link:hover{ + background-color: @surface1 !important; /* Hover background | 悬停背景 */ + color: @accent !important; /* Hover text uses accent | 悬停文字使用强调色 */ + border-color: @surface2 !important; /* Hover border color | 悬停边框颜色 */ + } + + /* "更多"下拉菜单容器 */ + .channel-menu { + background-color: @surface0 !important; /* Dropdown background | 下拉菜单背景 */ + border-color: @surface1 !important; /* Border color | 边框颜色 */ + } + + /* Dropdown menu text links | 下拉菜单里的文字链接 */ + .channel-menu__item, + .channel-menu a { + color: @text !important; /* Normal text color | 普通文字颜色 */ + background-color: @surface0 !important; /* Item background | 项目背景 */ + } + + .channel-menu__item:hover, + .channel-menu a:hover { + background-color: @surface1 !important; /* Hover background | 悬停背景 */ + color: @accent !important; /* Hover text changes to accent color | 悬停文字变强调色 */ + } + + .channel-link__right span{ + color: @text !important; // Channel navigation right text | 分区栏目右侧文字 + } + + .channel-icons .icon-bg__dynamic svg{ + fill: @mauve !important; // Channel navigation dynamic icon | 分区栏目动态图标 + } + .channel-icons .icon-bg__popular svg{ + fill: @mauve !important; // Channel navigation live icon | 分区栏目直播图标 + } + + + + // === Sliding channel navigation | 滑动分区栏目 === + .header-channel { + background: @surface1 !important; //channel滑动时出现的bar + } + .left-fixed-channel a{ + color: @text !important; // Sliding channel navigation left fixed text | 滑动分区栏目左侧固定文字 + background-color: @surface0 !important; + border-color: @surface1 !important; // Border color | 边框颜色 + } + .left-fixed-channel a :hover{ + color: @accent !important; // Sliding channel navigation left fixed text hover | 滑动分区栏目左侧固定文字悬停 + background-color: @surface1 !important; + border-color: @surface2 !important; // Hover border color | 悬停边框颜色 + } + .header-channel-fixed-right-item a{ + color: @text !important; // Sliding channel navigation right fixed text | 滑动分区栏目右侧固定文字 + background-color: @surface0 !important; + border-color: @surface1 !important; // Border color | 边框颜色 + } + .header-channel-fixed-right-item a :hover{ + color: @accent !important; // Sliding channel navigation right fixed text hover | 滑动分区栏目右侧固定文字悬停 + background-color: @surface1 !important; + border-color: @surface2 !important; // Hover border color | 悬停边框颜色 + } + .header-channel-fixed-right-item{ + background: @surface0 !important; + border-color: @surface1 !important; // Border color | 边框颜色 + } + + + + + + + + + + + + .shortcut-bg{ + background-color: @surface0 !important; // Channel navigation overlay card video window inner background | 分区栏目叠放卡片视频窗内背景 + } + .bili-video-card .bili-video-card__info--icon-text{ + background-color: @mauve !important; + } + + + + + + + // === Video interface | 视频界面 === + .video-container-v1{ + background-color: @base !important; // Video playback interface background | 视频播放界面背景 + } + .video-info-container .video-info-title-inner .video-title[data-v-fe6ec38e]{ + color: @text !important; // Video playback interface title text | 视频播放界面标题文字 + } + .bpx-player-sending-bar{ + background-color: @mantle !important; // Video comment bar background | 视频发送弹幕栏背景 + } + .video-info-detail-list .copyright .copyright-icon[data-v-0c3641b4]{ + color: @mauve !important; // 禁止转载标志 + fill: @mauve !important; // Copyright icon color | 版权图标颜色 + } + .bpx-player-video-info-online{ + color: @text !important; // Video playback interface online count text | 视频播放界面在线人数文字 + } + .bpx-player-video-info-divide{ + color: @text !important; // Video playback interface separator text | 视频播放界面分隔符文字 + } + .bpx-player-video-info-dm{ + color: @text !important; // Video playback interface comment count text | 视频播放界面弹幕数文字 + } + .bui-button .bui-area.bui-button-blue, .bui-button .bui-area.bui-button-gray3:hover{ + background-color: @accent !important; // Video playback interface play button background | 视频播放界面播放按钮背景 + color: @base !important; // Text on accent background should be base | 强调色背景上的文字应为base + } + .bpx-player-inputbar-wrap{ + background-color: @surface0 !important; // Video playback interface comment input box background | 视频播放界面弹幕输入框背景 + } + .bpx-player-dm-input{ + background-color: @surface0 !important; // Comment input box background | 弹幕输入框背景 + color: @text !important; // Comment input box text | 弹幕输入框文字 + border-color: @surface1 !important; // Border | 边框 + caret-color: @accent !important; + } + .bpx-player-dm-input::placeholder{ + color: @subtext0 !important; // Placeholder color | 占位符颜色 + } + .bpx-player-dm-input:focus{ + border-color: @accent !important; // Accent color when focused | 聚焦时的强调色 + background-color: mix(@surface0, @mantle, 6%) !important; + } + /* Stronger override: for potentially more specific or inline site rules | 更强的覆盖:针对可能更具体或内联的站点规则 */ + .bpx-player-video-inputbar-wrap input.bpx-player-dm-input, + .bpx-player-sending-bar input.bpx-player-dm-input, + .bpx-player-container input.bpx-player-dm-input, + .bpx-player-video-inputbar-wrap .bpx-player-dm-input, + input.bpx-player-dm-input.bpx-player-dm-input { + background: @surface0 !important; + border-color: @surface1 !important; + color: @text !important; + } + /* Autofill / browser styling overrides */ + input.bpx-player-dm-input:-webkit-autofill, + input.bpx-player-dm-input:-webkit-autofill:hover, + input.bpx-player-dm-input:-webkit-autofill:focus { + background: @surface0 !important; + } + /* If parent container has white background, force override parent container styles | 如果父容器有白色背景,强制覆盖父容器样式 */ + .bpx-player-sending-bar, + .bpx-player-video-inputbar-wrap, + .bpx-player-sending-bar .bpx-player-video-inputbar-wrap, + .bpx-player-video-inputbar-wrap .bpx-player-dm-root, + .bpx-player-video-inputbar-wrap .bpx-player-dm-wrap { + background: @surface0 !important; + background-color: @surface0 !important; + } + /* Super high priority (override inline styles as much as possible): increase element hierarchy and attribute selectors | 超高优先级(尽可能覆盖内联样式):增加元素层级和属性选择器 */ + html body .bpx-player-sending-bar[style], + html body .bpx-player-video-inputbar-wrap[style], + html body input.bpx-player-dm-input[style] { + background: @surface0 !important; + background-color: @surface0 !important; + border-color: @surface1 !important; + } + /* Compatible with shadow DOM / deep selection (if userstyles extension supports it) | 兼容 shadow DOM / 深度选择(如果使用 userstyles 扩展支持) */ + :root ::-webkit-media-controls-panel, + :root ::-webkit-media-controls-mute-button { + background: @surface0 !important; + } + .bpx-common-svg-icon svg { + fill: @mauve !important; // Video playback interface comment input box icon color | 视频播放界面弹幕输入框图标颜色 + } + .bui-danmaku-switch{ + fill: @mauve !important; // Video playback interface comment toggle icon color | 视频播放界面弹幕开关图标颜色 + } + .bui-danmaku-switch svg, + .bui-danmaku-switch svg path, + .bui-danmaku-switch-input:checked ~ .bui-danmaku-switch-label svg, + .bui-danmaku-switch-input:checked ~ .bui-danmaku-switch-label svg path, + .bui-danmaku-switch-on svg, + .bui-danmaku-switch-on svg path { + fill: @accent !important; // Danmaku switch checkmark icon | 弹幕开关勾选图标 + stroke: @accent !important; + color: @accent !important; + } + .bpx-player-dm-hint{ + color: @text !important; // Video playback interface comment input box placeholder text | 视频播放界面弹幕输入框占位符文字 + } + .video-info-detail-list[data-v-0c3641b4]{ + color: @text !important; // Video playback interface video details text | 视频播放界面视频详情文字 + } + .video-tag-container .tag-panel .tag .show-more-btn[data-v-cf3f07d2]{ + background: @accent !important; // Video playback interface video tags "More" button background | 视频播放界面视频标签"更多"按钮背景 + color: @base !important; // Text on accent background should be base | 强调色背景上的文字应为base + } + .up-detail .up-detail-top .up-name[data-v-5f1f09f0]{ + color: @text !important; // Video playback interface uploader name text | 视频播放界面up主名称文字 + } + .up-detail .up-detail-top .send-msg[data-v-5f1f09f0]{ + color: @text !important; // Video playback interface "Send message" text | 视频播放界面 “发消息” 文字 + } + .up-detail .up-description[data-v-5f1f09f0]{ + color: @text !important; // Video playback interface uploader description text | 视频播放界面up主描述文字 + } + .upinfo-btn-panel .new-charge-btn.charge-btn-loaded[data-v-db02d4c6]{ + background-color: @surface0 !important; // Video playback interface "Charge" button background | 视频播放界面 “充电” 按钮背景 + border-color: @accent !important; // Video playback interface "Charge" button border color | 视频播放界面 "充电" 按钮边框颜色 + } + .upinfo-btn-panel .follow-btn.not-follow[data-v-db02d4c6]{ + background-color: @surface0 !important; // Video playback interface "Follow" button background | 视频播放界面 “关注” 按钮背景 + color: @text !important; // Video playback interface "Follow" button text | 视频播放界面 “关注” 按钮文字 + } + .bpx-player-sending-bar .bpx-player-video-inputbar .bpx-player-dm-wrap a{ + color: @mauve !important; //登陆 注册按钮 + } + .bui-collapse .bui-collapse-header{ + background-color: @surface0 !important; // Video playback interface video description collapse bar background | 视频播放界面视频描述折叠栏背景 + color: @text !important; // Video playback interface video description collapse bar text | 视频播放界面视频描述折叠栏文字 + } + .upinfo-btn-panel .new-charge-btn[data-v-db02d4c6]{ + color: @accent !important; // Video playback interface "Charge" button text | 视频播放界面 "充电" 按钮文字 + } + .upinfo-btn-panel .new-charge-btn svg, + .upinfo-btn-panel .new-charge-btn svg path, + .charge-btn svg, + .charge-btn svg path { + fill: @mauve !important; // Charge button icon color | 充电按钮图标颜色 + stroke: @mauve !important; + } + .video-pod[data-v-dac4fbd2]{ + background-color: @surface1 !important; // Video playback interface series video card background | 视频播放界面系列视频卡片背景 + } + .video-pod .video-pod__header .header-top .left .title[data-v-dac4fbd2]{ + color: @text !important; // Video playback interface series video card title text | 视频播放界面系列视频卡片标题文字 + } + .video-pod .video-pod__header .header-top .left .amt[data-v-dac4fbd2]{ + color: @text !important; // Video playback interface series video card count text | 视频播放界面系列视频卡片数量文字 + } + .continuous-btn .txt{ + color: @text !important; // Video playback interface series video "Auto-play" text | 视频播放界面系列视频 “自动连播” 文字 + } + .switch-btn.on{ + background-color: @accent !important; // Video playback interface series video "Auto-play" on background | 视频播放界面系列视频 "自动连播" 开启背景 + } + .switch-btn .switch-block{ + background-color: @text !important; // Video playback interface series video "Auto-play" button color | 视频播放界面系列视频 “自动连播” 按钮颜色 + } + .video-pod .video-pod__header .header-bottom[data-v-dac4fbd2]{ + color: @text !important; //视频播放界面系列视频卡片底部文字 + } + .video-pod .video-pod__header .header-bottom .right .subscribe-btn[data-v-dac4fbd2]{ + color: @accent !important; //视频播放界面系列视频卡片"订阅合集"文字 + border-color: @accent !important; //视频播放界面系列视频卡片"订阅合集"边框 + } + .simple-base-item .title{ + color: @text !important; // Video playback interface related recommended video title text | 视频播放界面相关推荐视频标题文字 + } + .simple-base-item .stats{ + color: @subtext0 !important; // Video playback interface related recommended video stats text | 视频播放界面相关推荐视频统计文字 + } + .video-toolbar-left-item{ + color: @text !important; // Video playback interface toolbar text | 视频播放界面工具栏文字 + } + .video-toolbar-right-item{ + color: @text !important; // Video playback interface toolbar right text | 视频播放界面工具栏右侧文字 + } + .video-desc-container .basic-desc-info[data-v-8ced1e78]{ + color: @text !important; // Video playback interface video description text | 视频播放界面视频描述文字 + } + .video-desc-container .toggle-btn-text[data-v-8ced1e78]{ + color: @text !important; // Video playback interface video description expand/collapse text | 视频播放界面视频描述展开收起文字 + } + .video-tag-container .tag-panel .tag-link{ + background-color: @surface1 !important; // Video playback interface video tag background | 视频播放界面视频标签背景 + color: @text !important; // Video playback interface video tag text | 视频播放界面视频标签文字 + } + .activity-m-v1 .inside-wrp{ + border-color: @mauve !important; // 广告边框 + } + .video-tag-container[data-v-cf3f07d2]{ + border-color: @surface1 !important; + } + #title h2, + .bili-comments-header-renderer #title h2, + div#title h2 { + color: @text !important; // Video playback interface "Comments" title | 视频播放界面标题 “评论” + } + #title #count{ + color: @subtext0 !important; // Video playback interface comment count title | 视频播放界面标题 “评论数” + } + .button{ + color: @subtext0 !important; // Video playback interface comment sort button text | 视频播放界面标题 “评论排序按钮”文字 + } + #editor .active{ + background-color: @surface0 !important; //视频播放界面标题 "评论条“背景 + color: @text !important; + } + #editor.active, + div#editor.active { + background-color: @surface0 !important; + border-color: @accent !important; + } + .tool-btn{ + background-color: @surface0 !important; //视频播放界面标题 "评论条"下方按钮背景 + color: @text !important; + border-color: @surface1 !important; + } .tool-btn svg, + .tool-btn svg path, + .button.tool-btn.emoji svg, + .button.tool-btn svg { + fill: @mauve !important; //评论工具栏图标紫色 + stroke: @mauve !important; + color: @mauve !important; + } #input #inner{ + background-color: @surface0 !important; //视频播放界面标题 "转发确认方块“背景 + border-color: @accent !important; + } + #pub button, + .bili-comment-box #pub button, + button[data-v-risk="fingerprint"] { + background-color: @accent !important; //视频播放界面标题 "评论发布按钮"背景 + color: @base !important; // Text on accent background should be base | 强调色背景上的文字应为base + } + #contents a{ + color: @accent !important; //视频播放界面标题 "评论区链接"文字 + } + #comment .tag { + --bili-comment-tag-bg-light: @surface1 !important; + --bili-comment-tag-bg-dark: @surface1 !important; + --bili-comment-tag-color-light: @text !important; + --bili-comment-tag-color-dark: @text !important; + + background-color: @surface1 !important; + color: @text !important; + } + + + + + + + + + + + // === Video frame content | 视屏框内容 === + .bpx-player-progress-schedule-current{ + background-color: @accent !important; // Progress bar hover tip point inner | 进度条悬停提示点内部 + } + .bpx-player-ctrl-btn{ + color: @text !important; // Video playback interface control bar button text | 视频播放界面控制栏按钮文字 + fill: @mauve !important; + } + + .bpx-player-ctrl-btn svg, + .bpx-player-ctrl-btn svg path { + fill: @mauve !important; // Ensure SVG icons are purple | 确保 SVG 图标是紫色 + } + .bpx-player-ctrl-quality-menu-wrap{ + background-color: @surface0 !important; // Quality menu background | 清晰度菜单背景 + } + .bpx-player-ctrl-quality-menu-item{ + color: @text !important; // Quality menu text | 清晰度菜单文字 + } + .bpx-player-ctrl-quality-badge .bpx-player-ctrl-quality-badge-bigvip{ + background-color: @accent !important; // Quality menu big VIP badge background | 清晰度菜单大会员徽章背景 + color: @base !important; // Text on accent background should be base | 强调色背景上的文字应为base + } + .bpx-player-ctrl-playbackrate-menu{ + background-color: @surface0 !important; // Playback speed menu background | 播放速度菜单背景 + } + .bpx-player-ctrl-playbackrate-menu-item{ + color: @text !important; // Playback speed menu text | 播放速度菜单文字 + } + .bpx-player-ctrl-volume-box{ + background-color: @surface0 !important; // Volume control background | 音量调节背景 + } + .bpx-player-ctrl-volume-progress .bui-slider, + .bui-slider { + background-color: @surface1 !important; // Volume bar background track | 音量条背景轨道 + } + .bpx-player-ctrl-volume-progress .bui-bar, + .bui-bar { + background-color: @accent !important; // Volume bar set portion (accent color) | 音量条已设置部分(强调色) + } + .bui-slider-handle { + border-color: @accent !important; // Volume slider border | 音量滑块边框 + background-color: @accent !important; // Volume slider color | 音量滑块颜色 + } + .bpx-player-ctrl-volume-progress .bui-slider-handle, + .bui-slider .bui-slider-handle { + border-color: @accent !important; // Volume ball border | 音量球边框 + background-color: @accent !important; // Volume ball color | 音量球颜色 + } + .bpx-player-ctrl-volume-number{ + color: @text !important; // Volume number text | 音量数字文字 + } + .bui-slider .bui-track .bui-thumb .bui-thumb-dot{ + background-color: @accent !important; // Volume slider small dot | 音量滑块小点 + } + .bui-panel.bui-dark{ + background-color: @surface0 !important; // Volume control dark panel background | 音量调节深色面板背景 + } + .bpx-player-ctrl-setting-box{ + color: @text !important; // Settings menu text | 设置菜单文字 + } + .bui-switch-body{ + background-color: @accent !important; // Settings switch background | 设置开关背景 + } + .bui-switch-dot{ + background-color: @surface1 !important; // Settings switch button color | 设置开关按钮颜色 + } + + + + + + + + + // === Search video page | 搜索视频页面 === + .search-input-container .search-input-wrap[data-v-64f8f917]{ + background: @surface0 !important; //搜索输入框背景 + border-color: @accent !important; //搜索输入框边框 + } + .vui_tabs--navbar .vui_tabs--nav-slider{ + background: @accent !important; //搜索页面分区栏目下划线 + } + .vui_button--blue, .vui_button--blue:focus { + color: @base !important; // Text on accent background should be base | 强调色背景上的文字应为base + background: @accent !important; + border-color: @accent !important; + } + .vui_tabs--navbar .vui_tabs--nav-item .vui_tabs--nav-text{ + color: @text !important; //搜索页面分区栏目文字 + } + .vui_tabs--navbar .vui_tabs--nav-item:hover .vui_tabs--nav-text, .vui_tabs--navbar .vui_tabs--nav-item-active .vui_tabs--nav-text{ + color: @accent !important; //搜索页面分区栏目文字悬停和激活 + } + .vui_tabs--navbar .vui_tabs--nav-item .vui_tabs--nav-num{ + background: @surface1 !important; //搜索页面分区栏目数字背景 + color: @text !important; //搜索页面分区栏目数字文字 + } + .vui_button--tab, .vui_button--tab:focus{ + background: @surface1 !important; // Search page sort button background | 搜索页面排序按钮背景 + color: @text !important; // Search page sort button text | 搜索页面排序按钮文字 + } + .vui_button--tab:active, .vui_button--tab.vui_button--active, + .vui_button--tab.vui_button--active:hover{ + background: @accent !important; // Search page sort button active background | 搜索页面排序按钮激活背景 + color: @base !important; // Text on accent background should be base | 强调色背景上的文字应为base + border-color: @accent !important; + } + .vui_button--tab:hover{ + background: @surface1 !important; // Search page sort button hover background | 搜索页面排序按钮悬停背景 + color: @text !important; // Search page sort button hover text | 搜索页面排序按钮悬停文字 + } + .vui_button, .vui_button:focus{ + background: @surface1 !important; // Search page pagination button background | 搜索页面分页按钮背景 + color: @text !important; // Search page pagination button text | 搜索页面分页按钮文字 + } + .search-input-container .search-fixed-header[data-v-64f8f917]{ + background: @base !important; // Search page sliding header background | 搜索页面滑动出现的header背景 + } + .search-date-picker .search-date-picker__trigger .date-trigger[data-v-36b38319]{ + background-color: @surface1 !important; // Search page date picker background | 搜索页面日期选择器背景 + color: @text !important; // Search page date picker text | 搜索页面日期选择器文字 + border-color: @surface1 !important; // Search page date picker border | 搜索页面日期选择器边框 + } + .vui_button--active-blue:active, + .vui_button--active-blue.vui_button--active, + .vui_button--active-blue.vui_button--active:hover{ + border-color: @accent !important; // Search page date picker active border | 搜索页面日期选择器激活边框 + } + + + // === Homepage primary category tabs | 首页主分类标签 === + .primary-menu, + .channel-items__left, + .bili-feed4 .bili-header .channel-items__left { + background-color: @base !important; + } + + .primary-menu__item, + .channel-items__left .channel-link, + .tab-item { + background-color: @surface0 !important; + color: @text !important; + } + + .primary-menu__item:hover, + .channel-items__left .channel-link:hover, + .tab-item:hover { + background-color: @surface1 !important; + color: @accent !important; + } + + .primary-menu__item.active, + .channel-link.active, + .tab-item.active { + background-color: @accent !important; + color: @base !important; + } + + // === Homepage secondary category tabs | 首页二级分类标签 === + .secondary-menu, + .sub-tab { + background-color: @base !important; + } + + .secondary-menu__item, + .sub-tab-item { + background-color: @surface0 !important; + color: @text !important; + } + + .secondary-menu__item:hover, + .sub-tab-item:hover { + background-color: @surface1 !important; + color: @accent !important; + } + + .secondary-menu__item.active, + .sub-tab-item.active { + background-color: @surface1 !important; + color: @accent !important; + } + + // === Homepage video cards | 首页视频卡片 === + .bili-video-card, + .video-card, + .feed-card, + .bili-feed-card { + background-color: @surface0 !important; + border-color: @surface1 !important; + } + + .bili-video-card:hover, + .video-card:hover, + .feed-card:hover, + .bili-feed-card:hover { + background-color: @surface1 !important; + } + + .bili-video-card__info, + .video-card__info, + .bili-feed-card__info { + background-color: @surface0 !important; + } + + // === Feed card layers and overlays | 视频卡片层叠窗口 === + .bili-feed-card .layer, + .bili-feed-card .layer-bg, + .bili-feed-card .layer-tiny, + .floor-single-card .layer, + .floor-single-card .layer-bg, + .floor-card-inner, + .cover-container, + .card-mark, + .bili-video-card .cover-container, + .feed-card .cover-container { + background-color: @surface0 !important; + border-color: @surface1 !important; + } + + .bili-feed-card .layer .tiny, + .bili-feed-card .tiny, + .layer.tiny { + background-color: @surface0 !important; + color: @text !important; + border-color: @surface1 !important; + } + + // === Video card borders | 视频卡片边框 === + .bili-video-card__image, + .video-card__image, + .v-img { + border-color: @surface1 !important; + } + + // === Video card hover info overlay | 视频卡片悬停信息叠层 === + .bili-video-card__info--icon-text, + .video-card-info, + .card-info-bottom, + .bili-video-card .card-mark-text { + color: @text !important; + } + + .bili-video-card__info--tit, + .bili-video-card__info--tit a, + .video-card__info .video-name, + .video-name { + color: @text !important; + } + + .bili-video-card__info--tit:hover, + .bili-video-card__info--tit a:hover, + .video-name:hover { + color: @accent !important; + } + + .bili-video-card__info--author, + .bili-video-card__info--date, + .bili-video-card__stats, + .video-card__info .up-name, + .video-card__info .play-text { + color: @subtext0 !important; + } + + .bili-video-card__stats .bili-video-card__stats--item, + .video-card__info .play, + .video-card__info .danmu { + color: @subtext0 !important; + } + + .bili-video-card__stats__icon { + fill: @subtext0 !important; + } + + // === Homepage category tabs | 首页分类标签 === + .floor-single-card .card-list .floor-card, + .primary-menu .primary-menu-item { + background-color: @surface0 !important; + color: @text !important; + } + + .floor-single-card .card-list .floor-card:hover, + .primary-menu .primary-menu-item:hover { + background-color: @surface1 !important; + color: @accent !important; + } + + // === Homepage feed container | 首页推荐流容器 === + .feed-roll-btn, + .palette-button-wrap .palette-button, + .floor-single-card .card-list .floor-card-right, + .bili-feed4-layout .bili-header .right-entry .roll-btn { + background-color: @surface0 !important; + color: @text !important; + border-color: @surface1 !important; + } + + .feed-roll-btn:hover, + .palette-button-wrap .palette-button:hover, + .floor-single-card .card-list .floor-card-right:hover, + .bili-feed4-layout .bili-header .right-entry .roll-btn:hover { + background-color: @surface1 !important; + color: @accent !important; + border-color: @accent !important; + } + + // === Feed dynamic and hot icons | 动态和热门图标 === + .dynamic-icon, + .hot-icon, + .bili-header__channel .channel-icons { + fill: @mauve !important; + color: @mauve !important; + } + + .dynamic-icon:hover, + .hot-icon:hover { + fill: @accent !important; + color: @accent !important; + } + + // === Video card image overlay | 视频卡片图片遮罩 === + .bili-video-card__image--duration, + .video-card .duration { + background-color: fade(@mantle, 80%) !important; + color: @text !important; + } + + // === Recommended video section | 推荐视频区块 === + .recommended-container_floor-aside .container, + .recommended-container_floor-aside .aside-area { + background-color: @surface0 !important; + } + + .storey-box { + background-color: @base !important; + } + + // === Live room card | 直播间卡片 === + .live-card, + .bili-live-card { + background-color: @surface0 !important; + } + + .live-card:hover, + .bili-live-card:hover { + background-color: @surface1 !important; + } + + .live-card__title, + .bili-live-card__title { + color: @text !important; + } + + .live-card__up, + .bili-live-card__up { + color: @subtext0 !important; + } + + // === Scrollbar | 滚动条 === + ::-webkit-scrollbar-track { + background: @mantle !important; + } + + ::-webkit-scrollbar-thumb { + background: @surface2 !important; + } + + ::-webkit-scrollbar-thumb:hover { + background: @overlay0 !important; + } + + // === Popup and modal | 弹窗和模态框 === + .bili-modal__mask, + .bili-dialog__mask { + background-color: fade(@base, 50%) !important; // Semi-transparent backdrop | 半透明遮罩 + } + + .bili-modal, + .bili-dialog, + .mini-player-window { + background-color: @surface0 !important; + border-color: @surface1 !important; + } + + .bili-modal__header, + .bili-dialog__header { + background-color: @mantle !important; + color: @text !important; + } + + .bili-modal__body, + .bili-dialog__body { + background-color: @surface0 !important; + color: @text !important; + } + + // === Search input themed styles | 搜索框主题样式 === + .v-popover-content, + .bili-search-panel { + background-color: @surface0 !important; + border-color: @surface1 !important; + } + + input[type="search"], + input[type="text"].search-input { + background-color: @surface0 !important; + color: @text !important; + border-color: @surface1 !important; + } + + input[type="search"]:focus, + input[type="text"].search-input:focus { + background-color: @surface0 !important; + border-color: @accent !important; + } + + // === Toggle and switch hover states | 切换按钮悬停状态 === + .switch-btn:hover .txt, + .toggle-item:hover, + .setting-item:hover { + color: @accent !important; + } + + // === Borders and dividers | 边框和分割线 === + .divider, + hr { + border-color: @surface1 !important; + } + + .video-toolbar, + .video-toolbar-left, + .video-toolbar-right { + border-color: @surface1 !important; + } + + // === Icons below video | 视频下方图标 === + .video-toolbar-left .toolbar-left-item-wrap svg, + .video-toolbar-left .toolbar-left-item-wrap svg path, + .video-toolbar-right svg, + .video-toolbar-right svg path, + .video-share-info svg, + .video-share-info svg path { + fill: @mauve !important; + stroke: @mauve !important; + } + + .video-toolbar-left .toolbar-left-item-wrap:hover svg, + .video-toolbar-left .toolbar-left-item-wrap:hover svg path, + .video-toolbar-right:hover svg, + .video-toolbar-right:hover svg path { + fill: @accent !important; + stroke: @accent !important; + } + + // === Dropdown menu borders and icons | 下拉菜单边框和图标 === + .bili-dropdown, + .v-popover, + .popover-content { + background-color: @surface0 !important; + border-color: @surface1 !important; + } + + .bili-dropdown-item svg, + .bili-dropdown-item svg path, + .popover-content svg, + .popover-content svg path { + fill: @mauve !important; + stroke: @mauve !important; + } + + .bili-dropdown-item:hover svg, + .bili-dropdown-item:hover svg path { + fill: @accent !important; + stroke: @accent !important; + } + + // === Share menu | 分享菜单 === + .video-share-popover, + .share-container { + background-color: @surface0 !important; + border-color: @surface1 !important; + } + + .video-share-popover .share-item, + .share-container .share-item { + background-color: @surface0 !important; + color: @text !important; + } + + .video-share-popover .share-item:hover, + .share-container .share-item:hover { + background-color: @surface1 !important; + } + + .share-item svg, + .share-item svg path { + fill: @mauve !important; + } + + // === Header dropdown menu | 头部下拉菜单 === + .header-avatar-wrap--container, + .right-entry-item .v-popover-content, + .bili-header-m .header-entry-mini .mini-pop { + background-color: @surface0 !important; + border-color: @surface1 !important; + } + + .header-avatar-wrap--container .item, + .header-avatar-wrap--container a, + .v-popover-content .item, + .v-popover-content a { + color: @text !important; + } + + .header-avatar-wrap--container .item:hover, + .header-avatar-wrap--container a:hover, + .v-popover-content .item:hover, + .v-popover-content a:hover { + background-color: @surface1 !important; + color: @accent !important; + } + + .header-avatar-wrap--container svg, + .header-avatar-wrap--container svg path, + .v-popover-content svg, + .v-popover-content svg path { + fill: @mauve !important; + stroke: @mauve !important; + } + .floor-card[data-v-d632646a]{ + border-color: @surface1 !important; //叠放窗口边框 + } + + } +}