diff --git a/public/favicon.svg b/public/favicon.svg
new file mode 100644
index 0000000..3758ef0
--- /dev/null
+++ b/public/favicon.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/PostList.astro b/src/components/PostList.astro
index 65a2caf..f3e548d 100644
--- a/src/components/PostList.astro
+++ b/src/components/PostList.astro
@@ -81,7 +81,7 @@ const mmdd = (d: Date) =>
.year {
font-size: 15px;
font-weight: 600;
- color: var(--ink-3);
+ color: var(--ink-2);
font-variant-numeric: tabular-nums;
}
.shelf-link { float: right; font-size: 12.5px; color: var(--accent); font-weight: 400; }
@@ -137,7 +137,7 @@ const mmdd = (d: Date) =>
flex: none;
font-family: var(--font-mono);
font-size: 12px;
- color: var(--ink-3);
+ color: var(--ink-2);
background: var(--bg-soft);
border-radius: 5px;
padding: 1px 7px;
diff --git a/src/components/pages/BooksPage.astro b/src/components/pages/BooksPage.astro
index cd37c34..a4a2d53 100644
--- a/src/components/pages/BooksPage.astro
+++ b/src/components/pages/BooksPage.astro
@@ -25,7 +25,7 @@ const L = {
};
---
-
+
{L.shelf}{L.count(books.length)}
{years.map((year) => (
diff --git a/src/components/pages/GalleryPage.astro b/src/components/pages/GalleryPage.astro
index 5753968..1b2c673 100644
--- a/src/components/pages/GalleryPage.astro
+++ b/src/components/pages/GalleryPage.astro
@@ -82,7 +82,7 @@ const first = cards[0];
- {cards.map((card) => (
+ {cards.map((card, i) => (
diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro
index 4fb0b6f..5ef9af4 100644
--- a/src/layouts/BaseLayout.astro
+++ b/src/layouts/BaseLayout.astro
@@ -1,14 +1,14 @@
---
-// 基础布局:字体/样式统一在此持有(页面不再各自引包)
-// 明暗不闪烁:ThemeScript 必须在 内联先于首帧执行
-import '@fontsource/noto-serif-sc/400.css';
-import '@fontsource/noto-serif-sc/700.css';
-import 'lxgw-wenkai-screen-webfont/lxgwwenkaiscreen.css'; // 金句点缀用(--font-kai),按需加载
-import '@fontsource/noto-sans-sc/400.css';
-import '@fontsource/noto-sans-sc/500.css';
-import '@fontsource/noto-sans-sc/700.css';
-import '@fontsource/jetbrains-mono/400.css';
-import '@fontsource/jetbrains-mono/700.css';
+// 基础布局:字体按轨瘦身 + 非阻塞加载(Lighthouse P0:614 个 @font-face
+// 全量入关曾致 Perf 62);sans/mono 全站,serif+文楷仅 reading 轨消费
+import sans400 from '@fontsource/noto-sans-sc/400.css?url';
+import sans500 from '@fontsource/noto-sans-sc/500.css?url';
+import sans700 from '@fontsource/noto-sans-sc/700.css?url';
+import mono400 from '@fontsource/jetbrains-mono/400.css?url';
+import mono700 from '@fontsource/jetbrains-mono/700.css?url';
+import serif400 from '@fontsource/noto-serif-sc/400.css?url';
+import serif700 from '@fontsource/noto-serif-sc/700.css?url';
+import kai from 'lxgw-wenkai-screen-webfont/lxgwwenkaiscreen.css?url';
import '../styles/global.css';
import Header from '../components/Header.astro';
import Footer from '../components/Footer.astro';
@@ -39,6 +39,7 @@ const withSlash = (p: string) => (p.endsWith('/') ? p : `${p}/`);
+
@@ -46,6 +47,24 @@ const withSlash = (p: string) => (p.endsWith('/') ? p : `${p}/`);
{title}
+
+
+
+
+
+
+ {track === 'reading' && (
+ <>
+
+
+
+ >
+ )}
+