// ==UserScript== // @name V2eX - Polish Style // @version 3.2 // @description V2ex Polish Style // @author coolpace // @author 2smile // @author ChatGPT // @match https://*.v2ex.com/* // @match https://v2ex.com/* // @icon https://v2ex.com/static/apple-touch-icon-180.png // @run-at document-start // @grant GM_addStyle // ==/UserScript== // 尽早执行:防闪烁 + 自动同步原生主题 (function () { const docEl = document.documentElement; const STORAGE_KEY = "user_preferred_theme_mode"; // 1. 移动端检测(保持原样) const isMobile = /Mobi|Android|iPhone|iPad|iPod|Mobile|Phone/i.test(navigator.userAgent) || window.innerWidth <= 768; if (isMobile) { docEl.classList.add("v2p-mobile"); } // 2. 读取用户上次的设置 let currentMode = localStorage.getItem(STORAGE_KEY); // 3. 【防闪烁核心】在页面渲染前,立即应用上次已知的深色设置 // 这样如果你上次是深色,这次一打开就是深色,不会闪白 if (currentMode === 'dark') { docEl.classList.add("v2p-theme-dark-default"); } // 4. 【自动同步原生】建立一个观察者,当 V2EX 原生 DOM 加载出来后进行核对 // 如果你点击了 V2EX 原生的“切换主题”按钮,页面会重载,V2EX 会在 #Wrapper 加一个 Night 类 // 我们需要捕捉这个变化并更新脚本的记忆 const observer = new MutationObserver((mutations, obs) => { const wrapper = document.getElementById('Wrapper'); if (wrapper) { // V2EX 原生深色模式的标志是 #Wrapper 拥有 .Night 类 const isNativeDark = wrapper.classList.contains('Night'); // 记录一份给后面的主题核心逻辑用 window.__V2P_NATIVE_NIGHT__ = isNativeDark ? 1 : 0; if (isNativeDark) { // 如果原生是深色,但脚本记忆不是深色 -> 修正脚本为深色 if (currentMode !== 'dark') { docEl.classList.add("v2p-theme-dark-default"); localStorage.setItem(STORAGE_KEY, 'dark'); } } else { // 如果原生是浅色,但脚本记忆是深色 -> 修正脚本为浅色 // (注意:这里假设非 Night 就是浅色,如果你用晨光/水色等特殊主题,可保留不改) if (currentMode === 'dark') { docEl.classList.remove("v2p-theme-dark-default"); localStorage.setItem(STORAGE_KEY, 'light'); // 或者 'auto' } } // 检测完成,断开观察,节省性能 obs.disconnect(); } }); // 开始监听文档变化,等待 #Wrapper 出现 observer.observe(document, { childList: true, subtree: true }); })(); (function () { "use strict"; var style = ` :root { --zidx-serach: 100; --zidx-tabs: 10; --zidx-tools-card: 10; --zidx-reply-box: 99; --zidx-modal-header: 50; --zidx-modal-mask: 888; --zidx-toast: 999; --zidx-tip: 99; --zidx-popup: 99; --zidx-expand-mask: 10; --zidx-expand-btn: 20; --v2p-underline-offset: 0.5ex; --v2p-layout-column-gap: 25px; --v2p-layout-row-gap: 20px; --v2p-nav-height: 55px; --v2p-tp-item-x: 12px; --v2p-tp-item-y: 8px; --v2p-tp-tabs-pd: 10px; --v2p-tp-nested-pd: 10px 5px 2px 10px; --v2p-tp-preview-pd: 20px; --v2p-emoji-size: 21px; --v2p-box-radius: 10px; } /* === 搜索框防闪烁核心样式 === */ /* 只有当 html 标签确切拥有 v2p-theme-dark-default 类时,搜索框才变黑 */ html.v2p-theme-dark-default body #search-container { background-color: #2d333b !important; border-color: #444c56 !important; transition: background-color 0.1s ease; /* 极短的过渡,掩盖微小渲染延迟 */ } html.v2p-theme-dark-default body #search-container #search-result { background-color: #22272e !important; border-color: #444c56 !important; } :root body { --v2p-color-main-50: #f7f9fb; --v2p-color-main-100: #e6e6e6; --v2p-color-main-200: #ececec; --v2p-color-main-300: #cbd5e1; --v2p-color-main-350: #94a3b8cc; --v2p-color-main-400: #94a3b8; --v2p-color-main-500: #64748b; --v2p-color-main-600: #475569; --v2p-color-main-700: #334155; --v2p-color-main-800: #1e293b; --v2p-color-accent-50: #ecfdf5; --v2p-color-accent-100: #d1fae5; --v2p-color-accent-200: #a7f3d0; --v2p-color-accent-300: #6ee7b7; --v2p-color-accent-400: #34d399; --v2p-color-accent-500: #10b981; --v2p-color-accent-600: #059669; --v2p-color-orange-50: #fff7ed; --v2p-color-orange-100: #ffedd5; --v2p-color-orange-400: #fb923c; --v2p-color-background: #f2f3f5; --v2p-color-foreground: var(--v2p-color-main-800); --v2p-color-selection-foreground: var(--v2p-color-main-100); --v2p-color-selection-background: var(--v2p-color-main-700); --v2p-color-selection-background-img: var(--v2p-color-main-500); --v2p-color-font-secondary: var(--v2p-color-main-600); --v2p-color-font-tertiary: var(--v2p-color-main-500); --v2p-color-font-quaternary: var(--v2p-color-main-400); --v2p-color-button-background: var(--v2p-color-main-100); --v2p-color-button-foreground: var(--v2p-color-main-500); --v2p-color-button-background-hover: var(--v2p-color-main-200); --v2p-color-button-foreground-hover: var(--v2p-color-main-600); --v2p-color-bg-content: #fff; --v2p-color-bg-footer: var(--v2p-color-bg-content); --v2p-color-bg-hover-btn: rgb(226 232 240 / 70%); --v2p-color-bg-subtle: #f7f7f7; --v2p-color-bg-input: var(--v2p-color-main-50); --v2p-color-bg-search: var(--v2p-color-main-100); --v2p-color-bg-search-active: var(--v2p-color-main-200); --v2p-color-bg-widget: rgb(255 255 255 / 70%); --v2p-color-bg-reply: var(--v2p-color-main-100); --v2p-color-bg-tooltip: var(--v2p-color-bg-content); --v2p-color-bg-tabs: var(--v2p-color-main-100); --v2p-color-bg-tpr: var(--v2p-color-main-100); --v2p-color-bg-avatar: var(--v2p-color-main-300); --v2p-color-bg-block: var(--v2p-color-main-100); --v2p-color-bg-block-darker: var(--v2p-color-main-300); --v2p-color-bg-link: var(--v2p-color-main-100); --v2p-color-bg-link-hover: var(--v2p-color-main-200); --v2p-color-tabs: var(--v2p-color-foreground); --v2p-color-heart: #ef4444; --v2p-color-heart-fill: #fee2e2; --v2p-color-mask: rgb(0 0 0 / 25%); --v2p-color-divider: var(--v2p-color-main-200); --v2p-color-border: var(--v2p-color-main-200); --v2p-color-input-border: var(--v2p-color-main-300); --v2p-color-border-darker: var(--v2p-color-main-300); --v2p-color-link-visited: var(--v2p-color-main-400); --v2p-color-error: #ef4444; --v2p-color-bg-error: #fee2e2; --v2p-color-cell-num: var(--v2p-color-main-350); --v2p-box-shadow: 0 3px 5px 0 rgb(0 0 0 / 4%); --v2p-widget-shadow: 0 9px 24px -3px rgb(0 0 0 / 6%), 0 4px 8px -1px rgb(0 0 0 /12%); --v2p-toast-shadow: 0 6px 16px 0 rgb(0 0 0 / 8%), 0 3px 6px -4px rgb(0 0 0 / 12%), 0 9px 28px 8px rgb(0 0 0 / 5%); --color-fade: var(--v2p-color-font-secondary); --color-gray: var(--v2p-color-font-secondary); --link-color: var(--v2p-color-foreground); --link-darker-color: var(--v2p-color-main-600); --link-hover-color: var(--v2p-color-foreground); --link-caution-color: var(--v2p-color-orange-400); --box-border-color: var(--v2p-color-border); --box-foreground-color: var(--v2p-color-foreground); --box-background-color: var(--v2p-color-bg-content); --box-background-alt-color: var(--v2p-color-main-100); --box-background-hover-color: var(--v2p-color-main-200); --box-border-focus-color: var(--v2p-color-main-200); --box-border-radius: var(--v2p-box-radius); --button-background-color: var(--v2p-color-button-background); --button-foreground-color: var(--v2p-color-button-foreground); --button-hover-color: var(--v2p-color-button-background-hover); --button-background-hover-color: var(--v2p-color-button-background-hover); --button-foreground-hover-color: var(--v2p-color-button-foreground-hover); --button-border-color: var(--v2p-color-main-300); --button-border-hover-color: var(--v2p-color-main-400); font-family: system-ui, sans-serif; color: var(--v2p-color-foreground); background-color: var(--v2p-color-background); } :root body.v2p-theme-light-default, :root body .v2p-theme-light-default { --v2p-color-main-50: #f7f9fb; --v2p-color-main-100: #f2f2f2; --v2p-color-main-200: #ececec; --v2p-color-main-300: #cbd5e1; --v2p-color-main-350: #94a3b8cc; --v2p-color-main-400: #94a3b8; --v2p-color-main-500: #64748b; --v2p-color-main-600: #475569; --v2p-color-main-700: #334155; --v2p-color-main-800: #1e293b; --v2p-color-accent-50: #ecfdf5; --v2p-color-accent-100: #d1fae5; --v2p-color-accent-200: #a7f3d0; --v2p-color-accent-300: #6ee7b7; --v2p-color-accent-400: #34d399; --v2p-color-accent-500: #10b981; --v2p-color-accent-600: #059669; --v2p-color-orange-50: #fff7ed; --v2p-color-orange-100: #ffedd5; --v2p-color-orange-400: #fb923c; --v2p-color-background: #f2f3f5; --v2p-color-foreground: var(--v2p-color-main-700); --v2p-color-selection-foreground: var(--v2p-color-main-100); --v2p-color-selection-background: var(--v2p-color-main-700); --v2p-color-selection-background-img: var(--v2p-color-main-500); --v2p-color-font-secondary: var(--v2p-color-main-600); --v2p-color-font-tertiary: var(--v2p-color-main-500); --v2p-color-font-quaternary: var(--v2p-color-main-400); --v2p-color-button-background: var(--v2p-color-main-100); --v2p-color-button-foreground: var(--v2p-color-main-500); --v2p-color-button-background-hover: var(--v2p-color-main-200); --v2p-color-button-foreground-hover: var(--v2p-color-main-600); --v2p-color-bg-content: #fff; --v2p-color-bg-footer: var(--v2p-color-bg-content); --v2p-color-bg-hover-btn: rgb(226 232 240 / 70%); --v2p-color-bg-subtle: #f7f7f7; --v2p-color-bg-input: var(--v2p-color-main-50); --v2p-color-bg-search: var(--v2p-color-main-50); --v2p-color-bg-search-active: var(--v2p-color-main-200); --v2p-color-bg-widget: rgb(255 255 255 / 70%); --v2p-color-bg-reply: var(--v2p-color-main-50); --v2p-color-bg-tooltip: var(--v2p-color-bg-content); --v2p-color-bg-tabs: var(--v2p-color-main-100); --v2p-color-bg-tpr: var(--v2p-color-main-100); --v2p-color-bg-avatar: var(--v2p-color-main-300); --v2p-color-bg-block: var(--v2p-color-main-100); --v2p-color-bg-block-darker: var(--v2p-color-main-300); --v2p-color-bg-link: var(--v2p-color-main-100); --v2p-color-bg-link-hover: var(--v2p-color-main-200); --v2p-color-tabs: var(--v2p-color-foreground); --v2p-color-heart: #ef4444; --v2p-color-heart-fill: #fee2e2; --v2p-color-mask: rgb(0 0 0 / 25%); --v2p-color-divider: var(--v2p-color-main-200); --v2p-color-border: var(--v2p-color-main-200); --v2p-color-input-border: var(--v2p-color-main-300); --v2p-color-border-darker: var(--v2p-color-main-300); --v2p-color-link-visited: var(--v2p-color-main-400); --v2p-color-error: #ef4444; --v2p-color-bg-error: #fee2e2; --v2p-color-cell-num: var(--v2p-color-main-350); --v2p-box-shadow: 0 3px 5px 0 rgb(0 0 0 / 4%); --v2p-widget-shadow: 0 9px 24px -3px rgb(0 0 0 / 6%), 0 4px 8px -1px rgb(0 0 0 /12%); --v2p-toast-shadow: 0 6px 16px 0 rgb(0 0 0 / 8%), 0 3px 6px -4px rgb(0 0 0 / 12%), 0 9px 28px 8px rgb(0 0 0 / 5%); --color-fade: var(--v2p-color-font-secondary); --color-gray: var(--v2p-color-font-secondary); --link-color: var(--v2p-color-foreground); --link-darker-color: var(--v2p-color-main-600); --link-visited-color:var(--v2p-color-foreground); --link-hover-color: var(--v2p-color-foreground); --link-caution-color: var(--v2p-color-orange-400); --box-border-color: var(--v2p-color-border); --box-foreground-color: var(--v2p-color-foreground); --box-background-color: var(--v2p-color-bg-content); --box-background-alt-color: var(--v2p-color-main-100); --box-background-hover-color: var(--v2p-color-main-200); --box-border-focus-color: var(--v2p-color-main-200); --box-border-radius: var(--v2p-box-radius); --button-background-color: var(--v2p-color-button-background); --button-foreground-color: var(--v2p-color-button-foreground); --button-hover-color: var(--v2p-color-button-background-hover); --button-background-hover-color: var(--v2p-color-button-background-hover); --button-foreground-hover-color: var(--v2p-color-button-foreground-hover); --button-border-color: var(--v2p-color-main-300); --button-border-hover-color: var(--v2p-color-main-400); } :root body #Logo { background-image: url("https://raw.githubusercontent.com/thinktip/V2ex-Polish-Plus/refs/heads/main/v2ex%402x.svg"); width:130px !important; background-size: 130px 30px !important; } :root body::selection { color: var(--v2p-color-selection-foreground); background-color: var(--v2p-color-selection-background); } :root body img::selection { background-color: var(--v2p-color-selection-background-img); } :root { color-scheme: light; } :root html, :root body { min-height: 100vh; } body { scrollbar-gutter: stable; overflow: overlay; visibility: hidden; } body.v2p-theme-light-default { visibility: visible; } body h1 { font-weight: bold; } body a { cursor: default; text-decoration: none; } body a[href] { cursor: pointer; } body a:hover { text-decoration: underline 1px; text-underline-offset: var(--v2p-underline-offset); } body pre { max-width: calc(830px - 2 * var(--v2p-layout-column-gap) - 24px); } body #Top { height: var(--v2p-nav-height); background-color: var(--v2p-color-bg-content); border: none; } body #Bottom { color: var(--v2p-color-font-secondary); background-color: var(--v2p-color-bg-footer); border: none; } body #Bottom .content { flex-direction: column; } body #Wrapper { background-color: inherit; background-image: none; } body #Wrapper.Night { background-color: inherit; background-image: none; } body #Wrapper .content { gap: var(--v2p-layout-column-gap); } /* Logo样式 */ :root body #Logo, #LogoMobile { background-image: url("https://raw.githubusercontent.com/thinktip/V2ex-Polish-Plus/refs/heads/main/v2ex%402x.svg") !important; width: 130px !important; background-size: 130px 30px !important; } #LogoMobile { background-image: url("https://raw.githubusercontent.com/thinktip/V2ex-Polish-Plus/refs/heads/main/v2ex%402x.svg") !important; } /* 深色模式下反转 Logo 颜色 */ html.Night #Logo { filter: invert(1) brightness(0.9) contrast(0.9); } /* 布局和间距 */ body #Top, body #Bottom { background-color: var(--v2p-color-background) !important; margin-top: 15px !important; } #Main #SecondaryTabs { padding: 5px 20px; background-color: var(--v2p-color-bg-tabs); border-radius: 99px; box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); } .sep20 { height: 10px !important; } .message, .section { margin-top: 10px; } .box { padding: 10px; border-radius: 18px !important; } #reply-box { margin-top: 10px !important; margin-bottom: 10px !important; } #no-comments-yet { margin-bottom: 10px !important; } #reply_content { padding: 10px; } body form textarea#topic_title { margin: 10px 0; } /* 字体设置 - 全局 */ body, .mll, .mle, #search, .new-title-input, #Wrapper, h1, .item_title, .topic_content, .reply_content { font-family:ui-rounded, 'SF Pro Rounded', ui-system, -apple-system, sans-serif !important; } .topic_content a, .reply_content a { text-decoration: underline !important; } /* 标题和内容样式 */ .item_title a { font-weight: normal !important; } .item_title, .item_hot_topic_title, .payload { line-height: 1.6; } /* 头像圆角 */ img.avatar, .avatar { border-radius: 50% !important; width:40px !important; max-height:40px !important; } /* 节点和标签样式 */ .item_node { border-color: var(--v2p-color-main-300); } #Main .tab_current { background: none; border-bottom: 2px solid var(--box-foreground-color); border-radius: 0; color: var(--box-content-color); } #Main #SecondaryTabs { border-radius: 0 0 10px 10px; } /* 内容宽度限制 */ .content { max-width: 1200px !important; } #Top>.content { max-width: 1110px !important; } /* 成员活动条 */ .member-activity-bar { width: auto; } .ml { font-family: ui-monospace, 'SF Mono' !important; } .mll { border-radius: 10px; } body #search-container { border-radius:18px !important; } #Navcol .nav_item:hover { background-color: var(--box-background-hover-color); } #Navcol .nav_item:hover:active { box-shadow: none; } #Navcol .nav_item_current:hover { color: var(--box-foreground-color); background-color: var(--v2p-color-bg-content); } #Navcol .nav_item_current:active { box-shadow: none; } #Rightcol #page-outline-title { background-color: var(--v2p-color-button-background-hover); } #Rightcol .page-outline-item:hover { background-color: var(--box-background-hover-color); } body #Wrapper:has(#Singleton) { padding: 20px 0 0; } .subtle { background-color:var(--v2p-color-bg-subtle); border-radius:10px; border:none; margin-top:10px; padding:10px; } #topic-tip-box { box-shadow: none !important; display:none; } body #Wrapper:has(#Singleton) #Singleton { overflow: hidden; box-shadow: var(--v2p-box-shadow); } body #Leftbar { float: none; order: 1; } body #Main { flex: 1; order: 2; max-width: 85vw; margin-right: 290px; } body #Rightbar { order: 3; margin-right:0 !important; margin-left:20px; } body #search-container { height: 30px; margin: 0 30px; background-color: var(--v2p-color-bg-search); border: none; border-radius: 6px; transition: background-color 0.2s ease; /* 新增这行:让颜色变化更柔和 */ } body #search-container::before { top: 0; left: 4px; opacity: 0.6; background-size: 14px 14px; filter: none; } body #search-container.active { background-color: var(--v2p-color-bg-search-active); } body #search-container #search-result { z-index: var(--zidx-serach); top: 42px; font-size: 14px; color: var(--v2p-color-font-secondary); background: var(--v2p-color-bg-widget); backdrop-filter: blur(16px); border: 1px solid var(--box-border-color); box-shadow: var(--v2p-widget-shadow); } body #search-container #search-result .fade { color: var(--v2p-color-font-secondary); } body #search-container #search-result .search-item { font-weight: bold; color: var(--v2p-color-foreground); border-radius: 5px; } body #search-container #search-result .search-item.active { color: var(--v2p-color-foreground); } body #search-container #search-result .search-item.active.v2p-no-active { background-color: rgba(0, 0, 0, 0); } body .box { color: var(--box-foreground-color); background-color: var(--v2p-color-bg-content); border: none; border-radius: var(--box-border-radius); box-shadow: var(--v2p-box-shadow); } body .box .header > h1 { font-size: 18px; font-weight: bold; } body .box .header .gray { color: var(--color-gray); } body .button { --button-hover-shadow: 0 1.8px 0 var(--button-border-color), 0 1.8px 0 var(--button-background-color); } body .button.normal, body .button.super { cursor: pointer; user-select: none; position: relative; display: inline-flex; gap: 5px; align-items: center; height: 28px; padding: 0 12px; font-family: inherit; font-size: 14px; font-weight: 500; line-height: 28px; color: var(--v2p-color-button-foreground); text-shadow: none; white-space: nowrap; background: var(--v2p-color-button-background); border: none; border-radius: 6px; outline: none; box-shadow: 0 1.8px 0 var(--box-background-hover-color), 0 1.8px 0 var(--button-background-color); transition: color 0.25s, background-color 0.25s, box-shadow 0.25s; vertical-align: middle; margin-right: 10px; } body .button.normal:is(:hover:enabled, :active:enabled), body .button.super:is(:hover:enabled, :active:enabled) { font-weight: 500; color: var(--v2p-color-button-foreground-hover); text-shadow: none; background: var(--v2p-color-button-background-hover); border: none; box-shadow: var(--button-hover-shadow); } body .button.normal:is(.hover_now, .disable_now), body .button.super:is(.hover_now, .disable_now) { color: var(--v2p-color-button-foreground) !important; text-shadow: none !important; background: var(--button-background-color) !important; border: none !important; box-shadow: 0 1.8px 0 var(--box-background-hover-color) !important, 0 1.8px 0 var(--button-background-color) !important; } body .button.normal:is(.disable_now, :disabled), body .button.super:is(.disable_now, :disabled) { pointer-events: none; cursor: default; font-weight: 500; color: var(--v2p-color-button-foreground); text-shadow: none; opacity: 0.8; background: var(--button-background-color); box-shadow: 0 1.8px 0 var(--box-background-hover-color), 0 1.8px 0 var(--button-background-color); } body .button.normal kbd, body .button.super kbd { position: relative; right: -4px; padding: 0 3px; font-family: inherit; font-size: 90%; line-height: initial; border: 1px solid var(--button-border-color); border-radius: 4px; } .button.normal { border-radius:90px !important; padding-left:20px !important; padding-right:20px !important; } .ps_container td.button { border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; } .ps_container td.normal_page_right { border-top-right-radius: 90px !important; border-bottom-right-radius: 90px !important; } body .button.special { --button-hover-shadow: 0 1.8px 0 var(--v2p-color-accent-200), 0 1.8px 0 var(--v2p-color-accent-100); color: var(--v2p-color-accent-500); border-radius:99px; max-width:120px; } body .button.special:hover, body .button.special:hover:enabled { color: var(--v2p-color-accent-600); background: var(--v2p-color-accent-100); border: none; box-shadow: var(--button-hover-shadow); } body .button a { color: inherit; text-decoration: none; } body .badge { user-select: none; padding: 1px 3px; font-weight: bold; border: 1px solid var(--v2p-color-accent-400); border-radius:99px !important; line-height:13px; margin-right:5px; } body .badge:first-child { border: 1px solid var(--v2p-color-accent-400); border-top-left-radius: 4px; border-bottom-left-radius: 4px; } body .badge:last-child { border: 1px solid var(--v2p-color-accent-400); border-top-right-radius: 4px; border-bottom-right-radius: 4px; } body .badge.op { color: var(--v2p-color-accent-400); background-color: var(--v2p-color-accent-50); } body .badge.mod { color: var(--v2p-color-bg-content); background-color: var(--v2p-color-accent-400); } body .badge.you { color: var(--v2p-color-orange-400); background-color: var(--v2p-color-orange-50); border: 1px solid var(--v2p-color-orange-400); } body .badge.mini { height: 1.2em; font-size: 12px; font-weight: normal; line-height: 1; } body a.node:is(:active, :link, :visited) { padding: 2px 6px; font-size: 9px; color: var(--v2p-color-font-secondary); background-color: var(--v2p-color-bg-block); border-radius: 99px; } body a.node:is(:active, :link, :visited):hover { color: var(--v2p-color-font-tertiary); background-color: var(--v2p-color-button-background-hover); } body .outdated { font-size: 12px; border-color: var(--v2p-color-border); border-bottom: none; } body:is(.page_normal, .page_current):is(:link, :visited) { user-select: none; padding: 6px 9px; font-size: 14px; border: none; border-radius: var(--box-border-radius); } body .page_normal:is(:link, :visited) { font-weight: 500; background-color: var(--v2p-color-bg-content); box-shadow: 0 2px 2px var(--box-background-hover-color); transition: transform 0.25s; } body .page_normal:is(:link, :visited):hover { transform: scale(1.1) translateY(-2px); } body .page_current:is(:link, :visited) { pointer-events: none; font-weight: bold; background-color: var(--box-background-hover-color); box-shadow: none; } body .page_input { display: none; } body .dock_area { margin: 12px 0; background: var(--v2p-color-bg-block); border-radius:10px; } body .member-activity-bar { background-color: var(--v2p-color-divider); } body .member-activity-bar .member-activity-start { background-color: var(--v2p-color-accent-200); } body .member-activity-bar .member-activity-fourth { background-color: var(--v2p-color-accent-400); } body .member-activity-bar .member-activity-half { background-color: var(--v2p-color-accent-500); } body .member-activity-bar .member-activity-almost { background-color: var(--v2p-color-accent-600); } body .member-activity-bar .member-activity-done { background-color: var(--v2p-color-orange-400); } body .online { user-select: none; padding: 6px 8px; font-size: 13px; color: var(--v2p-color-bg-content); background: var(--v2p-color-accent-400); border-radius: 5px; } body #topic_supplement { resize: none; overflow: hidden; height: unset; min-height: 550px !important; max-height: 800px !important; font-size: 15px; color: currentColor; background-color: var(--v2p-color-bg-input); border: 1px solid var(--button-border-color); border-radius: 8px; transition: opacity 0.25s; overflow-y: auto; } body #topic_supplement::placeholder { font-size: 15px; color: var(--v2p-color-font-tertiary); } body #topic_supplement:is(:focus, :focus-within) { background-color: rgba(0, 0, 0, 0); outline: none; box-shadow: 0 0 0 1px var(--button-border-color); } body .item_hot_topic_title { --offset: 2.4px; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-height: 1.4; position: relative; padding: var(--offset) 0; text-shadow: none; } body .item_hot_topic_title > a:hover { text-underline-offset: var(--offset); } body form textarea#topic_title { resize: none; overflow: hidden; height: unset; min-height: 75px !important; max-height: 800px !important; font-size: 15px; color: currentColor; background-color: var(--v2p-color-bg-input); border: 1px solid var(--button-border-color); border-radius: 8px; transition: opacity 0.25s; } body form textarea#topic_title::placeholder { font-size: 15px; color: var(--v2p-color-font-tertiary); } body form textarea#topic_title:is(:focus, :focus-within) { background-color: rgba(0, 0, 0, 0); outline: none; box-shadow: 0 0 0 1px var(--button-border-color); } body form #topic_title { resize: none; overflow: hidden; height: unset; min-height: 30px !important; max-height: 800px !important; font-size: 15px; color: currentColor; background-color: var(--v2p-color-bg-input); border: 1px solid var(--button-border-color); border-radius: 8px; transition: opacity 0.25s; } body form #topic_title::placeholder { font-size: 15px; color: var(--v2p-color-font-tertiary); } body form #topic_title:is(:focus, :focus-within) { background-color: rgba(0, 0, 0, 0); outline: none; box-shadow: 0 0 0 1px var(--button-border-color); } body form #topic_content { resize: none; overflow: hidden; height: unset; min-height: 120px !important; max-height: 800px !important; font-size: 15px; color: currentColor; background-color: var(--v2p-color-bg-input); border: 1px solid var(--button-border-color); border-radius: 8px; transition: opacity 0.25s; } body form #topic_content::placeholder { font-size: 15px; color: var(--v2p-color-font-tertiary); } body form #topic_content:is(:focus, :focus-within) { background-color: rgba(0, 0, 0, 0); outline: none; box-shadow: 0 0 0 1px var(--button-border-color); } body form[action^="/notes"] .cell { background-color: rgba(0, 0, 0, 0) !important; } body #syntax-selector .radio-group { padding: 3px; border-radius:18px; background-color: var(--v2p-color-background); } body #syntax-selector .radio-group > input[type="radio"]:checked + label { background-color: #fff; border-radius:18px; } body #syntax-selector .radio-group > input[type="radio"] + label { cursor: pointer; font-size: 13px; } body #syntax-selector label { color: var(--v2p-color-foreground); } body .snow { color: var(--v2p-color-font-quaternary); } body .orange-dot { background: var(--v2p-color-orange-400); } body .alt { background-color: var(--v2p-color-bg-input); border: 1px solid var(--button-border-color); } body a.btn_hero { border-color: var(--v2p-color-foreground); } body a.btn_hero:hover { background-color: var(--v2p-color-foreground); } a.op { border-radius:20px !important; padding:2px 6px !important; font-size:12px; } a.tab_current, a.tab { border-radius:20px !important; } a.tab:active, a.tab:link, a.tab:visited { color:var(--v2p-color-foreground); } #topic_thank { line-height:1; } body .cell_ops { background-color: rgba(0, 0, 0, 0); } a.dark:active, a.dark:link, a.dark:visited { color: inherit !important;; text-decoration: none; } body:is( .topic_content, .reply_content, .v2p-topic-preview-content, .v2p-topic-preview-addons, .v2p-reply-preview, .markdown_body ) a[href*="v2ex.com/t"], body:is( .topic_content, .reply_content, .v2p-topic-preview-content, .v2p-topic-preview-addons, .v2p-reply-preview, .markdown_body ) a[href*="v2ex.com/t"][href^="http"], body:is( .topic_content, .reply_content, .v2p-topic-preview-content, .v2p-topic-preview-addons, .v2p-reply-preview, .markdown_body ) a[href^="/"] { text-decoration: underline 1.5px; text-underline-offset: 0.46ex; color: var(--v2p-color-accent-500); background-color: var(--v2p-color-accent-50); } body:is( .topic_content, .reply_content, .v2p-topic-preview-content, .v2p-topic-preview-addons, .v2p-reply-preview, .markdown_body ) a[href*="v2ex.com/t"]:hover, body:is( .topic_content, .reply_content, .v2p-topic-preview-content, .v2p-topic-preview-addons, .v2p-reply-preview, .markdown_body ) a[href*="v2ex.com/t"][href^="http"]:hover, body:is( .topic_content, .reply_content, .v2p-topic-preview-content, .v2p-topic-preview-addons, .v2p-reply-preview, .markdown_body ) a[href^="/"]:hover { color: var(--v2p-color-accent-500); background-color: var(--v2p-color-accent-50); } body:is( .topic_content, .reply_content, .v2p-topic-preview-content, .v2p-topic-preview-addons, .v2p-reply-preview, .markdown_body ) a[href^="http"], body:is( .topic_content, .reply_content, .v2p-topic-preview-content, .v2p-topic-preview-addons, .v2p-reply-preview, .markdown_body ) a[href*="/email-protection"], body:is( .topic_content, .reply_content, .v2p-topic-preview-content, .v2p-topic-preview-addons, .v2p-reply-preview, .markdown_body ) a[href^="/member/"] { text-decoration: underline 1.5px; text-underline-offset: 0.46ex; color: currentColor; background-color: var(--v2p-color-bg-link); } body:is( .topic_content, .reply_content, .v2p-topic-preview-content, .v2p-topic-preview-addons, .v2p-reply-preview, .markdown_body ) a[href^="http"]:hover, body:is( .topic_content, .reply_content, .v2p-topic-preview-content, .v2p-topic-preview-addons, .v2p-reply-preview, .markdown_body ) a[href*="/email-protection"]:hover, body:is( .topic_content, .reply_content, .v2p-topic-preview-content, .v2p-topic-preview-addons, .v2p-reply-preview, .markdown_body ) a[href^="/member/"]:hover { color: currentColor; background-color: var(--v2p-color-bg-link-hover); } body:is( .topic_content, .reply_content, .v2p-topic-preview-content, .v2p-topic-preview-addons, .v2p-reply-preview, .markdown_body ) a[href^="http"]:has(> .embedded_image), body:is( .topic_content, .reply_content, .v2p-topic-preview-content, .v2p-topic-preview-addons, .v2p-reply-preview, .markdown_body ) a[href*="/email-protection"]:has(> .embedded_image), body:is( .topic_content, .reply_content, .v2p-topic-preview-content, .v2p-topic-preview-addons, .v2p-reply-preview, .markdown_body ) a[href^="/member/"]:has(> .embedded_image) { background-color: rgba(0, 0, 0, 0); } body .CodeMirror { color: currentColor; background-color: var(--v2p-color-bg-input); } body .CodeMirror.CodeMirror-focused { background-color: var(--v2p-color-bg-content); } body .CodeMirror .CodeMirror-gutters { padding-right: 5px; background-color: var(--v2p-color-bg-input); border-right: 1px solid var(--v2p-color-border-darker); } body .CodeMirror .CodeMirror-linenumber { color: var(--v2p-color-font-quaternary); } body .CodeMirror .CodeMirror-cursors { background-color: var(--v2p-color-foreground); } body .cm-s-one-dark { background-color: var(--v2p-color-bg-input); } body #workspace { overflow: hidden; border: 1px solid var(--button-border-color); border-radius: 8px; } body .select2-container { width: 200px !important; } body .select2-container .select2-selection { background-color: var(--v2p-color-background); border: 1px solid var(--v2p-color-border); } body .select2-container .select2-selection .select2-selection__rendered, body .select2-container .select2-selection .select2-selection__placeholder { color: var(--v2p-color-foreground); } body .select2-container .select2-dropdown { font-size: 14px; background: var(--v2p-color-bg-widget); backdrop-filter: blur(16px); border: 1px solid var(--box-border-color); border-radius: 8px; box-shadow: var(--v2p-widget-shadow); transform: translateY(5px); } body .select2-container .select2-dropdown .select2-search { padding: 5px; } body .select2-container .select2-dropdown .select2-search .select2-search__field { padding: 6px 4px; background-color: rgba(0, 0, 0, 0); border: 1px solid var(--v2p-color-border); border-radius: 4px; } body .select2-container .select2-dropdown .select2-search .select2-search__field:focus-visible { border-color: var(--v2p-color-font-quaternary); outline: none; } body .select2-container .select2-dropdown .select2-results > .select2-results__options { padding: 5px; } body .select2-container .select2-dropdown .select2-container--default .select2-results__option--selected { color: currentColor; background-color: var(--v2p-color-accent-100); } body .select2-container .select2-results__option { border-radius: 4px; } body .select2-container .select2-results__option--highlighted.select2-results__option--selectable { color: currentColor; background-color: var(--v2p-color-main-200); } body .select2-container .select2-results__option--selected { color: currentColor !important; background-color: var(--v2p-color-accent-100) !important; } body .problem { color: currentColor; color: var(--v2p-color-orange-400); background-color: var(--v2p-color-orange-50); border-color: var(--v2p-color-orange-400); border-bottom: none; } body .markdown_body table { border-top: 1px solid var(--v2p-color-border-darker); box-shadow: none; } body .markdown_body table tr th, body .markdown_body table tr td { border: 1px solid var(--v2p-color-border-darker); } body .markdown_body table tr:nth-child(2n) { background-color: var(--box-background-alt-color); } body .markdown_body blockquote { margin-inline: 0; padding: 0 1em; color: var(--v2p-color-font-tertiary); border-left: 3px solid var(--v2p-color-border); } body .markdown_body pre { line-height: 1.5; } body .social_label:is(:link, :visited, :active) { background-color: var(--v2p-color-button-background); border-radius: var(--box-border-radius); box-shadow: none; } body .social_label:is(:link, :visited, :active):hover { background-color: var(--v2p-color-button-background-hover); } body .green { color: var(--v2p-color-accent-500); } body .message { margin: 6px 10px 8px; /* 上右下左:这里重点是 margin-bottom: 8px; */ color: var(--v2p-color-orange-400); background-color: var(--v2p-color-orange-50); border: none; border-radius: 999px; } body .balance_area, body a.balance_area:is(:link, :visited) { display: inline-flex; gap: 3px; align-items: center; font-weight: 600; color: var(--v2p-color-foreground); text-shadow: none; background: var(--v2p-color-button-background); } body .balance_area:hover, body a.balance_area:is(:link, :visited):hover { background: var(--v2p-color-button-background-hover); } body:is(.subtle) { background-color: var(--v2p-color-bg-subtle); border-left: 3px solid var(--v2p-color-accent-200); } body:is(.subtle) .topic_content { font-size: 15px; } body .onoffswitch label .frame::before { color: #fff; background-color: var(--v2p-color-accent-400); } body .onoffswitch label .frame::after { color: var(--v2p-color-font-secondary); background-color: var(--v2p-color-bg-search); } body select { color: var(--v2p-color-foreground); background-color: var(--v2p-color-background); border: 1px solid var(--v2p-color-border); border-radius: 4px; padding: 4px 6px; } body .ml, body .mle, body .mll, body .sl, body .sll, body .sls { color: var(--v2p-color-foreground); background-color: var(--v2p-color-bg-content); border-color: var(--v2p-color-input-border); } body .ml:focus, body .mle:focus, body .mll:focus, body .sl:focus, body .sll:focus, body .sls:focus { border-color: var(--v2p-color-input-border); } body input, body select, body textarea { color: var(--v2p-color-foreground); } body .onoffswitch { width: 90px; min-width: 90px; max-width: 90px; } .box .tag::before { color: var(--v2p-color-font-secondary); } .box .tag:link, .box .tag:visited { font-size: 12px; color: var(--v2p-color-font-secondary); background-color: var(--v2p-color-main-100); border-radius: 99px; } .box .tag > li { opacity: 0.6; } .payload { border-radius:10px; } #Top .content { height: 100%; } #Top .site-nav { height: 100%; padding: 0; } #Top .tools { display: flex; gap: 8px 14px; align-items: center; justify-content: flex-end; font-size: 14px; font-weight: 400; } #Top .tools .top { height: 26px; padding: 0 6px; line-height: 26px; color: var(--v2p-color-button-foreground); white-space: nowrap; border-radius: 4px; } #Top .tools .top:hover { color: var(--v2p-color-foreground); } #Top .tools .top:not(.v2p-hover-btn):hover { background-color: var(--v2p-color-button-background-hover); } #Top .tools * { margin-left: 0; } #Main .box { overflow: auto; padding: 5px 12px; } #Main .box.node-header > .cell { margin: 0 -12px; } #Main .node-header { padding-top:0 !important; } #Main .box .cell { padding: var(--v2p-tp-item-x) var(--v2p-tp-item-y); background-image: none !important; } #Main .box .cell_ops { padding: 15px 5px; } #Main .box:has(form[action="/write"]) .cell:nth-child(1), #Main .box:has(form[action="/write"]) .cell:nth-child(2) { border: none; } #Main .box:has(form[action="/write"]) .cell:has(#syntax-selector) { padding: 8px 0 !important; } #Main .box:has(form[action="/write"]) .cell:has(#syntax-selector) .tab-alt-container { gap: 0 8px; } #Main .box:has(form[action="/write"]) .cell:has(#syntax-selector) .tab-alt { padding: 4px 2px; border-bottom-width: 2px; transition: none; } #Main .box:has(form[action="/write"]) .cell:has(#syntax-selector) .tab-alt:not(.active):hover { border-color: rgba(0, 0, 0, 0); } #Main .box:has(form[action="/write"]) .cell#preview { padding: 2px 5px; } #Main .topic_buttons { display: flex; flex-wrap: wrap; column-gap: 5px; align-items: center; padding: 8px 0; background: none; } #Main .topic_buttons .topic_stats { float: none; flex: 1; order: 99; margin-left: 10px; padding: 0 !important; font-size: 12px; text-shadow: none; white-space: nowrap; } #Main .topic_buttons .topic_thanked { font-size: 12px; } #Main .topic_buttons a.tb:link { display: flex; flex-direction: row-reverse; column-gap: 5px; align-items: center; padding: 5px; text-shadow: none; white-space: nowrap; background: none; border-radius: 4px; } #Main .topic_buttons a.tb:link:not(.v2p-hover-btn) { color: var(--v2p-color-font-secondary); } #Main .topic_buttons a.tb:link:hover:not(.v2p-hover-btn) { color: currentColor; background: var(--v2p-color-bg-block); } #Main .vote:link { color: var(--v2p-color-font-tertiary); border-color: var(--v2p-color-border-darker); border-radius: 5px; } #Main .vote:link:hover { box-shadow: 0 2px 2px var(--v2p-color-main-200); } #Main .cell .topic-link { color: var(--v2p-color-main-600); text-decoration: none; } #Main .cell .topic-link:visited { color: var(--v2p-color-main-600); } #Main .cell .topic_info { pointer-events: none; user-select: none; position: relative; display: flex; flex-wrap: wrap; align-items: center; } #Main .cell .topic_info::after { content: ""; position: absolute; z-index: 1; inset: 0 0 -6px; background-color: var(--v2p-color-bg-content); } #Main .cell .topic_info .votes, #Main .cell .topic_info .node, #Main .cell .topic_info strong:first-of-type, #Main .cell .topic_info span:first-of-type, #Main .cell .topic_info .v2p-topic-actions { pointer-events: auto; position: relative; z-index: 2; } #Main .cell .topic_info a[href^="/member"] { font-weight: 500; color: var(--v2p-color-font-tertiary); background-color: rgba(0, 0, 0, 0); } #Main .cell .count_livid { user-select: none; display: inline-block; padding: 3px 6px; font-size: 11px; font-weight: 400; white-space: nowrap; border-radius: 99px; margin-right: 0; color: var(--v2p-color-button-foreground); background-color: var(--v2p-color-bg-block); } #Main .cell .count_orange { user-select: none; display: inline-block; padding: 3px 6px; font-size: 11px; font-weight: 400; white-space: nowrap; border-radius: 99px; font-weight: bold; color: var(--v2p-color-bg-block); background-color: var(--v2p-color-orange-400); } #Main .cell .item_title .topic-link { font-size: 15px; font-weight: 500; } #Main .cell.item tr > td:nth-child(2) { width: 30px; } #Main .box > .cell[id^="r"]:not(:has(.cell[id^="r"])) .reply_content, #Main .v2p-modal-content > .cell[id^="r"]:not(:has(.cell[id^="r"])) .reply_content { padding-bottom: 0; } #Main .cell[id^="r"] { --bg-reply: var(--v2p-color-bg-content); background-color: var(--bg-reply); } #Main .cell[id^="r"]:not(:has(+ .cell[id^="r"])) { border-bottom: none; } #Main .cell[id^="r"]:hover > table td:last-of-type .fr a { opacity: 1; } #Main .cell[id^="r"] .ago { font-size: 12px; color: var(--v2p-color-font-quaternary); white-space: nowrap; } #Main .cell[id^="r"] .reply_content { padding-bottom: 10px; line-height: 1.5; } #Main .cell[id^="r"] > table:first-of-type td:first-of-type { width: 40px; } #Main .cell[id^="r"] > table:first-of-type td:first-of-type .avatar { display: inline-block; aspect-ratio: 1; width: 40px !important; height: 40px !important; background-color: var(--v2p-color-bg-avatar); margin-top:5px; } #Main .cell[id^="r"] > table ~ .cell[id^="r"] { --bg-reply: var(--v2p-color-bg-reply); position: relative; z-index: var(--zidx-expand-btn); padding: var(--v2p-tp-nested-pd); border-left: 2px solid var(--v2p-color-border-darker); border-top: 1px solid var(--v2p-color-border-darker); border-radius: 10px; margin:10px 0 0 30px; } #Main .cell[id^="r"] > table ~ .cell[id^="r"] .cell[id^="r"] { padding: 0; box-shadow: none; } #Main .cell[id^="r"] > table ~ .cell[id^="r"] .cell[id^="r"].v2p-indent { border-left: 2px solid var(--v2p-color-border-darker); padding:10px 10px 2px 10px; } #Main .cell[id^="r"] > table ~ .cell[id^="r"] tr td:first-of-type { width: 25px; } #Main .cell[id^="r"] > table ~ .cell[id^="r"] tr td:first-of-type .avatar { width: 25px !important; height: 25px !important; border-radius: 4px; } #Main .cell[id^="r"] > table ~ .cell[id^="r"] tr td:nth-child(3) strong a { font-size: 13px; } #Main .cell[id^="r"] > table ~ .cell[id^="r"] .reply_content { padding-right: 5px; } #Main .cell[id^="r"] > table td:nth-of-type(2) { width: 15px; } #Main .cell[id^="r"] > table td:last-of-type a.dark { color: var(--v2p-color-font-secondary); text-decoration: none; } #Main .cell[id^="r"] > table td:last-of-type a.dark:hover { text-decoration: none; } #Main .cell[id^="r"] > table td:last-of-type .fr { user-select: none; position: relative; top: -3px; } #Main .cell[id^="r"] > table td:last-of-type .fr a { opacity: 0; } #Main .cell[id^="r"] > table td:last-of-type .fr + .sep3 { height: 0; } #Main .cell[id^="r"]:last-of-type { border: none; } #Main .cell[id^="r"] .no { user-select: none; position: relative; top: -4px; padding: 5px 10px; font-size: 12px; color: var(--v2p-color-cell-num); background-color: rgba(0, 0, 0, 0); border-radius: 5px; } #Main #Tabs { user-select: none; position: sticky; z-index: var(--zidx-tabs); top: 0; display: flex; flex-wrap: wrap; gap: 0; align-items: center; padding: var(--v2p-tp-tabs-pd); background-color: var(--v2p-color-bg-content); } #Main #Tabs .tab_current { margin-right:0; } #Main #Tabs .tab { margin: 3px 4px; } #Main #Tabs .tab.v2p-hover-btn::before { inset: 0; } #Main #SecondaryTabs { padding: 5px 20px; background-color: var(--v2p-color-bg-tabs); border-radius: 99px; box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); margin-bottom:10px; } #Main #SecondaryTabs a { color: var(--v2p-color-main-600); } #Main .topic_content, #Main .reply_content { font-size: 15px; line-height: 1.6; color: currentColor; } #Main .topic_content a[href^="/member"], #Main .reply_content a[href^="/member"] { position: relative; bottom: 1px; font-size: 13px; color: var(--v2p-color-font-tertiary); text-decoration: underline; text-underline-offset: 0.4ex; background-color: rgba(0, 0, 0, 0); } #Main .thank_area { font-size: 12px; } #Main .tab { user-select: none; color: var(--v2p-color-foreground); background-color: rgba(0, 0, 0, 0); } #Main .tab:not(.v2p-hover-btn):hover { background-color: var(--v2p-color-bg-block); } #Main .tab_current { user-select: none; color: var(--v2p-color-bg-content) !important; background-color: var(--v2p-color-foreground) !important; border-radius: 999px !important; } #Main #reply-box.reply-box-sticky { z-index: var(--zidx-reply-box); bottom: 20px; overflow: visible; margin: 0 -10px; padding: 0 22px; border: none; border-radius: var(--box-border-radius); outline: 2px solid var(--v2p-color-border); } a.topic-link:active,a.topic-link:link { line-height: 1.5; } #Main #reply-box .flex-one-row:last-of-type { justify-content: flex-start; } #Main #reply-box .flex-one-row:last-of-type .gray { margin-right: auto; } #Main #reply-box > .cell { font-size: 12px; } #Main #reply-box > .cell.flex-one-row { min-height: 45px; padding: 0 10px; border: none; } #Main #reply-box > .cell.flex-row-end { padding: 12px 10px; border: none; } #Main #reply-box > .cell:has(form) { padding-top: 0; } #Main #no-comments-yet { color: var(--color-gray); border-color: var(--color-gray); } #Main #notifications .cell[id^="n"]:hover .node { opacity: 1; } #Main #notifications .cell[id^="n"] .node { opacity: 0; } #Main #notifications .cell[id^="n"] .payload { color: var(--v2p-color-foreground); background-color: var(--v2p-color-bg-block); } #Main #notifications .cell[id^="n"] .payload:has(.embedded_video_wrapper) { min-width: 50%; } #Main #notifications .cell[id^="n"] .topic-link:visited { color: var(--v2p-color-font-quaternary); } #Main .cell_tabs .cell_tab_current { font-weight: bold; border-color: var(--v2p-color-foreground); } #Main .cell_tabs .cell_tab { color: var(--v2p-color-foreground); } #Main .cell_tabs .cell_tab:hover { border-color: var(--v2p-color-border-darker); } #Rightbar .cell:has(.light-toggle) { font-size: 13px; } #Rightbar .box .item_node { font-size: 12px; color: var(--v2p-color-font-secondary); border-color: var(--v2p-color-border); border-radius: 5px; } #Rightbar .box .item_node:hover { box-shadow: var(--v2p-box-shadow); } #Rightbar a.dark:is(:link, :active, :visited, :hover) { color: var(--v2p-color-font-tertiary); } #Rightbar a.dark:is(:link, :active, :visited, :hover):hover { color: var(--v2p-color-font-secondary); } #Bottom { position: sticky; top: 100%; } #Bottom a.dark { font-size: 13px; font-weight: 400; } #Bottom a.dark:is(:link, :active, :visited, :hover) { color: var(--v2p-color-font-tertiary); } .wwads-cn { border: none !important; box-shadow: none !important; } .box:has(a[href^="/advertise"]) { overflow: hidden; border: none !important; box-shadow: none !important; } .box:has(a[href^="/advertise"]) .sidebar_compliance { background-color: var(--v2p-color-bg-block); } .inner table { table-layout: fixed; } /* --- 这里替换原文件中的深色模式 CSS --- */ html.v2p-theme-dark-default, html.v2p-theme-dark-default body, :root body.v2p-theme-dark-default, :root .v2p-theme-dark-default, :root[data-darkreader-scheme="dark"] body, :root body:where(:has(#Wrapper.Night)) { color-scheme: dark; --v2p-color-main-50: unset; --v2p-color-main-100: #2d333b; --v2p-color-main-200: #374151; --v2p-color-main-300: #374151; --v2p-color-main-350: #6b7280cc; --v2p-color-main-400: #6b7280; --v2p-color-main-500: #9ca3af; --v2p-color-main-600: #9ca3af; --v2p-color-main-700: #d1d5db; --v2p-color-main-800: #e5e7eb; --v2p-color-main-900: #111827; --v2p-color-main-950: #030712; --v2p-color-border:#2d323c; --v2p-color-accent-50: #064e3b; --v2p-color-accent-100: #065f46; --v2p-color-accent-200: #047857; --v2p-color-accent-300: #059669; --v2p-color-accent-400: #34d399; --v2p-color-accent-500: #34d399; --v2p-color-accent-600: #6ee7b7; --v2p-color-orange-50: #593600; --v2p-color-orange-100: #9a3412; --v2p-color-orange-400: #fbe090; --v2p-color-background: #1c2128; --v2p-color-foreground: #adbac7; --v2p-color-font-secondary: var(--v2p-color-main-600); --v2p-color-button-background: #373e47; --v2p-color-button-foreground: var(--v2p-color-foreground); --v2p-color-button-background-hover: #444c56; --v2p-color-button-foreground-hover: var(--v2p-color-foreground); --v2p-color-bg-content: #22272e; --v2p-color-bg-hover-btn: var(--v2p-color-button-background-hover); --v2p-color-bg-subtle: #444c56; --v2p-color-bg-input: var(--v2p-color-background); --v2p-color-bg-search: var(--v2p-color-main-100); --v2p-color-bg-search-active: var(--v2p-color-main-200); --v2p-color-bg-widget: var(--v2p-color-bg-content); --v2p-color-bg-reply: var(--v2p-color-main-100); --v2p-color-bg-tooltip: var(--v2p-color-main-100); --v2p-color-bg-avatar: var(--v2p-color-main-300); --v2p-color-bg-block: #373e47; --v2p-color-heart: #ef4444; --v2p-color-heart-fill: #fca5a5; --v2p-color-mask: rgb(99 110 123 / 40%); --v2p-color-border: #444c56; --v2p-color-input-border: #444c56; --v2p-color-border-darker: #444c56; --v2p-box-shadow: 0 3px 5px 0 rgb(0 0 0 / 10%); --v2p-toast-shadow: none; --link-color: var(--v2p-color-foreground); --link-visited-color:var(--v2p-color-foreground); --box-background-alt-color: var(--v2p-color-main-100); --box-background-hover-color: var(--v2p-color-main-300); --box-border-color: var(--v2p-color-main-100); --button-hover-color: var(--button-background-hover-color); --button-border-color: var(--v2p-color-border); --button-border-hover-color: #768390; visibility: visible; } html.v2p-theme-dark-default #Logo, html.v2p-theme-dark-default body #Logo, :root body.v2p-theme-dark-default #Logo, :root .v2p-theme-dark-default #Logo, :root[data-darkreader-scheme="dark"] body #Logo, :root body:has(#Wrapper.Night) #Logo { background-image: url("https://raw.githubusercontent.com/thinktip/V2ex-Polish-Plus/refs/heads/main/v2ex-alt%402x.svg"); } html.v2p-theme-dark-default::selection, html.v2p-theme-dark-default body::selection, :root body.v2p-theme-dark-default::selection, :root .v2p-theme-dark-default::selection, :root[data-darkreader-scheme="dark"] body::selection, :root body:has(#Wrapper.Night)::selection { color: var(--v2p-color-background, #1c2128); background-color: var(--v2p-color-foreground, #adbac7); } html.v2p-theme-dark-default img::selection, html.v2p-theme-dark-default body img::selection, :root body.v2p-theme-dark-default img::selection, :root .v2p-theme-dark-default img::selection, :root[data-darkreader-scheme="dark"] body img::selection, :root body:has(#Wrapper.Night) img::selection { background-color: var(--v2p-color-foreground, #adbac7); } html.v2p-theme-dark-default #Top, html.v2p-theme-dark-default body #Top, :root body.v2p-theme-dark-default #Top, :root .v2p-theme-dark-default #Top, :root[data-darkreader-scheme="dark"] body #Top, :root body:has(#Wrapper.Night) #Top { background-color: rgba(0, 0, 0, 0); } html.v2p-theme-dark-default #Main .cell .item_title .topic-link, :root body.v2p-theme-dark-default #Main .cell .item_title .topic-link, :root .v2p-theme-dark-default #Main .cell .item_title .topic-link, :root[data-darkreader-scheme="dark"] body #Main .cell .item_title .topic-link, :root body:has(#Wrapper.Night) #Main .cell .item_title .topic-link { font-weight: normal; } html.v2p-theme-dark-default #search-container::before, :root body.v2p-theme-dark-default #search-container::before, :root .v2p-theme-dark-default #search-container::before, :root[data-darkreader-scheme="dark"] body #search-container::before, :root body:has(#Wrapper.Night) #search-container::before { background-image: url("/static/img/search_icon_light.png"); } /* --- SAFARI FIX 强制补丁 (整合版) --- */ /* 1. Tabs 标签栏修复 */ html.v2p-theme-dark-default #Main #Tabs .tab, html.v2p-theme-dark-default #Tabs .tab { color: var(--v2p-color-foreground) !important; background-color: transparent; } html.v2p-theme-dark-default #Main #Tabs .tab:hover, html.v2p-theme-dark-default #Tabs .tab:hover { background-color: var(--v2p-color-bg-block); } html.v2p-theme-dark-default #Main #Tabs .tab_current, html.v2p-theme-dark-default #Tabs .tab_current, html.v2p-theme-dark-default .v2p-mobile #Tabs a.tab_current { color: var(--v2p-color-bg-content) !important; background-color: var(--v2p-color-foreground) !important; border: none !important; } /* 2. Livid/Count 计数背景色修复 */ html.v2p-theme-dark-default .count_livid, html.v2p-theme-dark-default #Main .cell .count_livid, html.v2p-theme-dawn #Main .cell .count_livid, html.v2p-theme-aqua #Main .cell .count_livid, html.v2p-theme-dark-default a.count_livid, html.v2p-theme-dark-default .v2p-mobile a.count_livid { color: var(--v2p-color-button-foreground) !important; background-color: var(--v2p-color-bg-block) !important; border: none !important; } /* 3. [新增] 移动端菜单 (Menu Body) 修复 */ /* 强制菜单容器背景变黑 */ html.v2p-theme-dark-default #menu-body, html.v2p-theme-dark-default .v2p-mobile #menu-body { background-color: var(--v2p-color-bg-content) !important; border: 1px solid var(--v2p-color-border) !important; box-shadow: 0 5px 15px rgba(0,0,0,0.5) !important; } /* 强制菜单内文字颜色变亮 */ html.v2p-theme-dark-default #menu-body .cell a, html.v2p-theme-dark-default #menu-body .cell a.top, html.v2p-theme-dark-default .v2p-mobile #menu-body .cell a { color: var(--v2p-color-foreground) !important; background-color: transparent !important; } /* 修复菜单内图标可能的白底问题 */ html.v2p-theme-dark-default #menu-body img.tool-icon { filter: brightness(0.8); /*稍微压暗一点图标以免太刺眼*/ } html.v2p-theme-dark-default .no { background-color:var(--v2p-color-main-100); margin-top:-3px; border-radius:99px; } .cell.item > table > tbody > tr > td:nth-child(2) { width: 10px !important; max-width: 15px !important; } /* ========================================================================== 移动端楼中楼 (Nested Replies) 专属优化 ========================================================================== */ /* 1. 针对移动端,大幅减小嵌套回复的左缩进,改用“左侧边框”来体现层级 */ .v2p-mobile #Main .cell[id^="r"] > table ~ .cell[id^="r"] { margin: 6px 0 6px 8px !important; /* 左缩进仅保留 8px */ padding: 8px 6px !important; /* 减小内边距 */ border: none !important; border-left: 2px solid var(--v2p-color-divider) !important; /* 使用实线边框表示层级 */ border-radius: 0 4px 4px 0 !important; /* 仅右侧圆角 */ background-color: var(--v2p-color-bg-subtle) !important; /* 稍微深一点的背景 */ } /* 2. 处理多层嵌套时的背景叠加问题,避免太深 */ .v2p-mobile #Main .cell[id^="r"] > table ~ .cell[id^="r"] .cell[id^="r"] { background-color: var(--v2p-color-bg-content) !important; /* 第三层变回亮色/暗色背景,形成交替感 */ margin-left: 6px !important; border-left: 2px solid var(--v2p-color-accent-400) !important; /* 第三层换个边框色(可选) */ } /* 3. 移动端嵌套回复中,头像和用户名的布局微调 */ .v2p-mobile #Main .cell[id^="r"] > table ~ .cell[id^="r"] table tr td:nth-child(1) { width: 28px !important; /* 稍微限制头像列宽 */ } .v2p-mobile #Main .cell[id^="r"] > table ~ .cell[id^="r"] .avatar { width: 20px !important; /* 嵌套回复头像缩小,节省空间 */ height: 20px !important; } /* 4. 隐藏嵌套回复中一些不必要的元素以节省空间 */ .v2p-mobile #Main .cell[id^="r"] > table ~ .cell[id^="r"] .ago { font-size: 10px !important; /* 时间字体变小 */ } .v2p-mobile #Main .cell[id^="r"] > table ~ .cell[id^="r"] .no { display: none !important; /* 移动端嵌套内隐藏楼层号,避免干扰 */ } /* 5. 修复移动端回复内容的行高和字体 */ .v2p-mobile .reply_content { font-size: 15px !important; line-height: 1.5 !important; overflow-wrap: break-word; /* 强行换行,防止长链接撑破布局 */ } /* 6. 确保父级 Cell 在移动端不会因为 Padding 导致宽度不够 */ .v2p-mobile #Main .cell[id^="r"] { padding-right: 5px !important; padding-left: 5px !important; } @supports not selector(:has(*)) { :root #Wrapper.Night { --v2p-color-main-50: unset; --v2p-color-main-100: #2d333b; --v2p-color-main-200: #374151; --v2p-color-main-300: #374151; --v2p-color-main-350: #6b7280cc; --v2p-color-main-400: #6b7280; --v2p-color-main-500: #9ca3af; --v2p-color-main-600: #9ca3af; --v2p-color-main-700: #d1d5db; --v2p-color-main-800: #e5e7eb; --v2p-color-main-900: #111827; --v2p-color-main-950: #030712; --v2p-color-accent-50: #064e3b; --v2p-color-accent-100: #065f46; --v2p-color-accent-200: #047857; --v2p-color-accent-300: #059669; --v2p-color-accent-400: #34d399; --v2p-color-accent-500: #34d399; --v2p-color-accent-600: #6ee7b7; --v2p-color-orange-50: #593600; --v2p-color-orange-100: #9a3412; --v2p-color-orange-400: #fbe090; --v2p-color-background: #1c2128; --v2p-color-foreground: #adbac7; --v2p-color-font-secondary: var(--v2p-color-main-600); --v2p-color-button-background: #373e47; --v2p-color-button-foreground: var(--v2p-color-foreground); --v2p-color-button-background-hover: #444c56; --v2p-color-button-foreground-hover: var(--v2p-color-foreground); --v2p-color-bg-content: #22272e; --v2p-color-bg-hover-btn: var(--v2p-color-button-background-hover); --v2p-color-bg-subtle: #f7f7f7; --v2p-color-bg-input: var(--v2p-color-background); --v2p-color-bg-search: var(--v2p-color-main-100); --v2p-color-bg-search-active: var(--v2p-color-main-200); --v2p-color-bg-widget: var(--v2p-color-bg-content); --v2p-color-bg-reply: var(--v2p-color-main-100); --v2p-color-bg-tooltip: var(--v2p-color-main-100); --v2p-color-bg-avatar: var(--v2p-color-main-300); --v2p-color-bg-block: #373e47; --v2p-color-heart: #ef4444; --v2p-color-heart-fill: #fca5a5; --v2p-color-mask: rgb(99 110 123 / 40%); --v2p-color-border: #444c56; --v2p-color-input-border: #444c56; --v2p-color-border-darker: #444c56; --v2p-box-shadow: 0 0 0 1px var(--v2p-color-border); --v2p-toast-shadow: none; --link-color: var(--v2p-color-foreground); --box-background-alt-color: var(--v2p-color-main-100); --box-background-hover-color: var(--v2p-color-main-300); --button-hover-color: var(--button-background-hover-color); --button-border-color: var(--v2p-color-border); --button-border-hover-color: #768390; visibility: visible; } :root #Wrapper.Night #Logo { background-image: url("https://www.v2ex.com/static/img/v2ex-alt@2x.png"); } :root #Wrapper.Night::selection { color: var(--v2p-color-background, #1c2128); background-color: var(--v2p-color-foreground, #adbac7); } :root #Wrapper.Night img::selection { background-color: var(--v2p-color-foreground, #adbac7); } } body.v2p-theme-dawn, .v2p-theme-dawn { --v2p-color-base: 32deg 57% 95%; --v2p-color-surface: 35deg 100% 98%; --v2p-color-overlay: 33deg 43% 91%; --v2p-color-muted: 257deg 9% 61%; --v2p-color-subtle: 248deg 12% 52%; --v2p-color-text: 248deg 19% 40%; --v2p-color-love: 343deg 35% 55%; --v2p-color-gold: 35deg 81% 56%; --v2p-color-rose: 3deg 53% 67%; --v2p-color-pine: 197deg 53% 34%; --v2p-color-foam: 189deg 30% 48%; --v2p-color-iris: 268deg 21% 57%; --v2p-color-main-600: hsl(47, 48.15%, 21.26%) --v2p-color-accent-50: hsl(var(--v2p-color-foam) / 10%); --v2p-color-accent-100: hsl(var(--v2p-color-foam) / 20%); --v2p-color-accent-200: hsl(var(--v2p-color-foam) / 30%); --v2p-color-accent-300: hsl(var(--v2p-color-foam) / 40%); --v2p-color-accent-400: #34d399; --v2p-color-accent-500: hsl(var(--v2p-color-foam) / 65%); --v2p-color-accent-600: hsl(var(--v2p-color-foam) / 80%); --v2p-color-orange-50: hsl(var(--v2p-color-gold) / 10%); --v2p-color-orange-100: hsl(var(--v2p-color-gold) / 20%); --v2p-color-orange-400: hsl(var(--v2p-color-gold)); --v2p-color-background: hsl(var(--v2p-color-base)); --v2p-color-foreground: hsl(38.09deg 19% 40%); --v2p-color-selection-foreground: var(--v2p-color-foreground); --v2p-color-selection-background: hsl(var(--v2p-color-muted) / 20%); --v2p-color-selection-background-img: hsl(var(--v2p-color-muted) / 60%); --v2p-color-font-secondary: hsl(37.89deg 18.63% 40%); --v2p-color-font-tertiary: hsl(var(--v2p-color-subtle)); --v2p-color-font-quaternary: hsl(var(--v2p-color-subtle)); --v2p-color-button-background: hsl(var(--v2p-color-text) / 10%); --v2p-color-button-foreground: var(--v2p-color-foreground); --v2p-color-button-background-hover: hsl(var(--v2p-color-text) / 15%); --v2p-color-button-foreground-hover: var(--v2p-color-foreground); --v2p-color-bg-content: hsl(var(--v2p-color-surface)); --v2p-color-bg-footer: var(--v2p-color-bg-content); --v2p-color-bg-hover-btn: rgb(152 147 165 / 10%); --v2p-color-bg-subtle: hsl(var(--v2p-color-pine) / 10%); --v2p-color-bg-input: hsl(var(--v2p-color-overlay) / 40%); --v2p-color-bg-search: hsl(var(--v2p-color-overlay) / 60%); --v2p-color-bg-search-active: hsl(var(--v2p-color-overlay) / 90%); --v2p-color-bg-widget: rgb(255 255 255 / 70%); --v2p-color-bg-reply: #faf4ed; --v2p-color-bg-tooltip: var(--v2p-color-bg-content); --v2p-color-bg-tabs: hsl(34deg 53% 34% / 10%); --v2p-color-bg-tpr: hsl(var(--v2p-color-text) / 10%); --v2p-color-bg-avatar: hsl(var(--v2p-color-overlay)); --v2p-color-bg-block: hsl(var(--v2p-color-text) / 10%); --v2p-color-bg-block-darker: hsl(var(--v2p-color-text) / 25%); --v2p-color-bg-link: hsl(var(--v2p-color-text) / 10%); --v2p-color-bg-link-hover: hsl(var(--v2p-color-text) / 15%); --v2p-color-tabs: hsl(46.92deg 53% 34%); --v2p-color-heart: #eb6f92; --v2p-color-heart-fill: rgb(235 111 146 / 50%); --v2p-color-mask: rgb(0 0 0 / 25%); --v2p-color-divider: hsl(var(--v2p-color-muted) / 20%); --v2p-color-border: hsl(var(--v2p-color-muted) / 20%); --v2p-color-input-border: rgb(152 147 165 / 20%); --v2p-color-border-darker: hsl(var(--v2p-color-muted) / 40%); --v2p-color-link-visited: hsl(37.89, 18.63%, 60%); --v2p-color-error: #eb6f92; --v2p-color-bg-error: #fee2e2; --v2p-color-cell-num: hsl(var(--v2p-color-subtle)); --v2p-box-shadow: 0 3px 5px 0 rgb(0 0 0 / 4%); --v2p-widget-shadow: 0 9px 24px -3px rgb(0 0 0 / 6%), 0 4px 8px -1px rgb(0 0 0 /12%); --v2p-toast-shadow: 0 6px 16px 0 rgb(0 0 0 / 8%), 0 3px 6px -4px rgb(0 0 0 / 12%), 0 9px 28px 8px rgb(0 0 0 / 5%); --link-color: var(--v2p-color-foreground); --link-visited-color:var(--v2p-color-foreground); --box-background-alt-color: var(--v2p-color-bg-block); --box-background-hover-color: var(--v2p-color-bg-link-hover); --button-hover-color: var(--v2p-color-button-background-hover); --button-border-color: var(--v2p-color-border); --button-border-hover-color: var(--v2p-color-border-darker); visibility: visible; } body.v2p-theme-dawn .button.special:hover, body.v2p-theme-dawn .button.special:hover:enabled, .v2p-theme-dawn .button.special:hover, .v2p-theme-dawn .button.special:hover:enabled { text-shadow: none; } body.v2p-theme-aqua, .v2p-theme-aqua { /* --- 核心颜色调整:从暖色 (32deg) 切换到冷色 (210-230deg) --- */ /* 基础和表面色:非常浅、高饱和度的冷白/浅灰蓝 */ --v2p-color-base: 220deg 18% 97%; /* 整体背景: 略带蓝色的浅灰色 */ --v2p-color-surface: 240deg 100% 100%; /* 内容卡片背景: 纯白或极浅蓝白 */ --v2p-color-overlay: 210deg 12% 90%; /* 遮罩/输入框背景: 干净的浅灰色 */ /* 文本颜色:使用深蓝色或深灰色以提供高对比度 */ --v2p-color-muted: 215deg 10% 55%; /* 次要文本: 中等冷灰 */ --v2p-color-subtle: 220deg 15% 45%; /* 次级文本: 较深的冷灰 */ --v2p-color-text: 220deg 25% 25%; /* 主文本: 接近黑色的深蓝灰 */ /* 强调色:Aqua/Cyan/Blue,用于链接和高光 */ --v2p-color-love: 345deg 60% 55%; /* 红色/点赞: 保持一个略冷的洋红/玫瑰色 */ --v2p-color-gold: 35deg 81% 56%; /* 警告/金: 保持不变,或略调冷*/ --v2p-color-rose: 3deg 53% 67%; /* 错误/玫瑰: 保持不变 */ --v2p-color-pine: 180deg 53% 34%; /* 蓝绿色/主要强调色 (Pine -> Cyan) */ --v2p-color-foam: 195deg 70% 45%; /* 强调色 (Aqua/Foam) */ --v2p-color-iris: 240deg 50% 60%; /* 紫色/次要强调色 (Iris -> Blue) */ /* --- 衍生色(强调色使用 --v2p-color-iris,以提供蓝色高光) --- */ --v2p-color-accent-50: #ecfdf5; --v2p-color-accent-100: hsl(var(--v2p-color-iris) / 20%); --v2p-color-accent-200: hsl(var(--v2p-color-iris) / 30%); --v2p-color-accent-300: hsl(var(--v2p-color-iris) / 40%); --v2p-color-accent-400: #34d399; --v2p-color-accent-500: hsl(var(--v2p-color-iris) / 65%); --v2p-color-accent-600: hsl(var(--v2p-color-iris) / 80%); --v2p-color-orange-50: hsl(var(--v2p-color-gold) / 10%); --v2p-color-orange-100: hsl(var(--v2p-color-gold) / 20%); --v2p-color-orange-400: hsl(var(--v2p-color-gold)); /* --- 背景 & 字体 --- */ --v2p-color-background: #f2f7fa; --v2p-color-foreground: hsl(var(--v2p-color-text)); --v2p-color-selection-foreground: var(--v2p-color-surface); /* 选中字体为白色 */ --v2p-color-selection-background: hsl(var(--v2p-color-iris) / 60%); /* 选中背景为蓝色 */ --v2p-color-selection-background-img: hsl(var(--v2p-color-iris) / 80%); --v2p-color-font-secondary: hsl(var(--v2p-color-subtle)); --v2p-color-font-tertiary: hsl(var(--v2p-color-subtle)); --v2p-color-font-quaternary: hsl(var(--v2p-color-subtle)); /* --- 交互元素 --- */ --v2p-color-button-background: hsl(var(--v2p-color-iris) / 10%); /* 按钮背景使用冷色调 */ --v2p-color-button-foreground: var(--v2p-color-foreground); --v2p-color-button-background-hover: hsl(var(--v2p-color-iris) / 15%); --v2p-color-button-foreground-hover: var(--v2p-color-foreground); /* --- 界面元素 --- */ --v2p-color-bg-content: hsl(var(--v2p-color-surface)); /* 内容卡片使用纯白 */ --v2p-color-bg-footer: var(--v2p-color-bg-content); --v2p-color-bg-hover-btn: hsl(var(--v2p-color-iris) / 10%); /* 按钮悬停使用冷色高光 */ --v2p-color-bg-subtle: hsl(var(--v2p-color-iris) / 10%); --v2p-color-bg-input: hsl(var(--v2p-color-overlay) / 50%); --v2p-color-bg-search: hsl(var(--v2p-color-overlay) / 70%); --v2p-color-bg-search-active: hsl(var(--v2p-color-overlay)); --v2p-color-bg-widget: rgb(255 255 255 / 85%); /* 略带透明的白色 */ --v2p-color-bg-reply: #f3f6fa; /* 浅浅的冷蓝色背景 */ --v2p-color-bg-tooltip: var(--v2p-color-bg-content); --v2p-color-bg-tabs: hsl(var(--v2p-color-iris) / 5%); --v2p-color-bg-tpr: hsl(var(--v2p-color-text) / 10%); --v2p-color-bg-avatar: hsl(var(--v2p-color-overlay)); --v2p-color-bg-block: hsl(var(--v2p-color-iris) / 5%); /* 内容块极浅蓝色背景 */ --v2p-color-bg-block-darker: hsl(var(--v2p-color-iris) / 15%); --v2p-color-bg-link: hsl(var(--v2p-color-iris) / 10%); --v2p-color-bg-link-hover: hsl(var(--v2p-color-iris) / 15%); --v2p-color-tabs: #394d65; /* Tabs 使用蓝色强调 */ /* --- 边框 & 阴影 --- */ --v2p-color-divider: hsl(var(--v2p-color-muted) / 15%); /* 更浅的边框 */ --v2p-color-border: hsl(var(--v2p-color-muted) / 15%); --v2p-color-input-border: hsl(220deg 15% 75%); /* 浅灰色冷调输入框边框 */ --v2p-color-border-darker: hsl(var(--v2p-color-muted) / 30%); /* --- 其他 --- */ --v2p-color-link-visited: hsl(var(--v2p-color-subtle)); --v2p-color-error: #eb6f92; --v2p-color-bg-error: #fee2e2; --v2p-color-cell-num: hsl(var(--v2p-color-subtle)); --v2p-box-shadow: 0 1px 2px 0 rgb(0 0 0 / 6%), 0 1px 3px 0 rgb(0 0 0 / 4%); /* 调整为更轻的阴影 */ --v2p-widget-shadow: 0 6px 16px -3px rgb(0 0 0 / 4%), 0 2px 4px -1px rgb(0 0 0 /8%); /* 调整为更轻的阴影 */ --v2p-toast-shadow: var(--v2p-widget-shadow); /* --- 别名 (使用 Accent Color Blue) --- */ --link-color: #394d65; /* 链接使用蓝色 */ --link-visited-color:var(--v2p-color-foreground); --box-background-alt-color: var(--v2p-color-bg-block); --box-background-hover-color: var(--v2p-color-bg-link-hover); --button-hover-color: var(--v2p-color-button-background-hover); --button-border-color: var(--v2p-color-border); --button-border-hover-color: var(--v2p-color-border-darker); visibility: visible; } body { position: relative; } body.v2p-modal-open { overflow: hidden; } body .button.v2p-prev-btn, body .button.v2p-next-btn { padding: 0 15px; } body #Top a:has(#Logo.v2p-logo) { display: inline-flex; align-items: center; } body #Logo.v2p-logo { width: unset; height: 25px; padding: 0 8px; background-image: none !important; } .v2p-hover-btn { cursor: pointer; user-select: none; position: relative; z-index: 1; margin: 0; text-decoration: none; white-space: nowrap; background: none; background-color: rgba(0, 0, 0, 0); transition: color 0.2s; } .v2p-hover-btn::before { content: ""; position: absolute; z-index: -1; inset: 0 -5px; transform: scale(0.65); opacity: 0; background-color: var(--v2p-color-bg-hover-btn); border-radius: 99px; transition: background-color 0.15s, color 0.15s, transform 0.15s, opacity 0.15s; } .v2p-hover-btn:hover { text-decoration: none; } .v2p-hover-btn:hover::before { transform: scale(1); opacity: 1; } .v2p-hover-btn-disabled { pointer-events: none; opacity: 0.8; } .v2p-icon-heart { display: inline-flex; width: 14px; height: 14px; color: var(--v2p-color-heart); } .v2p-icon-heart svg { fill: var(--v2p-color-heart-fill); } .node { border-radius:99px !important; } #Main .cell[id^="r"] .v2p-auto-hide { overflow: hidden; display: inline-flex; width: 0; } #Main #reply-box .v2p-reply-preview { font-size: 15px; line-height: 1.6; } #Main .cell:hover .v2p-topic-preview-btn, #Main .cell:hover .v2p-topic-ignore-btn, #Rightbar .cell:hover .v2p-topic-preview-btn, #Rightbar .cell:hover .v2p-topic-ignore-btn { visibility: visible; } #Rightbar .v2p-info-row { display: block; font-size: 12px; color: var(--v2p-color-accent-500); text-align: center; } #Rightbar .v2p-info-row:hover { text-decoration: none; background-color: var(--v2p-color-accent-50); } #Rightbar .v2p-topic-preview-btn { position: absolute; top: 0; right: 0; bottom: 0; height: 20px; font-size: 12px; backdrop-filter: blur(8px); box-shadow: 0 0 0 3px var(--v2p-color-bg-content); } .page_current { padding: 2px 5px; border-radius: var(--box-border-radius); margin: 0 1px; } .v2p-tool-box { position: sticky; z-index: var(--zidx-tools-card); top: var(--v2p-layout-row-gap); } .v2p-tool-box .v2p-tools { display: grid; grid-auto-rows: auto; grid-template-columns: repeat(3, 1fr); gap: 8px 15px; align-items: center; justify-content: center; font-size: 12px; color: var(--v2p-color-font-secondary); } .v2p-tool { display: inline-flex; gap: 0 5px; align-items: center; padding: 3px 0; } .v2p-tool:hover { color: var(--v2p-color-button-foreground-hover); } .v2p-tool .v2p-tool-icon { width: 16px; height: 16px; } .v2p-topic-actions { display: inline-flex; gap: 2px 10px; } .v2p-topic-preview-btn { cursor: pointer; font-size: 13px; color: var(--v2p-color-button-foreground); visibility: hidden; background-color: var(--v2p-color-button-background-hover); border: none; border-radius: 3px; outline: none; } .v2p-topic-ignore-btn { cursor: pointer; margin-left: 8px; visibility: hidden; } .v2p-topic-preview { font-size: 15px; line-height: 1.6; padding: var(--v2p-tp-preview-pd); } .v2p-tpr-loading { --tpr-h: 30px; --tpr-h-p: 22px; display: flex; flex-direction: column; gap: 10px; padding: 25px; } .v2p-tpr-loading .v2p-tpr { background-color: var(--v2p-color-bg-tpr); border-radius: 5px; } .v2p-tpr-loading .v2p-tpr-info { display: flex; gap: 15px; align-items: center; } .v2p-tpr-info-avatar { width: var(--tpr-h); height: var(--tpr-h); } .v2p-tpr-info-text { width: 50%; height: var(--tpr-h); } .v2p-tpr-loading .v2p-tpr-content { display: flex; flex-direction: column; gap: 12px; padding: 15px 0 20px; } .v2p-tpr-loading .v2p-tpr-content .v2p-tpr-content-p { height: var(--tpr-h-p); } .v2p-tpr-loading .v2p-tpr-cmt { display: flex; gap: 15px; padding-top: 15px; border-top: 1px solid var(--v2p-color-border); } .v2p-tpr-loading .v2p-tpr-cmt .v2p-tpr-cmt-avatar { width: 50px; height: 50px; } .v2p-tpr-loading .v2p-tpr-cmt .v2p-tpr-cmt-right { display: flex; flex: 1; flex-direction: column; gap: 10px; } .v2p-tpr-loading .v2p-tpr-cmt .v2p-tpr-cmt-right .v2p-tpr-cmt-header { width: 50%; height: var(--tpr-h); } .v2p-tpr-loading .v2p-tpr-cmt .v2p-tpr-cmt-right .v2p-tpr-cmt-p { height: var(--tpr-h-p); } .v2p-tp-info-bar { display: flex; gap: 10px; align-items: center; margin-bottom: 10px; } .v2p-tp-info, .v2p-tp-read { overflow: hidden; display: inline-flex; gap: 20px; align-items: center; padding: 5px 10px; font-size: 13px; background-color: var(--v2p-color-button-background); border-radius: 5px; } .v2p-tp-read { cursor: pointer; user-select: none; gap: 4px; } .v2p-tp-read:hover { background-color: var(--v2p-color-button-background-hover); } .v2p-tp-read-icon { width: 16px; height: 16px; } .v2p-tp-member { display: inline-flex; gap: 5px; align-items: center; font-weight: bold; } .v2p-tp-avatar { width: 20px; height: 20px; background-color: var(--v2p-color-bg-avatar); border-radius: 3px; } .v2p-topic-preview-addons { margin-top: 30px; } #Main.v2p-topic-preview > .box { border: 1px solid var(--v2p-color-border); } a.v2p-topic-preview-title-link:hover { text-decoration: underline 1.5px; text-underline-offset: 0.46ex; } .v2p-dot { margin: 0 8px; font-size: 15px; font-weight: 800; } .v2p-paging { background: none !important; } .v2p-paging.cell { border-bottom: none; } .v2p-modal-mask { position: fixed; z-index: var(--zidx-modal-mask); inset: 0; overflow: hidden; overflow-y: auto; padding: min(2vh, 60px); background-color: var(--v2p-color-mask); } .v2p-popup { font-size: 14px; background: var(--v2p-color-bg-widget); backdrop-filter: blur(16px); border: 1px solid var(--box-border-color); border-radius: 8px; box-shadow: var(--v2p-widget-shadow); position: absolute; z-index: var(--zidx-popup); top: 0; left: 0; } .v2p-popup-content { overflow-y: auto; width: max-content; } .v2p-toast { position: fixed; z-index: var(--zidx-toast); top: 50px; left: 50%; transform: translateX(-50%); padding: 10px 15px; font-size: 14px; color: var(--v2p-color-background); background: var(--v2p-color-foreground); border-radius: 8px; box-shadow: var(--v2p-toast-shadow); } .v2p-modal-main { position: relative; overflow: hidden; display: flex; flex-direction: column; box-sizing: border-box; width: 800px; height: 100%; margin: 0 auto; background-color: var(--v2p-color-bg-content); border-radius: var(--box-border-radius); } .v2p-modal-header { display: flex; gap: 0 20px; align-items: center; padding: 15px 20px 20px; background-color: var(--v2p-color-bg-content); border-bottom: 1px solid var(--box-border-color); } .v2p-modal-title { overflow: hidden; padding: 2px 0; font-size: 16px; font-weight: bold; text-overflow: ellipsis; white-space: nowrap; } .v2p-modal-actions { display: flex; gap: 0 10px; align-items: center; margin-left: auto; } .v2p-modal-content { position: relative; overflow-y: auto; overscroll-behavior-y: contain; flex: 1; outline: none; } .v2p-modal-content #Main.v2p-topic-preview > .box { border: none; box-shadow: none; } .v2p-modal-comments { position: absolute; inset: 0; overflow-y: auto; padding: 0 20px; visibility: hidden; } .v2p-modal-comments.v2p-tab-content-active { z-index: 20; visibility: visible; } .v2p-modal-comment-tabs { display: flex; gap: 4px; align-items: center; padding: 4px 5px; font-size: 14px; font-weight: normal; background-color: var(--button-background-color); border-radius: 4px; } .v2p-modal-comment-tabs > [data-tab-key] { cursor: pointer; padding: 4px 5px; border-radius: 4px; } .v2p-modal-comment-tabs > [data-tab-key]:hover { background-color: var(--v2p-color-button-background-hover); } .v2p-modal-comment-tabs > [data-tab-key].v2p-tab-active { color: var(--v2p-color-foreground); background-color: var(--v2p-color-accent-100); } .v2p-no-pat { padding: 30px 20px; font-size: 15px; text-align: center; } .v2p-no-pat .v2p-no-pat-title { font-size: 16px; font-weight: bold; } .v2p-no-pat .v2p-no-pat-desc { display: flex; align-items: center; justify-content: center; margin-top: 15px; } .v2p-no-pat .v2p-no-pat-block { display: inline-flex; align-items: center; margin: 0 5px; padding: 2px 10px; background-color: var(--v2p-color-bg-block); border-radius: 2px; } .v2p-no-pat .v2p-no-pat-steps { display: flex; flex-wrap: wrap; gap: 20px; max-width: 800px; margin-top: 20px; padding: 20px; background-color: var(--v2p-color-bg-block); border-radius: 10px; } .v2p-no-pat .v2p-no-pat-step { flex: 1; } .v2p-no-pat .v2p-no-pat-img { width: 100%; border-radius: 8px; box-shadow: var(--v2p-widget-shadow); } .v2p-no-pat .v2p-icon-logo { width: 15px; height: 15px; } .v2p-likes-box { user-select: none; position: relative; top: 3px; display: inline-flex; column-gap: 5px; align-items: center; } .v2p-likes-box.v2p-thanked { font-weight: bold; color: var(--v2p-color-heart); opacity: 0.8; } .v2p-likes-box.v2p-thanked .v2p-icon-heart svg { fill: var(--v2p-color-heart); } @supports not selector(:has(*)) { #Main .cell[id^="r"] > table:hover .v2p-controls { opacity: 1; } } @supports selector(:has(*)) { #Main .cell[id^="r"]:not(:has(.cell:hover)) > table:hover .v2p-auto-hide { width: auto; } #Main .cell[id^="r"]:not(:has(.cell:hover)) > table:hover .v2p-controls { opacity: 1; } } .v2p-controls { display: inline-flex; column-gap: 15px; margin-right: 15px; font-size: 12px; opacity: 0; } .v2p-controls svg { opacity: 1 !important; /* 保证颜色一致 */ } .v2p-controls > a { text-decoration: none; } .v2p-control { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; padding: 4px 0; color: var(--v2p-color-font-tertiary); } .v2p-control::after { pointer-events: none; z-index: var(--zidx-tip); overflow: hidden; width: max-content; min-width: 30px; padding: 2px 5px; font-size: 12px; color: var(--v2p-color-foreground); text-align: center; white-space: nowrap; background-color: var(--v2p-color-bg-tooltip); border-radius: 4px; box-shadow: var(--v2p-widget-shadow); position: absolute; top: -8px; transform: translateY(-100%); opacity: 0; } .v2p-control:hover { color: var(--v2p-color-font-secondary); } .v2p-control.v2p-thanked { cursor: default; color: var(--v2p-color-heart); } .v2p-control:hover::after { opacity: 1; } .v2p-control.v2p-control-hide::after { content: "\u9690\u85CF\u56DE\u590D"; } .v2p-control.v2p-control-thank::after { content: "\u611F\u8C22\u56DE\u590D"; } .v2p-control.v2p-control-thank.v2p-thanked::after { content: "\u5DF2\u611F\u8C22"; } .v2p-control.v2p-control-reply::after { content: "\u56DE\u590D"; } .topic_buttons .v2p-tb.v2p-hover-btn { color: var(--v2p-color-font-secondary); } .topic_buttons .v2p-tb.v2p-hover-btn::after { display: none; } .topic_buttons .v2p-tb.v2p-hover-btn:hover { color: currentColor; } .v2p-tb-icon { width: 15px; height: 15px; } .v2p-emoji-container { overflow-y: auto; max-height: 285px; padding: 15px 18px; color: var(--v2p-color-font-secondary); } .v2p-member-card { max-width: 300px; max-height: 285px; padding: 12px; font-size: 13px; text-align: left; } .v2p-member-card .v2p-info { display: flex; gap: 15px; } .v2p-member-card .v2p-info-right { padding: 2px 0; } .v2p-member-card .v2p-avatar-box { overflow: hidden; display: inline-block; width: 73px; height: 73px; background-color: var(--button-background-hover-color); border-radius: 5px; } .v2p-member-card .v2p-avatar { width: 100%; height: 100%; } .v2p-member-card .v2p-username { font-size: 16px; font-weight: bold; } .v2p-member-card .v2p-no { margin: 5px 0; } .v2p-member-card .v2p-no, .v2p-member-card .v2p-created-date { width: 160px; height: 16px; } .v2p-member-card .v2p-loading { background-color: var(--button-background-hover-color); border-radius: 4px; } .v2p-member-card .v2p-bio { overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-height: 1.4; margin-top: 10px; } .v2p-member-card-actions { padding: 10px 0 0; } .v2p-reply-tags { cursor: pointer; display: inline-flex; margin: 0 0 2px; padding: 0 3px; font-size: 12px; background-color: var(--button-background-hover-color); border-radius: 3px; } .v2p-reply-tags-inline { overflow: hidden; max-width: 300px; margin: 0 5px 0 0; text-overflow: ellipsis; white-space: nowrap; } .v2p-emoticons-box { font-size: 15px; } .v2p-emoji-group ~ .v2p-emoji-group { margin-top: 10px; } .v2p-emoji-title { margin: 0 0 10px; font-size: 14px; text-align: left; } .v2p-emoji-list { display: grid; grid-template-columns: repeat(8, 1fr); gap: 5px; font-size: 20px; } .v2p-emoji { cursor: pointer; height: 20px; padding: 3px; line-height: 20px; border-radius: 4px; } .v2p-emoji:hover { background-color: var(--box-background-hover-color); } .v2p-emoji > img { height: 100%; } .v2p-decode { cursor: copy; position: relative; padding: 2px 4px; font-size: 13px; color: var(--v2p-color-orange-400); text-decoration: none; background-color: var(--v2p-color-orange-50); } .v2p-decode::after { pointer-events: none; z-index: var(--zidx-tip); overflow: hidden; width: max-content; min-width: 30px; padding: 2px 5px; font-size: 12px; color: var(--v2p-color-foreground); text-align: center; white-space: nowrap; background-color: var(--v2p-color-bg-tooltip); border-radius: 4px; box-shadow: var(--v2p-widget-shadow); content: attr(data-title); position: absolute; top: -8px; left: 50%; transform: translate(-50%, -100%); opacity: 0; } .v2p-decode:hover { color: var(--v2p-color-orange-400); } .v2p-decode:hover::after { opacity: 1; } .v2p-reply-content { position: relative; } .v2p-reply-content .v2p-expand-btn.normal.button { position: absolute; z-index: var(--zidx-expand-btn); bottom: 5px; left: 50%; transform: translateX(-50%); font-size: 12px; font-weight: 400; } .v2p-reply-content.v2p-collapsed::before { pointer-events: none; content: ""; position: absolute; z-index: var(--zidx-expand-mask); right: 0; bottom: 0; left: 0; height: 130px; background: linear-gradient(to top, var(--bg-reply) 10px, transparent); } .v2p-reply-content.v2p-collapsed .reply_content a, .v2p-reply-content.v2p-collapsed .reply_content .embedded_video { pointer-events: none; } .v2p-reply-content.v2p-collapsed .v2p-expand-btn.normal.button { bottom: 10px; transform: translateX(-50%); } .cell[id^="r"] .cell[id^="r"] .v2p-reply-content .v2p-expand-btn.normal.button { color: var(--v2p-color-button-foreground); background: var(--v2p-color-button-background-hover); box-shadow: var(--button-hover-shadow); } .v2p-empty-content { display: flex; flex-direction: column; align-items: center; padding-top: 20px; font-size: 14px; color: var(--v2p-color-font-secondary); } .v2p-empty-content .v2p-text-emoji { font-size: 20px; } .v2p-topic-reply-ref { margin: 0 -10px 15px; padding: 5px 10px; font-size: 13px; color: var(--v2p-color-font-tertiary); background-color: var(--v2p-color-bg-block); border-radius: 5px; } .v2p-topic-reply-box { margin-top: 50px; padding: 30px 0; font-size: 14px; line-height: 1.55; color: var(--v2p-color-font-secondary); border-top: 1px solid var(--v2p-color-divider); } .v2p-topic-reply ~ .v2p-topic-reply { margin-top: 15px; } .v2p-topic-reply-member { display: inline; font-weight: bold; color: var(--v2p-color-main-700); } .v2p-topic-reply-avatar { position: relative; top: 2px; overflow: hidden; width: 15px; height: 15px; margin-right: 5px; object-fit: cover; background-color: var(--v2p-color-bg-avatar); border-radius: 2px; } .v2p-topic-reply-content { display: inline; } .v2p-topic-reply-tip { margin-top: 20px; font-size: 13px; color: var(--v2p-color-font-quaternary); text-align: center; } .v2p-reply-wrap { resize: none; overflow: hidden; height: unset; margin-bottom:10px; min-height: 140px !important; max-height: 800px !important; font-size: 15px; color: currentColor; background-color: var(--v2p-color-bg-input); border: 1px solid var(--button-border-color); border-radius: 8px; transition: opacity 0.25s; } .v2p-reply-wrap::placeholder { font-size: 15px; color: var(--v2p-color-font-tertiary); } .v2p-reply-wrap:is(:focus, :focus-within) { background-color: rgba(0, 0, 0, 0); outline: none; box-shadow: 0 0 0 1px var(--button-border-color); } .v2p-reply-wrap #reply_content { background-color: rgba(0, 0, 0, 0); border: none; } .v2p-reply-wrap #reply_content::placeholder { font-size: 14px; color: var(--v2p-color-font-tertiary); } .v2p-reply-wrap #reply_content:focus { background-color: var(--v2p-color-bg-content); outline: none; } .v2p-reply-upload-bar { cursor: pointer; padding: 6px 10px; font-size: 12px; color: var(--v2p-color-font-tertiary); background-color: var(--v2p-color-bg-input); border-top: 1px dashed var(--v2p-color-border-darker); } .v2p-reply-upload-bar-disabled { pointer-events: none; } .v2p-footer { position: relative; display: flex; align-items: center; justify-content: space-between; padding: 35px 10px 20px; font-size: 12px; color: var(--v2p-color-font-tertiary); border-top: 1px solid var(--v2p-color-divider); } .v2p-footer a:hover { text-decoration: none; } .v2p-footer-logo { --logo-size: 16px; position: absolute; top: calc(-1 * (var(--logo-size) + 5px) / 2); left: 50%; transform: translateX(-50%); display: inline-flex; box-sizing: border-box; padding: 3px 25px; background-color: var(--v2p-color-bg-footer); } .v2p-footer-logo svg { width: var(--logo-size); } .v2p-footer-text { display: inline-flex; align-items: center; justify-content: flex-start; width: 240px; color: var(--v2p-color-font-secondary); } .v2p-footer-links { display: inline-flex; gap: 0 8px; align-items: center; } .v2p-footer-link { padding: 4px 5px; color: currentColor; } .v2p-footer-brand { display: inline-flex; gap: 0 15px; align-items: center; justify-content: flex-end; width: 240px; } .v2p-footer-brand .v2p-github-ref { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; padding: 2px 0; } .v2p-color-mode-toggle { width: 22px; height: 22px; opacity: 0.8; } .v2p-color-mode-toggle:hover { opacity: 1; } .v2p-reply-tabs { display: flex; gap: 0 6px; align-items: center; font-size: 14px; } .v2p-reply-tabs .v2p-reply-tab { cursor: pointer; padding: 2px 3px; } .v2p-reply-tabs .v2p-reply-tab.active { text-decoration: underline; text-decoration-color: var(--v2p-color-font-tertiary); text-decoration-thickness: 2px; text-underline-offset: 4px; } .v2p-select-dropdown { padding: 5px; font-size: 12px; border-radius: 5px; } .v2p-select-item { cursor: pointer; padding: 5px 10px; white-space: nowrap; border-radius: 4px; } .v2p-select-item:hover { background-color: var(--v2p-color-button-background-hover); } .v2p-select-item.v2p-select-item-active { background-color: var(--v2p-color-accent-50); } .v2p-preview-retry, .v2p-topic-preview-retry, a.v2p-preview-retry, a.v2p-topic-preview-retry, a:link.v2p-preview-retry, a:link.v2p-topic-preview-retry { text-decoration: underline 1px; text-underline-offset: var(--v2p-underline-offset); cursor: pointer; } .v2p-indent .v2p-member-ref { display: none; } .v2p-member-ref + br { display: none; } .v2p-member-ref + br + b { display: none; } .v2p-member-ref.v2p-member-ref-show { display: inline; } .v2p-layout-toggle { display: inline-block; width: 18px; height: 18px; padding: 4px 2px; color: var(--v2p-color-font-tertiary); } .v2p-content-layout.v2p-content-layout { max-width: 2000px; } .v2p-content-layout.v2p-content-layout .v2p-horizontal-layout { display: flex; flex-wrap: wrap; gap: var(--v2p-layout-column-gap); } .v2p-left-side { flex: 1; } .v2p-left-side > .box { position: sticky; top: var(--v2p-layout-row-gap); display: flex; flex-direction: column; max-height: calc(100vh - 2 * var(--v2p-layout-row-gap)); } .v2p-left-side > .box > .header { flex-shrink: 0; } .v2p-left-side .v2p-left-side-content { overflow: auto; flex: 1; border-bottom: 1px solid var(--box-border-color); } .v2p-right-side { flex: 1; } .v2p-register-days { display: inline-flex; align-items: center; margin-left: 2px; padding: 0 2px; color: var(--v2p-color-orange-400); background-color: var(--v2p-color-orange-100); border-radius: 2px; } .v2p-register-days.v2p-register-days-large { display: inline-flex; margin-left: 10px; padding: 2px 5px; font-size: 16px; line-height: 1.4; border-radius: 4px; } .v2p-topics-hot-loading { display: flex; align-items: center; justify-content: center; padding: 50px 0; color: currentColor; } .v2p-topics-hot-loading .v2p-icon-loading { width: 40px; } .v2p-topics-hot-header { display: flex; align-items: center; } .v2p-topics-hot-picker { cursor: pointer; display: inline-flex; gap: 4px; align-items: center; margin-left: auto; padding: 1px 6px; font-size: 13px; background-color: var(--v2p-color-button-background); border-radius: 4px; } .v2p-topics-hot-picker:hover { background-color: var(--v2p-color-button-background-hover); } .v2p-topics-hot-icon { position: relative; top: -2px; width: 1em; height: 1em; } .v2p-tag-block { margin-bottom: 10px; } @supports (filter: blur(6px)) { .v2p-hide-account { opacity: 0.5; filter: blur(6px); } } @supports not (filter: blur(6px)) { .v2p-hide-account { opacity: 0; } } @supports (filter: blur(6px)) { .v2p-hide-balance { opacity: 0.5; filter: blur(6px); } .v2p-hide-balance:hover { opacity: 1; filter: none; } } @supports not (filter: blur(6px)) { .v2p-hide-balance { opacity: 0; } .v2p-hide-balance:hover { opacity: 1; } } .v2p-member-name { display: flex; align-items: center; } .v2p-settings-header.page-content-header { gap: 10px; } .v2p-settings-header.page-content-header .v2p-settings-icon { width: 40px; height: 40px; margin: 0; } .v2p-settings-header.page-content-header .v2p-settings-title { padding: 0; white-space: nowrap; } .v2p-settings-header.page-content-header .v2p-settings-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; } .v2p-link-preview-btn { cursor: pointer; user-select: none; display: inline-flex; height: 100%; margin-left: 5px; padding: 0 5px; font-size: 12px; color: var(--v2p-color-bg-content); background-color: var(--v2p-color-accent-500); border-radius: 3px; } .v2p-link-preview-btn:hover { background-color: var(--v2p-color-accent-600); } #site-header #site-header-menu #menu-entry { border-radius:999px; } #node_sidebar.v2p-node-sidebar-flamewar { background-color: var(--v2p-color-orange-50); border: var(--v2p-color-orange-50); border-radius: var(--v2p-box-radius); } .v2p-mobile .content { padding: 0 !important; } .v2p-mobile #site-header #site-header-menu #menu-body { border-radius:18px !important; box-shadow: 0 8px 20px rgba(0, 0, 0, 0.18); border: var(--v2p-color-orange-50); } .v2p-mobile .v2p-likes-box { vertical-align: middle !important; top:0; } .v2p-mobile a.dark { font-weight:bold; font-size:12px; } .v2p-mobile #site-header #site-header-menu #menu-body a { font-size:14px !important; } .v2p-mobile #Tabs a { font-size:13px !important; border-radius:999px; margin:2px; } .v2p-mobile #search-container { border-radius:18px !important; } .v2p-mobile .box .header > h1 { font-size: 16px !important; } .v2p-mobile .box .header { font-size: 12px !important; } .v2p-mobile a.op, .v2p-mobile a.tag .v2p-mobile .no { border-radius:999px !important; padding:2px 6px; font-size:11px; } .v2p-mobile .mll { font-size: 16px; } .v2p-mobile .mll::placeholder { font-size: 16px !important; } .v2p-mobile form table td:first-child { width: 100px !important; } /* 只把“内容那一格”变成 flex,不影响右边计数 */ .v2p-mobile .cell.item td:nth-child(3) { display: flex; flex-wrap: wrap; align-items: center; } /* 去掉两块空白行 */ .v2p-mobile .cell.item td:nth-child(3) > .sep5 { display: none; } /* 主题标题:排第一行,占满整行 */ .v2p-mobile .cell.item td:nth-child(3) > .item_title { order: 1; width: 100%; display: block; padding:3px 0; } /* 第一行 small fade(节点 + 作者)→ 合并行左侧 */ .v2p-mobile .cell.item td:nth-child(3) > span.small.fade:first-of-type { order: 2; display: inline; margin-top:8px; } .v2p-mobile .cell.item td:nth-child(3) > span.small.fade:last-of-type { display: none !important; } /* 第二个 small fade(时间 + 最后回复)→ 合并行右侧 */ .v2p-mobile .cell.item td:nth-child(3) > span.small.fade:last-of-type { order: 3; display: inline; margin-left: .5em; } .v2p-mobile #site-header { background-color:transparent !important; border-bottom:none !important; height: 50px; padding:10px; margin:auto; max-width:1000px; } .v2p-mobile .box { border-radius: 0 !important; padding:5px 15px !important; margin: 0 0 10px 0; } .v2p-mobile .cell { padding:5px 8px !important; } .v2p-mobile .cell.item table tr > td:last-child { min-width: 30px !important; vertical-align: top !important; } .v2p-mobile .cell.item table tr > td[width="70"] { width:35px !important; } .v2p-mobile .item_title { font-size:15px; } .v2p-mobile .topic_content { font-size:15px; line-height:1.5; } .v2p-mobile #topic-tip-box { display:none; } #reply-box .cell { border:none; } .v2p-mobile #no-comments-yet { background-color:var(--v2p-color-bg-content); margin: 0 auto 10px auto; box-shadow: var(--v2p-box-shadow); border:none; color: var(--box-foreground-color); width:50%; align:center; } .v2p-mobile .avatar { width: 30px !important; max-height: 30px !important; border-radius: 50%; object-fit: cover; overflow: hidden; margin:0; } .v2p-mobile .cell .avatar { margin-top:5px; } .v2p-mobile a.node { font-size:11px !important; } .v2p-mobile .small a { font-weight:500; } .v2p-mobile .small { font-size:11px; } .v2p-mobile small.gray a { font-weight:bold; } .v2p-mobile .v2p-reply-wrap #reply_content { height:110px !important; } .v2p-mobile a.count_livid:active, .v2p-mobile a.count_livid:link, a.count_livid:visited { padding: 3px !important; font-size: 10px; font-weight: normal; border-radius: 999px !important; display: inline-flex; /* 支持自动居中 + 自适应 */ align-items: center; /* 垂直居中 */ justify-content: center; /* 水平居中 */ min-width: 10px; /* 最小宽度,确保初始为圆形 */ height: 10px; /* 高度固定,这很关键 */ padding: 0px; background-color: var(--button-background-color) !important; color: var(--button-foreground-color) !important; } /* ==== 移动端 Tabs 横向滚动设置 ==== */ .v2p-mobile #Main #Tabs, .v2p-mobile #Tabs { display: flex; flex-wrap: nowrap; /* 不换行,所有 tab 在一行 */ overflow-x: auto; /* 横向可滚动 */ overflow-y: hidden; -webkit-overflow-scrolling: touch; /* 惯性滚动 */ scrollbar-width: none; /* Firefox 隐藏滚动条 */ } /* WebKit 浏览器隐藏滚动条 */ .v2p-mobile #Main #Tabs::-webkit-scrollbar, .v2p-mobile #Tabs::-webkit-scrollbar { display: none; } /* 每个 Tab 固定为内容宽度,避免被压缩 */ .v2p-mobile #Tabs .tab, .v2p-mobile #Tabs .tab_current { flex: 0 0 auto; } .v2p-mobile .fr { display: inline-flex; align-items: center; gap: 2px; /* 按钮之间的横向间距,可按需调整 */ } /*处理详情页header内容排版 */ /* 1. 设置父容器为相对定位,作为定位基准 */ .v2p-mobile .header { position: relative; display: block; /* 确保是块级显示 */ } /* 2. 处理头像 (.fr) 将其从右上角移除,改为绝对定位到左侧“第二行”的位置 */ .v2p-mobile .header > .fr { float: none; /* 取消原有的向右浮动 */ position: absolute; /* 绝对定位 */ top: 36px; left: 8px; /* 靠左对齐,数值取决于 header 的 padding */ margin: 0; /* 清除可能存在的 margin */ } /* 3. 处理导航链接 (无需特殊 CSS,它们会自动回到第一行左侧) 因为头像变成了 absolute,导航链接自然占据了文档流的最开始位置 */ /* 4. 处理标题 (h1) 给左侧增加内边距,防止文字叠在头像上,形成“左图右文”效果 */ .v2p-mobile .header > h1 { margin: 15px 0 0 0; /* 在导航和标题之间增加间距 */ padding-left: 40px; /* 【核心】左侧留白 = 头像宽度(36px) + 间距 */ display: block; } /* 5. 处理底部元数据 (small) 同样左侧留白,并强制换行显示在标题下方 */ .v2p-mobile .header > small { display: block; /* 确保独占一行 */ padding-left: 40px; /* 对齐标题 */ margin-top: 5px; /* 微调间距 */ } /* 6. 隐藏原有的分割线 (可选,为了布局更紧凑) */ .v2p-mobile .header > .sep { display: none; } .v2p-mobile .cell > table > tbody > tr > td:first-child { width:30px !important; } .v2p-mobile #notifications .cell > table > tbody > tr > td:nth-child(2) { padding-left:10px !important; } .v2p-mobile .v2p-indent { background-color: var(--bg-reply); border-left: 2px solid var(--v2p-color-border-darker); border-top: 1px solid var(--v2p-color-border-darker); --bg-reply: var(--v2p-color-bg-reply); position: relative; z-index: var(--zidx-expand-btn); padding: var(--v2p-tp-nested-pd); border-radius: 10px; margin: 10px 0 0 5px; } /* 让 svg 图标统一垂直对齐 */ .v2p-mobile .fr svg { vertical-align: middle !important; } #LogoMobile { background-image: url("https://raw.githubusercontent.com/thinktip/V2ex-Polish-Plus/refs/heads/main/v2ex%402x.svg") !important; } /* 深色模式下反转 Logo 颜色 */ html.Night #site-header-logo #LogoMobile { filter: invert(1) brightness(1.2) contrast(1.1); } @media (min-width: 600px) { .v2p-mobile .box { border-radius: 18px !important; } } `; // 尽早注入 CSS if (typeof GM_addStyle !== "undefined") { GM_addStyle(style); } else { // 理论上油猴一定有 GM_addStyle,这里只是兜底 const el = document.createElement("style"); el.type = "text/css"; el.textContent = style; (document.head || document.documentElement).appendChild(el); } // ========= 2. 主题模式 & 类名处理 ========= // 依次:亮色 → 晨光 → 水色 → 暗色 → 跟随系统 const THEME_MODES = ["light", "dawn", "aqua", "dark", "auto"]; const STORAGE_KEY = "user_preferred_theme_mode"; const TOGGLE_SELECTOR = ".v2p-color-mode-toggle"; // 记录站点原生的 SITE_NIGHT(0: 浅色, 1: 深色) let nativeNight = null; // 检测当前页原生的深色 / 浅色状态: // 1) 优先用第一个 IIFE 写入的 window.__V2P_NATIVE_NIGHT__ // 2) 其次看 里是 tomorrow.css 还是 tomorrow-night.css // 3) 再不行就扫一遍