diff --git a/frontend/app/admin/AdminNav.tsx b/frontend/app/admin/AdminNav.tsx index 549c031..b27ee3e 100644 --- a/frontend/app/admin/AdminNav.tsx +++ b/frontend/app/admin/AdminNav.tsx @@ -159,7 +159,7 @@ export function AdminSidebar({ user }: { user: User }) { key={item.href} href={item.href} aria-current={active ? "page" : undefined} - className="flex items-center gap-2.5 px-3 py-2.5 rounded-xl text-[13.5px] transition-colors" + className="flex items-center gap-2.5 px-3 py-2.5 rounded-xl text-[13.5px] font-medium transition-colors" style={ active ? { background: "var(--nav-active-bg)", color: "var(--nav-active-ink)" } @@ -190,7 +190,7 @@ export function AdminSidebar({ user }: { user: User }) {
-

+

{user.nickname}

diff --git a/frontend/app/admin/users/UsersAdmin.tsx b/frontend/app/admin/users/UsersAdmin.tsx index dcdfec0..a561e4c 100644 --- a/frontend/app/admin/users/UsersAdmin.tsx +++ b/frontend/app/admin/users/UsersAdmin.tsx @@ -670,7 +670,7 @@ export default function UsersAdmin({

- + {u.nickname} {u.role !== ROLES.USER && ( diff --git a/frontend/app/globals.css b/frontend/app/globals.css index 08d6f41..192b3e1 100644 --- a/frontend/app/globals.css +++ b/frontend/app/globals.css @@ -109,8 +109,10 @@ body { background-color: var(--bg); color: var(--ink); font-family: var(--font-sans); - -webkit-font-smoothing: antialiased; + /* 亚像素渲染在 Windows 高分屏更实;强制 grayscale 会让 400/500 中文偏虚 */ + -webkit-font-smoothing: auto; text-rendering: optimizeLegibility; + font-synthesis: none; /* 禁止伪粗,避免缺档字重糊成一团 */ } /* 全站悬停即显提示气泡(配合 TipHost + data-tip,替代原生 title 延迟) */ @@ -282,7 +284,23 @@ body { padding: 14px 16px; border-radius: 14px; border: 1px solid var(--line); - background: color-mix(in srgb, var(--tint) 65%, var(--panel)); + background: var(--panel); +} +.j13-interact-card.is-unsolved { + background: color-mix(in srgb, var(--danger) 7%, var(--panel)); + border-color: color-mix(in srgb, var(--danger) 22%, var(--line)); +} +.j13-interact-card.is-solved { + background: color-mix(in srgb, var(--ok) 8%, var(--panel)); + border-color: color-mix(in srgb, var(--ok) 22%, var(--line)); +} +.dark .j13-interact-card.is-unsolved { + background: color-mix(in srgb, var(--danger) 14%, var(--panel)); + border-color: color-mix(in srgb, var(--danger) 32%, var(--line)); +} +.dark .j13-interact-card.is-solved { + background: color-mix(in srgb, var(--ok) 14%, var(--panel)); + border-color: color-mix(in srgb, var(--ok) 30%, var(--line)); } .j13-compose-field { @@ -924,7 +942,7 @@ a.j13-mention-token:hover { .field { width: 100%; padding: 12px 15px; - background: var(--bg); + background: var(--panel); border: 1px solid var(--line-2); border-radius: var(--r-sm); color: var(--ink); @@ -1374,6 +1392,7 @@ a.j13-mention-token:hover { .j13-bcard-name { color: var(--ink); font-size: 14px; + font-weight: 500; } .j13-bcard[aria-current="page"] .j13-bcard-name { color: var(--nav-active-ink); @@ -1407,26 +1426,26 @@ a.j13-mention-token:hover { display: flex; align-items: center; gap: 7px; - font-size: 13px; - font-weight: 500; + font-size: 13.5px; + font-weight: 600; letter-spacing: 0.02em; color: var(--ink); } - /* 统计数字格 */ + /* 统计数字格:白底细线,避免灰块 */ .j13-stat { display: flex; flex-direction: column; gap: 3px; min-width: 0; padding: 11px 13px; - background: var(--panel-2); + background: transparent; border: 1px solid var(--line); border-radius: var(--r-sm); } .j13-stat .j13-stat-num { font-size: 22px; - font-weight: 800; + font-weight: 500; line-height: 1.15; letter-spacing: -0.015em; color: var(--ink); @@ -1453,7 +1472,12 @@ a.j13-mention-token:hover { } .j13-pulse-cell { min-width: 0; - padding: 12px 14px 11px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + padding: 14px 12px; background: transparent; border: 0; border-radius: 0; @@ -1467,6 +1491,7 @@ a.j13-mention-token:hover { .j13-pulse-lab { display: flex; align-items: center; + justify-content: center; gap: 5px; font-size: 11.5px; font-weight: 400; @@ -1475,7 +1500,7 @@ a.j13-mention-token:hover { } .j13-pulse-num { margin-top: 6px; - font-size: 22px; + font-size: 18px; font-weight: 500; line-height: 1.05; letter-spacing: -0.015em; @@ -1485,6 +1510,7 @@ a.j13-mention-token:hover { .j13-pulse-foot { display: flex; align-items: center; + justify-content: center; gap: 3px; margin-top: 6px; font-size: 10.5px; diff --git a/frontend/app/layout.tsx b/frontend/app/layout.tsx index 9b27273..cdcf98a 100644 --- a/frontend/app/layout.tsx +++ b/frontend/app/layout.tsx @@ -24,7 +24,8 @@ const jakarta = Plus_Jakarta_Sans({ }); const notoSC = Noto_Sans_SC({ - weight: ["400", "500", "700", "900"], + // 须覆盖站内实际用到的字重:缺档时浏览器会伪粗(synthetic bold),中文在 2K 屏发虚发糊 + weight: ["400", "500", "600", "700", "800", "900"], variable: "--font-noto-sc", display: "swap", }); diff --git a/frontend/components/CommentSection.tsx b/frontend/components/CommentSection.tsx index 93029d1..c7eef72 100644 --- a/frontend/components/CommentSection.tsx +++ b/frontend/components/CommentSection.tsx @@ -486,8 +486,8 @@ export default function CommentSection({ ) : (
登录后参与讨论 diff --git a/frontend/components/Header.tsx b/frontend/components/Header.tsx index 4cc0905..08de8fe 100644 --- a/frontend/components/Header.tsx +++ b/frontend/components/Header.tsx @@ -20,6 +20,7 @@ import { ChevronDown, ShieldCheck, MessageSquare, + LayoutGrid, } from "lucide-react"; import { apiLogout, apiMe, apiChatUnreadSummary, type User } from "@/lib/api"; import { hasAuthCookieHint } from "@/lib/cookies"; @@ -233,14 +234,21 @@ export default function Header({ -
- {/* 中部留白:为后续主导航菜单项预留位置 */} + {/* 中部弹性留白,把搜索与操作区推到右侧 */}
{/* 右侧操作区:搜索靠右停靠 + 桌面/移动共用铃铛(仅挂载一次,避免重复轮询), @@ -370,6 +378,12 @@ export default function Header({
首页 + + 板块 + {user && 发帖} {user && ( @@ -431,11 +445,11 @@ function NavPill({ return ( {icon} @@ -456,7 +470,7 @@ function MobileLink({ return ( +
-

+

问答 · {state.solved ? "已解决" : "未解决"}

diff --git a/frontend/components/PostRow.tsx b/frontend/components/PostRow.tsx index 95db602..05d8852 100644 --- a/frontend/components/PostRow.tsx +++ b/frontend/components/PostRow.tsx @@ -40,8 +40,8 @@ export default function PostRow({ }`} style={{ borderColor: "var(--line)", - paddingTop: compact ? 11 : 18, - paddingBottom: compact ? 11 : 18, + paddingTop: compact ? 15 : 22, + paddingBottom: compact ? 15 : 22, animationDelay: `${Math.min(index, 9) * 35}ms`, }} > diff --git a/frontend/components/home/CommunityPanels.tsx b/frontend/components/home/CommunityPanels.tsx index 3d2b2ff..adc6b4f 100644 --- a/frontend/components/home/CommunityPanels.tsx +++ b/frontend/components/home/CommunityPanels.tsx @@ -154,7 +154,7 @@ function HotRanking({ posts }: { posts: PostListItem[] }) { {i + 1} {p.title} @@ -235,7 +235,7 @@ function ActiveUsers({ users }: { users: ActiveUser[] }) { {name}