@xingwangzhe/stalux 1.40.1 → 1.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +1 -1
- package/src/components/stalux/archives/archivesList.astro +1 -1
- package/src/components/stalux/categories/categoriesList.astro +1 -1
- package/src/components/stalux/layout/PageHeading.astro +1 -0
- package/src/components/stalux/links/linkList.astro +1 -1
- package/src/components/stalux/posts/ArticleSummary.astro +1 -0
- package/src/components/stalux/posts/postContent.astro +1 -0
- package/src/components/stalux/posts/postList.astro +1 -1
- package/src/components/stalux/tags/tagsCloud.astro +6 -2
- package/src/components/stalux/words/wordList.astro +1 -1
- package/src/internal/style-names.generated.ts +69 -66
- package/src/pages/404.astro +8 -3
- package/src/pages/index.astro +7 -5
- package/src/scripts/view-transitions.ts +22 -27
- package/src/styles/generated.css +1 -1
- package/src/styles/motion.css +151 -129
- package/src/utils/route-motion-policy.ts +10 -5
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ Standalone images written as `` receive a `figure` and
|
|
|
18
18
|
|
|
19
19
|
Code blocks default to the single `dark-plus` theme, with system color-scheme switching and theme selectors disabled. To opt into another theme or switching behavior, explicitly override `themes`, `useDarkModeMediaQuery`, and `themeCssSelector` through `expressiveCode`. This only changes generated code styles and adds no telemetry.
|
|
20
20
|
|
|
21
|
-
Route changes use native CSS View Transitions
|
|
21
|
+
Route changes use native CSS View Transitions with CSS animations on the reading and list content; sidebars, navigation, footer and background remain stationary. The policy covers every theme route category: previous/next articles slide horizontally in opposite directions, home and information pages use gentle perspective turns, words use a small rotation, and taxonomy details enter vertically. Desktop and mobile both retain spatial motion: article-to-article switching lasts 260ms, while other route animations take 100–180ms. History traversal uses a shorter, smaller directional slide while Astro restores the reading position. Reduced motion, browser-provided history gestures and same-page anchors add no visible VT animation. Standalone HTML keeps native navigation. See the [1.41.0 transition policy and performance boundaries](https://github.com/xingwangzhe/stalux/blob/v1.41.0/docs/view-transitions-1.41.0.md).
|
|
22
22
|
|
|
23
23
|
The sticky header stays at the top while the body grows with long content; the persisted header and footer stay in place during navigation. Text is immediately clear, and the incoming heading is measured once after Astro swaps the document and restores scrolling. Astro continues to own document/font preparation, history, scrolling and page-script lifecycle. Shared motion state settles when the native transition finishes or is canceled. CSS animation duration is reported separately from total navigation time, which includes networking, layout and browser settlement.
|
|
24
24
|
|
package/package.json
CHANGED
|
@@ -53,7 +53,7 @@ const archiveYears = [...archivesByYearMonth.entries()]
|
|
|
53
53
|
}));
|
|
54
54
|
---
|
|
55
55
|
|
|
56
|
-
<section class="stalux-archive-container">
|
|
56
|
+
<section class="stalux-archive-container" data-stalux-motion-content>
|
|
57
57
|
<div class="stalux-archive-page-header">
|
|
58
58
|
<div class="stalux-archive-timeline-container">
|
|
59
59
|
{archiveYears.length > 0 ? (
|
|
@@ -7,7 +7,7 @@ import { getCategoryCountList } from "@utils/collections-stats";
|
|
|
7
7
|
const categoryList = await getCategoryCountList(Astro.logger);
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
<ul class="stalux-categories">
|
|
10
|
+
<ul class="stalux-categories" data-stalux-motion-content>
|
|
11
11
|
{categoryList.map((category) => (
|
|
12
12
|
<li>
|
|
13
13
|
<CategoriesCard category={category} />
|
|
@@ -10,7 +10,7 @@ const linksConfig = getLinksData(configEntries);
|
|
|
10
10
|
const links = linksConfig?.sites ?? [];
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
<ul class="stalux-links">
|
|
13
|
+
<ul class="stalux-links" data-stalux-motion-content>
|
|
14
14
|
{links.map((link) => (
|
|
15
15
|
<li class="stalux-link-list-item">
|
|
16
16
|
<LinkCard link={link} />
|
|
@@ -127,6 +127,7 @@ const mdSourceUrl = exportMd ? `${Astro.url.pathname.replace(/\/$/, "")}.md` : "
|
|
|
127
127
|
<!-- Article Body -->
|
|
128
128
|
<section
|
|
129
129
|
class="stalux-post-body stalux-prose"
|
|
130
|
+
data-stalux-motion-content
|
|
130
131
|
data-pagefind-body
|
|
131
132
|
data-stalux-post-id={props.postId === undefined ? undefined : String(props.postId)}
|
|
132
133
|
data-pagefind-filter={props.postId === undefined ? undefined : "post[data-stalux-post-id]"}
|
|
@@ -11,7 +11,7 @@ const props = Astro.props as Props;
|
|
|
11
11
|
const posts = props.posts ?? (await getCollection("posts", ({ data }) => !data.draft));
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
-
<div data-stalux="postlist" class="stalux-post-list-container">
|
|
14
|
+
<div data-stalux="postlist" class="stalux-post-list-container" data-stalux-motion-content>
|
|
15
15
|
<ul class="post-list">
|
|
16
16
|
{posts.map((post, index) => (
|
|
17
17
|
<li>
|
|
@@ -22,7 +22,7 @@ const tagLinks = tagList.map((t) => ({
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
24
|
<!-- 移动端:SSR 卡片 -->
|
|
25
|
-
<div class="stalux-cloud-cards" id="tags-cards">
|
|
25
|
+
<div class="stalux-cloud-cards" id="tags-cards" data-stalux-motion-content>
|
|
26
26
|
{tagList.length > 0 ? (
|
|
27
27
|
tagGroups.map((group) => (
|
|
28
28
|
<div class="stalux-cloud-tag-group">
|
|
@@ -47,7 +47,11 @@ const tagLinks = tagList.map((t) => ({
|
|
|
47
47
|
</div>
|
|
48
48
|
|
|
49
49
|
<!-- 桌面端:Canvas 标签云 -->
|
|
50
|
-
<div
|
|
50
|
+
<div
|
|
51
|
+
class="stalux-cloud-canvas-frame"
|
|
52
|
+
style={{ "--cloud-density": cloudDensity }}
|
|
53
|
+
data-stalux-motion-content
|
|
54
|
+
>
|
|
51
55
|
<div class="stalux-cloud-canvas" id="tags-canvas" data-tags={JSON.stringify(tagLinks)}></div>
|
|
52
56
|
</div>
|
|
53
57
|
|
|
@@ -290,77 +290,80 @@ export const styleNames: { classes: Record<string, string>; variables: Record<st
|
|
|
290
290
|
"--stalux-site-header-height": "--s1q",
|
|
291
291
|
"--stalux-site-header-min-height": "--s1r",
|
|
292
292
|
"--stalux-text-shadow": "--s1s",
|
|
293
|
-
"--
|
|
294
|
-
"--
|
|
295
|
-
"--
|
|
296
|
-
"--
|
|
297
|
-
"--
|
|
298
|
-
"--
|
|
299
|
-
"--
|
|
300
|
-
"--
|
|
301
|
-
"--
|
|
302
|
-
"--
|
|
303
|
-
"--
|
|
304
|
-
"--
|
|
305
|
-
"--
|
|
306
|
-
"--
|
|
307
|
-
"--
|
|
308
|
-
"--
|
|
309
|
-
"--
|
|
310
|
-
"--
|
|
311
|
-
"--
|
|
312
|
-
"--
|
|
313
|
-
"--
|
|
314
|
-
"--un-
|
|
315
|
-
"--un-
|
|
316
|
-
"--un-
|
|
317
|
-
"--
|
|
318
|
-
"--
|
|
319
|
-
"--
|
|
320
|
-
"--
|
|
321
|
-
"--
|
|
322
|
-
"--
|
|
323
|
-
"--
|
|
324
|
-
"--
|
|
325
|
-
"--
|
|
326
|
-
"--
|
|
327
|
-
"--
|
|
328
|
-
"--white-
|
|
329
|
-
"--white-
|
|
330
|
-
"--white-
|
|
331
|
-
"--white-
|
|
332
|
-
"--white-
|
|
333
|
-
"--white-
|
|
293
|
+
"--stalux-vt-distance": "--s1t",
|
|
294
|
+
"--stalux-vt-duration": "--s1u",
|
|
295
|
+
"--stalux-vt-rx": "--s1v",
|
|
296
|
+
"--stalux-vt-ry": "--s1w",
|
|
297
|
+
"--stalux-vt-rz": "--s1x",
|
|
298
|
+
"--stalux-vt-scale": "--s1y",
|
|
299
|
+
"--stalux-vt-tilt": "--s1z",
|
|
300
|
+
"--stalux-vt-x": "--s20",
|
|
301
|
+
"--stalux-vt-y": "--s21",
|
|
302
|
+
"--surface-glass": "--s22",
|
|
303
|
+
"--surface-glass-shadow": "--s23",
|
|
304
|
+
"--tag-bg": "--s24",
|
|
305
|
+
"--tag-bg-hover": "--s25",
|
|
306
|
+
"--tl-line": "--s26",
|
|
307
|
+
"--tl-pad": "--s27",
|
|
308
|
+
"--transition-fast": "--s28",
|
|
309
|
+
"--transition-medium": "--s29",
|
|
310
|
+
"--transition-normal": "--s2a",
|
|
311
|
+
"--transition-slow": "--s2b",
|
|
312
|
+
"--transition-slower": "--s2c",
|
|
313
|
+
"--transition-slowest": "--s2d",
|
|
314
|
+
"--un-rotate": "--s2e",
|
|
315
|
+
"--un-rotate-x": "--s2f",
|
|
316
|
+
"--un-rotate-y": "--s2g",
|
|
317
|
+
"--un-rotate-z": "--s2h",
|
|
318
|
+
"--un-scale-x": "--s2i",
|
|
319
|
+
"--un-scale-y": "--s2j",
|
|
320
|
+
"--un-scale-z": "--s2k",
|
|
321
|
+
"--un-skew-x": "--s2l",
|
|
322
|
+
"--un-skew-y": "--s2m",
|
|
323
|
+
"--un-translate-x": "--s2n",
|
|
324
|
+
"--un-translate-y": "--s2o",
|
|
325
|
+
"--un-translate-z": "--s2p",
|
|
326
|
+
"--updated-bg": "--s2q",
|
|
327
|
+
"--updated-border": "--s2r",
|
|
328
|
+
"--white-05p": "--s2s",
|
|
329
|
+
"--white-10p": "--s2t",
|
|
330
|
+
"--white-15p": "--s2u",
|
|
331
|
+
"--white-20p": "--s2v",
|
|
332
|
+
"--white-30p": "--s2w",
|
|
333
|
+
"--white-50p": "--s2x",
|
|
334
|
+
"--white-60p": "--s2y",
|
|
335
|
+
"--white-70p": "--s2z",
|
|
336
|
+
"--white-75p": "--s30",
|
|
337
|
+
"--white-78p": "--s31",
|
|
338
|
+
"--white-80p": "--s32",
|
|
339
|
+
"--white-85p": "--s33",
|
|
340
|
+
"--white-90p": "--s34",
|
|
341
|
+
"--white-95p": "--s35",
|
|
342
|
+
"--white-full": "--s36"
|
|
334
343
|
},
|
|
335
344
|
"animations": {
|
|
336
345
|
"fadeInUpComment": "k0",
|
|
337
346
|
"spin": "k1",
|
|
338
347
|
"stalux-article-enter": "k2",
|
|
339
348
|
"stalux-article-enter-back": "k3",
|
|
340
|
-
"stalux-
|
|
341
|
-
"stalux-
|
|
342
|
-
"stalux-
|
|
343
|
-
"stalux-
|
|
344
|
-
"stalux-
|
|
345
|
-
"stalux-
|
|
346
|
-
"stalux-
|
|
347
|
-
"stalux-
|
|
348
|
-
"stalux-
|
|
349
|
-
"stalux-
|
|
350
|
-
"stalux-
|
|
351
|
-
"stalux-
|
|
352
|
-
"stalux-
|
|
353
|
-
"stalux-sidebar-
|
|
354
|
-
"stalux-sidebar-
|
|
355
|
-
"stalux-
|
|
356
|
-
"stalux-
|
|
357
|
-
"stalux-
|
|
358
|
-
"stalux-
|
|
359
|
-
"stalux-sidebar-right-in": "kn",
|
|
360
|
-
"stalux-sidebar-right-out": "ko",
|
|
361
|
-
"stalux-social-stalux-social-arrive": "kp",
|
|
362
|
-
"stalux-taxonomy-enter": "kq",
|
|
363
|
-
"stalux-taxonomy-enter-back": "kr",
|
|
364
|
-
"stalux-word-word-glow": "ks"
|
|
349
|
+
"stalux-content-in": "k4",
|
|
350
|
+
"stalux-cursor-blink": "k5",
|
|
351
|
+
"stalux-link-avatar-spin": "k6",
|
|
352
|
+
"stalux-page-enter": "k7",
|
|
353
|
+
"stalux-page-enter-back": "k8",
|
|
354
|
+
"stalux-page-exit": "k9",
|
|
355
|
+
"stalux-random-spin": "ka",
|
|
356
|
+
"stalux-sidebar-left-back-in": "kb",
|
|
357
|
+
"stalux-sidebar-left-back-out": "kc",
|
|
358
|
+
"stalux-sidebar-left-in": "kd",
|
|
359
|
+
"stalux-sidebar-left-out": "ke",
|
|
360
|
+
"stalux-sidebar-right-back-in": "kf",
|
|
361
|
+
"stalux-sidebar-right-back-out": "kg",
|
|
362
|
+
"stalux-sidebar-right-in": "kh",
|
|
363
|
+
"stalux-sidebar-right-out": "ki",
|
|
364
|
+
"stalux-social-stalux-social-arrive": "kj",
|
|
365
|
+
"stalux-taxonomy-enter": "kk",
|
|
366
|
+
"stalux-taxonomy-enter-back": "kl",
|
|
367
|
+
"stalux-word-word-glow": "km"
|
|
365
368
|
}
|
|
366
369
|
};
|
package/src/pages/404.astro
CHANGED
|
@@ -19,8 +19,8 @@ const { t } = createTranslator(siteConfig.lang || "zh-CN");
|
|
|
19
19
|
>
|
|
20
20
|
<div class="stalux-404-error-content">
|
|
21
21
|
<h1 data-stalux-motion-focus>404</h1>
|
|
22
|
-
<p>{t("page404.pageNotFound")}</p>
|
|
23
|
-
<p class="agent-recovery">
|
|
22
|
+
<p data-stalux-motion-content>{t("page404.pageNotFound")}</p>
|
|
23
|
+
<p class="agent-recovery" data-stalux-motion-content>
|
|
24
24
|
This URL does not exist. Continue at the <a href="/">home page</a>, browse the
|
|
25
25
|
<a href="/archives/">archive</a>, read <a href="/llms.txt">llms.txt</a>, or inspect
|
|
26
26
|
the
|
|
@@ -29,12 +29,17 @@ const { t } = createTranslator(siteConfig.lang || "zh-CN");
|
|
|
29
29
|
</p>
|
|
30
30
|
<p
|
|
31
31
|
id="countdown"
|
|
32
|
+
data-stalux-motion-content
|
|
32
33
|
class="stalux-404-countdown-text"
|
|
33
34
|
data-countdown-template={t("page404.countdown", { n: "{n}" })}
|
|
34
35
|
>
|
|
35
36
|
{t("page404.countdown", { n: 5 })}
|
|
36
37
|
</p>
|
|
37
|
-
<a
|
|
38
|
+
<a
|
|
39
|
+
href="/"
|
|
40
|
+
class="stalux-404-home-btn home-btn"
|
|
41
|
+
data-astro-prefetch
|
|
42
|
+
data-stalux-motion-content
|
|
38
43
|
>{t("page404.backHome")}</a
|
|
39
44
|
>
|
|
40
45
|
</div>
|
package/src/pages/index.astro
CHANGED
|
@@ -49,10 +49,12 @@ import { getSiteData } from "@utils/config-utils";
|
|
|
49
49
|
mutate data.
|
|
50
50
|
</p>
|
|
51
51
|
</section>
|
|
52
|
-
<
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
52
|
+
<div data-stalux-home-content data-stalux-motion-content>
|
|
53
|
+
<Author />
|
|
54
|
+
<TextType />
|
|
55
|
+
<DateTime />
|
|
56
|
+
<SocialMedia />
|
|
57
|
+
<ToArchive />
|
|
58
|
+
</div>
|
|
57
59
|
</div>
|
|
58
60
|
</Stalux>
|
|
@@ -53,29 +53,7 @@ function clearNavigationState(): void {
|
|
|
53
53
|
delete html.dataset.staluxVtTo;
|
|
54
54
|
delete html.dataset.staluxVtDirection;
|
|
55
55
|
delete html.dataset.staluxVtPreset;
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
function clearFocusVisibility(): void {
|
|
60
|
-
document
|
|
61
|
-
.querySelector("[data-stalux-motion-focus]")
|
|
62
|
-
?.removeAttribute?.("data-stalux-motion-visible");
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/** At most one bounded title is considered, never an entire article or list. */
|
|
66
|
-
function updateFocusVisibility(): void {
|
|
67
|
-
const focus = document.querySelector<HTMLElement>("[data-stalux-motion-focus]");
|
|
68
|
-
if (!focus || typeof focus.getBoundingClientRect !== "function") return;
|
|
69
|
-
const rect = focus.getBoundingClientRect();
|
|
70
|
-
const visible =
|
|
71
|
-
rect.width > 0 &&
|
|
72
|
-
rect.height > 0 &&
|
|
73
|
-
rect.height <= window.innerHeight / 2 &&
|
|
74
|
-
rect.bottom > 0 &&
|
|
75
|
-
rect.top < window.innerHeight &&
|
|
76
|
-
rect.right > 0 &&
|
|
77
|
-
rect.left < window.innerWidth;
|
|
78
|
-
focus.dataset.staluxMotionVisible = String(visible);
|
|
56
|
+
delete html.dataset.staluxVtPhase;
|
|
79
57
|
}
|
|
80
58
|
|
|
81
59
|
function preserveHeaderMetrics(nextDocument: Document): void {
|
|
@@ -159,9 +137,9 @@ if (!transitionWindow.__STALUX_VT_LISTENER__) {
|
|
|
159
137
|
clearNavigationState();
|
|
160
138
|
};
|
|
161
139
|
motion?.cancel();
|
|
162
|
-
|
|
163
|
-
//
|
|
164
|
-
|
|
140
|
+
clearNavigationState();
|
|
141
|
+
// CSS moves only explicitly marked content, never the root or sidebars.
|
|
142
|
+
// Long article geometry does not need to be measured or captured.
|
|
165
143
|
preset = getRouteMotionPreset({
|
|
166
144
|
from: new URL(navigation.from, window.location.href),
|
|
167
145
|
to: new URL(navigation.to, window.location.href),
|
|
@@ -206,11 +184,29 @@ if (!transitionWindow.__STALUX_VT_LISTENER__) {
|
|
|
206
184
|
// new document; CSS keyframes read these data-* attributes to pick their
|
|
207
185
|
// own direction rather than letting Astro's default `fade` pair apply.
|
|
208
186
|
setNavigationState(navigation, preset, navigation.newDocument.documentElement);
|
|
187
|
+
if (preset !== "none") {
|
|
188
|
+
navigation.newDocument.documentElement.dataset.staluxVtPhase = "prepared";
|
|
189
|
+
}
|
|
209
190
|
// This release uses CSS/native VT only. Settle the existing installation
|
|
210
191
|
// gate without starting a second WAAPI effect; analytics/background keep
|
|
211
192
|
// the same shared ready/finished semantics and their existing listeners.
|
|
212
193
|
motion = prepareRouteMotion(navigation);
|
|
213
194
|
motion.start(null, { skip: true });
|
|
195
|
+
// Preparing the incoming content paused prevents a one-frame flash at
|
|
196
|
+
// its final position. Release it with the heading's native animation;
|
|
197
|
+
// page scripts and Astro's scroll restoration keep their normal order.
|
|
198
|
+
void Promise.resolve(navigation.viewTransition?.ready).then(
|
|
199
|
+
() => {
|
|
200
|
+
if (
|
|
201
|
+
current === generation &&
|
|
202
|
+
!navigation.signal.aborted &&
|
|
203
|
+
document.documentElement.dataset.staluxVtPhase === "prepared"
|
|
204
|
+
) {
|
|
205
|
+
document.documentElement.dataset.staluxVtPhase = "running";
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
() => {},
|
|
209
|
+
);
|
|
214
210
|
const finish = () => {
|
|
215
211
|
if (current === generation) clearNavigationState();
|
|
216
212
|
};
|
|
@@ -222,7 +218,6 @@ if (!transitionWindow.__STALUX_VT_LISTENER__) {
|
|
|
222
218
|
|
|
223
219
|
document.addEventListener("astro:after-swap", () => {
|
|
224
220
|
setRouteState(window.location.pathname);
|
|
225
|
-
if (preset !== "none") updateFocusVisibility();
|
|
226
221
|
});
|
|
227
222
|
|
|
228
223
|
document.addEventListener("astro:page-load", () => {
|
package/src/styles/generated.css
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
@layer theme, base, components, utilities;
|
|
2
|
-
@layer components{.stalux-404-home-btn{background:var(--black-20p);border:var(--border-thin) solid var(--white-20p);transition:background-color var(--transition-normal), transform var(--transition-normal), box-shadow var(--transition-normal);border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);color:var(--white-90p);font-size:var(--font-size-base);text-decoration:none;display:inline-block}.stalux-ai-prompt{clip-path:inset(50%);white-space:pre-wrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.stalux-badge-group{border:none}.stalux-badge-group-arrow{font-size:.65rem;transition:transform .2s;display:inline-block}.stalux-badge-group-summary{user-select:none;cursor:pointer;color:var(--white-70p);gap:.4rem;padding:.2rem 0;font-size:.85rem;list-style-type:none;transition:color .2s}.stalux-beian-public-security-beian{color:#ffffffb3;gap:5px;font-size:.9rem;text-decoration:none;transition:color .3s;display:inline-flex}.stalux-card-post-categories,.stalux-card-post-tags{gap:.4rem}.stalux-card-post-category{background:var(--category-bg);color:#fff;border-radius:6px;padding:.18rem .5rem;font-size:.84rem;line-height:1;display:inline-block}.stalux-card-post-description{overflow-wrap:anywhere;color:var(--white-70p);line-height:1.6}.stalux-card-post-meta{gap:.6rem}.stalux-card-post-tag{background:var(--tag-bg);color:#fff;border-radius:9999px;padding:.22rem .7rem;font-size:.85rem;line-height:1;display:inline-block}.stalux-card-post-title{overflow-wrap:anywhere;margin:0;line-height:1.35}.stalux-card-read-more{align-self:flex-start;margin-top:.6rem}.stalux-card-time{gap:.45rem;display:inline-flex}.stalux-copyright{color:var(--white-70p);gap:.3em;font-weight:500}.stalux-footer{backdrop-filter:blur(10px);color:var(--white-full);background-color:#0000001a;margin-top:auto;padding:1.5rem 0;font-size:.9rem}.stalux-footer-content{gap:.8rem;max-width:1200px;margin:0 auto;padding:0 1rem}.stalux-nav-list{transform:scale(var(--nav-scale,1));transform-origin:50%;box-sizing:border-box;gap:2rem;max-width:100%;transition:transform .22s cubic-bezier(.22,.72,.22,1);overflow:visible}.stalux-nav-overlay{pointer-events:none;z-index:999;opacity:0;background:#0009;height:100%;transition:opacity .3s;display:none;position:fixed;top:0;left:0}.stalux-nav-scroll-btn{background:var(--black-30p);backdrop-filter:blur(8px);box-shadow:var(--shadow-md);pointer-events:none;z-index:10;cursor:pointer;width:36px;height:36px;color:var(--white-full);opacity:0;border:none;border-radius:9999px;padding:0;transition:opacity .25s;display:none;position:absolute;top:50%;transform:translateY(-50%)}.stalux-nav-toggle{z-index:998;cursor:pointer;min-width:48px;min-height:48px;color:inherit;background:0 0;border:none;padding:.75rem;display:none}.stalux-post-card{box-sizing:border-box;cursor:pointer;gap:var(--space-lg);border-radius:var(--radius-lg);background-color:var(--card-bg);height:100%;padding:var(--space-lg);box-shadow:var(--card-box-shadow);transition:transform .22s cubic-bezier(.22,.72,.22,1)}.stalux-stats-site-build-time{color:#fffc;margin-top:.5rem;font-size:.9rem}.stalux-stats-stats-separator{color:#ffffff80}.stalux-theme-info{color:var(--white-70p);gap:.3em;font-size:.85rem}.stalux-home-body{min-height:calc(100vh - var(--stalux-site-header-height));padding-bottom:var(--space-3xl);position:relative}.stalux-nav-container{box-sizing:border-box;max-width:100%;position:relative;overflow:hidden}.stalux-author{margin-top:4em}.stalux-card-post-cover{border-radius:var(--radius-md);flex-shrink:0;height:180px;margin-bottom:.5rem;overflow:hidden}.stalux-home-title{color:var(--white-full);text-shadow:var(--stalux-text-shadow);margin-top:1.5em;font-size:4em}.stalux-nav-item{text-shadow:var(--stalux-text-shadow);flex-shrink:0;margin-left:1em;margin-right:1em;font-size:1.3em}.stalux-page-description{color:var(--white-60p);margin-bottom:1.5em;font-size:1.2em}.stalux-page-title{text-shadow:var(--stalux-text-shadow);margin-top:1.5em;font-size:2.5em}.stalux-typewriter{min-height:2em;text-shadow:var(--stalux-text-shadow);margin-top:1.5em;font-size:2.5em}.stalux-404-error-container{min-height:60vh;padding:2rem}.stalux-badge,.stalux-badges-wrapper .stalux-badge{width:auto}.stalux-u-min-w-0{min-width:0}.stalux-u-w-full{width:100%}.stalux-u-flex{display:flex}.stalux-u-flex-col{flex-direction:column}.stalux-u-flex-wrap{flex-wrap:wrap}.stalux-u-items-center{align-items:center}.stalux-u-justify-center{justify-content:center}.stalux-badges,.stalux-badges-wrapper{gap:.5rem}.stalux-beian-beian-info{gap:1rem}.stalux-stats-site-stats{gap:.5rem;font-size:.9rem}.stalux-nav-text{white-space:nowrap;color:var(--white-full)}.stalux-badge-group-items{padding-top:.35rem}.stalux-u-text-center{text-align:center}.stalux-badge-group-hint{color:var(--white-70p);font-size:.7rem}.stalux-badge-group-title{color:var(--white-80p)}#stalux-home-show-post-list{cursor:pointer;text-shadow:var(--stalux-text-shadow);margin-top:3em;font-size:1.5em}.stalux-post-list-container{width:100%;height:auto;margin:5px 0}.stalux-post-list-container ul{flex-wrap:wrap;gap:2rem;margin:3em;padding:0;list-style-type:none;display:flex}.stalux-post-list-container ul>li{flex:min(22rem,100%);min-width:0;margin:0}.stalux-card-post-title a{color:inherit;text-decoration:none}.stalux-post-card>a:first-child{width:100%;min-width:0;display:block}.stalux-card-post-cover img{object-fit:cover;width:100%;max-width:100%;height:100%;transition:transform var(--transition-fast)}.stalux-card-post-date,.stalux-card-post-updated{color:#e8f2ff;border-radius:10px;align-items:center;gap:.35rem;width:fit-content;padding:.28rem .6rem;font-size:.9rem;line-height:1.1;display:inline-flex}.stalux-card-post-date{background:var(--date-bg);border:1px solid var(--date-border);color:#e8f2ff}.stalux-card-post-updated{background:var(--updated-bg);border:1px solid var(--updated-border);color:#fff7de}.stalux-card-post-tags a,.stalux-card-post-categories a{text-decoration:none}.stalux-card-post-tags a:focus-visible .stalux-card-post-tag{background:var(--tag-bg-hover)}.stalux-card-post-categories a:focus-visible .stalux-card-post-category{background:var(--category-bg-hover)}.stalux-social{margin-top:3em}.stalux-social ul{flex-wrap:wrap;justify-content:center;gap:1em;margin:0;padding:0;display:flex}.stalux-social ul li{box-sizing:border-box;text-align:center;background-color:var(--white-15p);border-radius:9999px;justify-content:center;align-items:center;width:2.5em;height:2.5em;font-size:large;display:inline-flex;overflow:hidden}.stalux-social ul a,.stalux-social ul .stalux-social-icon-container,.stalux-social ul .stalux-social-custom-icon{justify-content:center;align-items:center;width:100%;height:100%;line-height:1;display:inline-flex}.stalux-social[data-stalux-social-animate=true] li{animation:.28s cubic-bezier(.2,.8,.2,1) both stalux-social-stalux-social-arrive}.stalux-social[data-stalux-social-animate=true] li:nth-child(2){animation-delay:30ms}.stalux-social[data-stalux-social-animate=true] li:nth-child(3){animation-delay:60ms}.stalux-social[data-stalux-social-animate=true] li:nth-child(4){animation-delay:90ms}.stalux-social[data-stalux-social-animate=true] li:nth-child(5){animation-delay:.12s}.stalux-social[data-stalux-social-animate=true] li:nth-child(6){animation-delay:.15s}.stalux-social[data-stalux-social-animate=true] li:nth-child(n+7){animation-delay:.18s}nav{width:100%;min-width:0;max-width:100%}html{scroll-padding-top:var(--stalux-nav-offset,var(--stalux-site-header-height))}.stalux-site-header{z-index:990;width:100%;min-height:var(--stalux-site-header-min-height);isolation:isolate;justify-content:center;align-items:center;display:flex;position:sticky;top:0}.stalux-nav-scroll-btn[data-visible]{pointer-events:auto;opacity:1}.stalux-nav-scroll-btn[data-side=left]{left:4px}.stalux-nav-scroll-btn[data-side=right]{right:4px}.stalux-nav-scroll-btn svg{stroke:currentColor;stroke-width:2px;fill:none;width:20px;height:20px}.stalux-nav-link,.stalux-nav-link:visited{cursor:pointer;width:100%;color:inherit;min-height:44px;font:inherit;background:0 0;border:none;align-items:center;gap:.5rem;padding:.5rem .75rem;text-decoration:none;display:flex}.stalux-nav-link .nav-icon{stroke:var(--white-full)}.stalux-nav-toggle svg{width:32px;height:32px}.stalux-nav-overlay[data-state=show]{pointer-events:auto;opacity:1;display:block}#stalux-to-archive-archs{margin-top:2em}#stalux-date-date-time{text-shadow:var(--stalux-text-shadow);color:var(--white-full);flex-direction:column;align-items:center;margin-top:2em;display:flex}#stalux-date-date-time #stalux-date-date{min-height:1.25em;margin-bottom:.5em;font-size:2em;line-height:1.25}#stalux-date-date-time #stalux-date-time{font-variant-numeric:tabular-nums;min-height:1.25em;font-size:3em;line-height:1.25}.stalux-author-figure{justify-content:center;align-items:center;display:flex}.stalux-author-figure img{box-shadow:0 0 10px var(--stalux-accent-color);border-radius:9999px;transition:transform .65s ease-in-out}.stalux-author-figure figcaption{text-shadow:var(--stalux-text-shadow);color:var(--white-full);margin-left:1em;font-size:2.5em;font-weight:700}.stalux-author-figure-column figcaption{text-align:center;margin-top:.5em;margin-left:0}.agent-home-summary{clip-path:inset(50%);white-space:normal;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.stalux-404-error-content h1{color:var(--white-90p);margin:0;font-size:6rem;font-weight:700}.stalux-404-error-content p{color:var(--white-70p);margin:1rem 0 2rem;font-size:1.5rem}.stalux-404-countdown-text{color:var(--white-50p)!important;margin:-.5rem 0 1.5rem!important;font-size:.95rem!important}.agent-recovery{max-width:42rem;line-height:1.7;margin:0 auto 1.5rem!important;font-size:1rem!important}.agent-recovery a{color:inherit;text-decoration-line:underline}.stalux-theme-info span,.stalux-copyright span{margin:0}.stalux-theme-info a{color:#fffc;margin:0 .2em;text-decoration:none;transition:color .3s}.stalux-beian-beian-info a{color:#ffffffb3;font-size:.9rem;text-decoration:none;transition:color .3s}.stalux-beian-public-security-beian img{width:15px;height:15px;display:inline-block}.stalux-badge-group-summary::-webkit-details-marker,.stalux-badge-group[open] .stalux-badge-group-hint[data-hint=collapsed],.stalux-badge-group:not([open]) .stalux-badge-group-hint[data-hint=expanded]{display:none}.stalux-badge-group[open] .stalux-badge-group-arrow{transform:rotate(90deg)}@media (hover:hover) and (pointer:fine){.stalux-card-post-tags a:hover .stalux-card-post-tag{background:var(--tag-bg-hover)}.stalux-card-post-categories a:hover .stalux-card-post-category{background:var(--category-bg-hover)}.stalux-post-card-shell:hover .stalux-post-card .stalux-card-post-cover img{transform:scale(1.025)}.stalux-post-card-shell:hover .stalux-post-card{box-shadow:var(--card-box-shadow-hover)}.stalux-nav-scroll-btn:hover{background:0 0}.stalux-nav-container:hover .stalux-nav-scroll-btn[data-visible]{opacity:1}.stalux-nav-link:hover .nav-icon,.stalux-nav-link:hover .stalux-nav-text{stroke:var(--stalux-accent-color);color:var(--stalux-accent-color)}.stalux-author-figure>a:hover img{animation:.65s ease-in-out stalux-link-avatar-spin}.stalux-404-home-btn:hover{background:var(--accent-20p);box-shadow:0 4px 12px var(--shadow-dark)}.stalux-theme-info a:hover{color:#fff;text-decoration:none}.stalux-beian-beian-info a:hover,.stalux-beian-public-security-beian:hover{color:#ffffffe6;text-decoration:none}.stalux-badge-group-summary:hover{color:var(--white-70p)}}@media (width>=601px){.stalux-site-nav{isolation:isolate;border-radius:0 0 16px 16px;transition:background-color .18s,box-shadow .18s}.stalux-site-nav[data-scrolled]{backdrop-filter:blur(20px)saturate(140%);box-shadow:0 1px 0 var(--white-10p), 0 8px 24px #0000001f;background:#181818c7}}@media (width<=1100px){.stalux-nav-list{gap:1rem}.stalux-nav-item{margin-left:.6em;margin-right:.6em;font-size:1em}}@media (width<=900px){.stalux-nav-item{margin-left:.25em;margin-right:.25em;font-size:.95em}.stalux-nav-list{gap:.5rem}}@media (width<=768px){.stalux-home-body{box-sizing:border-box;width:100%;max-width:95vw;height:auto;padding:2rem .5rem 1.5rem}.stalux-home-title{word-break:break-all;margin-top:1em;font-size:2em}#stalux-home-show-post-list{margin-top:2em;font-size:1.1em}.stalux-post-list-container ul{margin:1rem}.stalux-footer{padding:1.2rem 0;font-size:.8rem}.stalux-footer-content{gap:.6rem;padding:0 .8rem}.stalux-author{box-sizing:border-box;width:100%;max-width:95vw;margin-top:2em;padding:1em .5em}.stalux-author-figure{gap:.5em;flex-direction:column!important}.stalux-author-figure img{max-width:20vw;max-height:20vw;width:64px!important;height:64px!important}.stalux-author-figure figcaption{text-align:center;word-break:break-all;overflow-wrap:break-word;white-space:normal;max-width:90vw;margin-top:.5em;margin-left:0;font-size:1.5em}.stalux-404-error-content h1{font-size:4rem}.stalux-404-error-content p{font-size:1.2rem}.stalux-badges{gap:.3rem}.stalux-badge{width:auto}}@media (width<=600px){html{--stalux-site-header-min-height:4rem}.stalux-nav-toggle[data-state=open]{visibility:hidden;pointer-events:none}.stalux-nav-toggle[data-scrolled]{backdrop-filter:blur(20px)saturate(140%);box-shadow:0 1px 0 var(--white-10p), 0 8px 24px #0000001f;background:#181818c7;border-radius:12px}.stalux-nav-toggle{display:block;position:fixed;top:.75rem;left:.75rem}.stalux-nav-container{overflow:visible}nav{width:auto}.stalux-nav-list{pointer-events:none;z-index:1000;background:var(--black-20p);backdrop-filter:blur(20px);flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:0;width:min(220px,100vw - 1rem);height:100vh;padding:.5rem 1rem 2rem;position:fixed;top:0;left:0;right:auto;overflow-y:auto;transform:translate(-100%)}.stalux-nav-list[data-state=open]{pointer-events:auto;transform:translate(0)}.stalux-nav-item{border-bottom:1px solid var(--white-10p);flex-shrink:0;width:100%;margin:0;font-size:.9em}.stalux-nav-text{display:inline}.stalux-nav-link{width:100%;min-height:44px;font-size:inherit;padding:.45rem .75rem}.stalux-nav-link .nav-icon{width:18px;height:18px}}@media (width<=480px){.stalux-footer{padding:1rem 0;font-size:.8rem}.stalux-footer-content{gap:.6rem;padding:0 .8rem}}@media (prefers-reduced-motion:reduce){.stalux-social[data-stalux-social-animate=true] li{animation:none}}.stalux-main,.stalux-post-page,.stalux-post-layout>*,.stalux-link-card-content,.stalux-word-list-item,.stalux-word-card{box-sizing:border-box;min-width:0;max-width:100%}.stalux-main{overflow-wrap:anywhere}.stalux-link-shell{min-width:0;max-width:100%;display:block}.stalux-link-card{box-sizing:border-box;width:100%;max-width:100%}.stalux-category-shell{width:100%;min-width:0}.stalux-author-figure>a{flex-shrink:0;display:inline-block}.stalux-author-figure img{display:block}.stalux-post-card-shell,.stalux-category-shell,.stalux-link-shell{position:relative}.stalux-post-card,.stalux-category-card,.stalux-link-card,.stalux-word-card{transition:transform .2s,background-color .2s,border-color .2s,box-shadow .2s}:is(.stalux-post-card-shell,.stalux-category-shell):focus-within>*,.stalux-link-shell:focus-visible>*{box-shadow:var(--card-box-shadow-hover)}:is(button,summary,[role=button]):focus-visible{outline:2px solid var(--stalux-accent-color);outline-offset:3px}@media (prefers-reduced-motion:reduce){.stalux-main *,.stalux-main :before,.stalux-main :after{transition-duration:0s!important;animation:none!important}.stalux-post-card,.stalux-category-card,.stalux-link-card,.stalux-link-card-content,.stalux-card-post-cover img,.stalux-category-icon,.stalux-author-figure img,.stalux-link-card-avatar img{transform:none!important}}@keyframes stalux-social-stalux-social-arrive{0%{opacity:0;transform:translateY(.75rem)rotate(-12deg)}to{opacity:1;transform:translateY(0)rotate(0)}}@keyframes stalux-random-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes stalux-link-avatar-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes stalux-word-word-glow{0%{box-shadow:0 0 30px var(--accent-50p), 0 0 80px var(--accent-30p), var(--shadow-lg);transform:scale(1.02)}to{box-shadow:0 0 20px var(--accent-40p), 0 0 60px var(--accent-20p), var(--shadow-lg);transform:scale(1)}}}@layer utilities{.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.visible{visibility:visible}.absolute{position:absolute}.static{position:static}.grid{display:grid}.block{display:block}.inline-block{display:inline-block}.hidden{display:none}.h-full{height:100%}.flex{display:flex}.flex-shrink{flex-shrink:1}.flex-wrap{flex-wrap:wrap}.transform{transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.b,.border{border-width:1px}.text-inherit{color:inherit}.no-underline{text-decoration:none}.outline{outline-style:solid}}@layer theme;@layer base{html,body{color:#fff;width:100%;height:100%;margin:0;& main{flex:1}scrollbar-color:#4a4a4a #2a2a2a;font-family:var(--font-body), "Noto Sans SC", "Noto Sans CJK SC", system-ui, -apple-system, sans-serif;text-rendering:optimizelegibility;line-height:1.25;display:block}body{height:auto;min-height:100%}html{scrollbar-gutter:stable;background-color:var(--stalux-bg-color,#202020)}html[data-clarity-id]{opacity:1!important}a{color:inherit;cursor:pointer;text-decoration-skip-ink:auto;background-color:#0000;text-decoration:none;transition:color .2s,text-shadow .2s;position:relative}.a-none{cursor:pointer;text-decoration-skip-ink:auto;background-color:#0000;color:inherit!important;text-decoration:none!important}.a-none:after{display:none!important}a:not(.a-none):not([data-stalux-card]):not(.stalux-nav-link):after{content:"";background:linear-gradient(90deg, var(--stalux-accent-color), var(--accent-50p));transform-origin:0;pointer-events:none;width:100%;height:1px;transition:transform .25s cubic-bezier(.25,.9,.2,1);position:absolute;bottom:-2px;left:0;transform:scaleX(0)}a:not(.a-none):not([data-stalux-card]):not(.stalux-nav-link):focus-visible:after,a:not(.a-none):not([data-stalux-card]):not(.stalux-nav-link):active:after{transform:scaleX(1)}@media (hover:hover) and (pointer:fine){a:not(.a-none):not([data-stalux-card]):not(.stalux-nav-link):hover:after{transform:scaleX(1)}}a:active,a:focus-visible{text-decoration:none}@media (hover:hover) and (pointer:fine){a:hover{text-decoration:none}}a:focus{outline:none}a:focus-visible{outline:2px solid var(--stalux-accent-color);outline-offset:2px}ul{margin:0;padding:0;list-style:none}.none{display:none}.stalux-root{color:#fff;min-height:100vh}.stalux-main{min-height:calc(100vh - var(--stalux-site-header-height,3rem))}:root{--stalux-bg-color:#202020;--stalux-bg-filter:none;--stalux-site-header-min-height:3.75rem;--stalux-site-header-height:var(--stalux-site-header-min-height);--stalux-text-shadow:var(--stalux-accent-color) .08rem .08rem .18rem;--stalux-accent-color:#eab308;--stalux-accent-rgb:234 179 8;--surface-glass:var(--black-05p);--surface-glass-shadow:var(--shadow-sidebar);--card-bg:var(--surface-glass);--card-border:#ffffff1a;--card-box-shadow:0 10px 24px #00000014;--card-box-shadow-hover:0 14px 28px #0000001f;--tag-bg:#ffffff1f;--tag-bg-hover:#ffffff2e;--category-bg:#ffffff14;--category-bg-hover:#ffffff24;--date-bg:#42a0ff2e;--date-border:#42a0ff40;--updated-bg:#ffc94733;--updated-border:#ffc9474d;--white-full:#fff;--white-95p:#fffffff2;--white-90p:#ffffffe6;--white-85p:#ffffffd9;--white-80p:#ffffffe6;--white-78p:#ffffffc7;--white-75p:#ffffffbf;--white-70p:#ffffffdb;--white-60p:#fff9;--white-50p:#ffffff80;--white-30p:#ffffff4d;--white-20p:#fff3;--white-15p:#ffffff26;--white-10p:#ffffff1a;--white-05p:#ffffff0d;--black-30p:#0000004d;--black-20p:#0003;--black-15p:#00000026;--black-10p:#0000001a;--black-05p:#0000000d;--accent-90p:rgb(var(--stalux-accent-rgb) / .9);--accent-85p:rgb(var(--stalux-accent-rgb) / .85);--accent-80p:rgb(var(--stalux-accent-rgb) / .8);--accent-70p:rgb(var(--stalux-accent-rgb) / .7);--accent-60p:rgb(var(--stalux-accent-rgb) / .6);--accent-50p:rgb(var(--stalux-accent-rgb) / .5);--accent-40p:rgb(var(--stalux-accent-rgb) / .4);--accent-30p:rgb(var(--stalux-accent-rgb) / .3);--accent-20p:rgb(var(--stalux-accent-rgb) / .2);--transition-fast:.18s ease;--transition-medium:.2s ease;--transition-normal:.25s ease;--transition-slow:.3s ease;--transition-slower:.5s ease;--transition-slowest:.6s ease;--easing-bounce:cubic-bezier(.175, .885, .32, 1.275);--space-2xs:.25rem;--space-xs:.75rem;--space-sm:.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-full:9999px;--shadow-sm:0 2px 5px #0000001a;--shadow-md:0 6px 16px #0003;--shadow-lg:0 8px 20px #0000004d;--shadow-xl:0 12px 26px #00000047;--shadow-sidebar:0 16px 20px -12px #000000d6, 10px 4px 16px -12px #00000094, -10px 4px 16px -12px #00000094;--shadow-raised-hover:0 20px 24px -13px #000000e6, 12px 5px 18px -13px #000000ad, -12px 5px 18px -13px #000000ad;--shadow-dark:#000000c0;--muted-text:#bbb;--font-body:"Noto Sans SC", "Noto Sans CJK SC", system-ui, sans-serif;--font-size-subtitle:1.35rem;--font-size-base:1.1rem;--font-size-small:.95rem;--font-size-smaller:.9rem;--font-size-tiny:.85rem;--border-thin:1px;--border-medium:2px;--border-thick:3px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#2a2a2a;border-radius:4px}::-webkit-scrollbar-thumb{background:#4a4a4a;border-radius:4px;transition:background .3s ease-out}@media (hover:hover) and (pointer:fine){::-webkit-scrollbar-thumb:hover{background:#5a5a5a}}::-webkit-scrollbar-corner{background:#2a2a2a}.bg-layer{z-index:-10;background-position:50%;background-repeat:repeat;background-size:auto;background-color:var(--stalux-bg-color,transparent);filter:var(--stalux-bg-filter,none);pointer-events:none;opacity:0;forced-color-adjust:none;color-scheme:light only;transition:opacity .65s ease-in-out;position:fixed;inset:0}@media (prefers-reduced-motion:reduce){.bg-layer{transition-duration:0s}}footer{padding:var(--space-lg) var(--space-md);text-align:center;color:var(--muted-text);border-top:1px solid var(--white-10p);backdrop-filter:blur(16px);background:linear-gradient(#0c0e122e,#0c0e12b8)}}@media print{[data-stalux-offscreen-code],[data-stalux-offscreen-svg]{content-visibility:visible!important;contain-intrinsic-block-size:none!important}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.stagger-children>:first-child{animation-delay:.1s}.stagger-children>:nth-child(2){animation-delay:.15s}.stagger-children>:nth-child(3){animation-delay:.2s}.stagger-children>:nth-child(4){animation-delay:.25s}.stagger-children>:nth-child(5){animation-delay:.3s}.stagger-children>:nth-child(n+6){animation-delay:.35s}html,[data-astro-transition-persist],.stalux-main,.stalux-main *,.bg-layer,.bg-layer *,[data-stalux-scroll-sentinel],[data-stalux-back-to-top]{view-transition-name:none!important}html[data-stalux-vt-preset] .stalux-main [data-stalux-motion-focus][data-stalux-motion-visible=true]{view-transition-name:stalux-focus!important}html[data-stalux-vt-preset=none] .stalux-main [data-stalux-motion-focus][data-stalux-motion-visible=true]{view-transition-name:none!important}::view-transition-group(stalux-focus){animation:none}::view-transition-image-pair(stalux-focus){isolation:auto}::view-transition-old(stalux-focus){animation:none;display:none}::view-transition-new(stalux-focus){mix-blend-mode:normal;animation:.12s cubic-bezier(.2,.7,.2,1) both stalux-focus-fade}html[data-stalux-vt-preset=enter]::view-transition-new(stalux-focus){animation:.16s cubic-bezier(.2,.7,.2,1) both stalux-focus-enter}html[data-stalux-vt-preset=up]::view-transition-new(stalux-focus){animation:.14s cubic-bezier(.2,.7,.2,1) both stalux-focus-up}html[data-stalux-vt-preset=taxonomy]::view-transition-new(stalux-focus){animation:.14s cubic-bezier(.2,.7,.2,1) both stalux-focus-fade}html[data-stalux-vt-preset=previous]::view-transition-new(stalux-focus){animation:.16s cubic-bezier(.2,.7,.2,1) both stalux-focus-previous}html[data-stalux-vt-preset=next]::view-transition-new(stalux-focus){animation:.16s cubic-bezier(.2,.7,.2,1) both stalux-focus-next}html[data-stalux-vt-preset=home]::view-transition-new(stalux-focus){animation:.18s cubic-bezier(.2,.7,.2,1) both stalux-focus-home}html[data-stalux-vt-preset=restore]::view-transition-new(stalux-focus){animation:.1s cubic-bezier(.2,.7,.2,1) both stalux-focus-restore}html[data-stalux-vt-preset=error]::view-transition-new(stalux-focus){animation:.1s cubic-bezier(.2,.7,.2,1) both stalux-focus-fade}@keyframes stalux-focus-fade{0%{opacity:.86}to{opacity:1}}@keyframes stalux-focus-enter{0%{opacity:.86;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes stalux-focus-up{0%{opacity:.9;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes stalux-focus-previous{0%{opacity:.9;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@keyframes stalux-focus-next{0%{opacity:.9;transform:translate(8px)}to{opacity:1;transform:translate(0)}}@keyframes stalux-focus-home{0%{opacity:.9;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes stalux-focus-restore{0%{opacity:.96}to{opacity:1}}@keyframes stalux-page-exit{0%{opacity:1}to{opacity:1}}@keyframes stalux-page-enter{0%{opacity:.9}to{opacity:1}}@keyframes stalux-page-enter-back{0%{opacity:.96}to{opacity:1}}@keyframes stalux-taxonomy-enter{0%{opacity:.9}to{opacity:1}}@keyframes stalux-taxonomy-enter-back{0%{opacity:.96}to{opacity:1}}@keyframes stalux-article-enter{0%{opacity:.9}to{opacity:1}}@keyframes stalux-article-enter-back{0%{opacity:.96}to{opacity:1}}@keyframes stalux-sidebar-left-in{0%{opacity:.96}to{opacity:1}}@keyframes stalux-sidebar-left-out{0%{opacity:1}to{opacity:1}}@keyframes stalux-sidebar-left-back-in{0%{opacity:.96}to{opacity:1}}@keyframes stalux-sidebar-left-back-out{0%{opacity:1}to{opacity:1}}@keyframes stalux-sidebar-right-in{0%{opacity:.96}to{opacity:1}}@keyframes stalux-sidebar-right-out{0%{opacity:1}to{opacity:1}}@keyframes stalux-sidebar-right-back-in{0%{opacity:.96}to{opacity:1}}@keyframes stalux-sidebar-right-back-out{0%{opacity:1}to{opacity:1}}[data-stalux-scroll-sentinel]{visibility:hidden;pointer-events:none;width:1px;height:1px;position:absolute;top:240px;left:0}@media (width<=768px){html[data-stalux-vt-preset]::view-transition-new(stalux-focus){animation:.12s cubic-bezier(.2,.7,.2,1) both stalux-focus-fade}html[data-stalux-vt-preset=restore]::view-transition-new(stalux-focus){animation:.1s cubic-bezier(.2,.7,.2,1) both stalux-focus-restore}}@media (prefers-reduced-motion:reduce){html[data-stalux-vt-preset] .stalux-main [data-stalux-motion-focus][data-stalux-motion-visible=true]{view-transition-name:none!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){filter:none!important;animation:none!important;transform:none!important}.stalux-main,.stalux-main *,.postLayout *{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}
|
|
2
|
+
@layer components{.stalux-404-home-btn{background:var(--black-20p);border:var(--border-thin) solid var(--white-20p);transition:background-color var(--transition-normal), transform var(--transition-normal), box-shadow var(--transition-normal);border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);color:var(--white-90p);font-size:var(--font-size-base);text-decoration:none;display:inline-block}.stalux-ai-prompt{clip-path:inset(50%);white-space:pre-wrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.stalux-badge-group{border:none}.stalux-badge-group-arrow{font-size:.65rem;transition:transform .2s;display:inline-block}.stalux-badge-group-summary{user-select:none;cursor:pointer;color:var(--white-70p);gap:.4rem;padding:.2rem 0;font-size:.85rem;list-style-type:none;transition:color .2s}.stalux-beian-public-security-beian{color:#ffffffb3;gap:5px;font-size:.9rem;text-decoration:none;transition:color .3s;display:inline-flex}.stalux-card-post-categories,.stalux-card-post-tags{gap:.4rem}.stalux-card-post-category{background:var(--category-bg);color:#fff;border-radius:6px;padding:.18rem .5rem;font-size:.84rem;line-height:1;display:inline-block}.stalux-card-post-description{overflow-wrap:anywhere;color:var(--white-70p);line-height:1.6}.stalux-card-post-meta{gap:.6rem}.stalux-card-post-tag{background:var(--tag-bg);color:#fff;border-radius:9999px;padding:.22rem .7rem;font-size:.85rem;line-height:1;display:inline-block}.stalux-card-post-title{overflow-wrap:anywhere;margin:0;line-height:1.35}.stalux-card-read-more{align-self:flex-start;margin-top:.6rem}.stalux-card-time{gap:.45rem;display:inline-flex}.stalux-copyright{color:var(--white-70p);gap:.3em;font-weight:500}.stalux-footer{backdrop-filter:blur(10px);color:var(--white-full);background-color:#0000001a;margin-top:auto;padding:1.5rem 0;font-size:.9rem}.stalux-footer-content{gap:.8rem;max-width:1200px;margin:0 auto;padding:0 1rem}.stalux-nav-list{transform:scale(var(--nav-scale,1));transform-origin:50%;box-sizing:border-box;gap:2rem;max-width:100%;transition:transform .22s cubic-bezier(.22,.72,.22,1);overflow:visible}.stalux-nav-overlay{pointer-events:none;z-index:999;opacity:0;background:#0009;height:100%;transition:opacity .3s;display:none;position:fixed;top:0;left:0}.stalux-nav-scroll-btn{background:var(--black-30p);backdrop-filter:blur(8px);box-shadow:var(--shadow-md);pointer-events:none;z-index:10;cursor:pointer;width:36px;height:36px;color:var(--white-full);opacity:0;border:none;border-radius:9999px;padding:0;transition:opacity .25s;display:none;position:absolute;top:50%;transform:translateY(-50%)}.stalux-nav-toggle{z-index:998;cursor:pointer;min-width:48px;min-height:48px;color:inherit;background:0 0;border:none;padding:.75rem;display:none}.stalux-post-card{box-sizing:border-box;cursor:pointer;gap:var(--space-lg);border-radius:var(--radius-lg);background-color:var(--card-bg);height:100%;padding:var(--space-lg);box-shadow:var(--card-box-shadow);transition:transform .22s cubic-bezier(.22,.72,.22,1)}.stalux-stats-site-build-time{color:#fffc;margin-top:.5rem;font-size:.9rem}.stalux-stats-stats-separator{color:#ffffff80}.stalux-theme-info{color:var(--white-70p);gap:.3em;font-size:.85rem}.stalux-home-body{min-height:calc(100vh - var(--stalux-site-header-height));padding-bottom:var(--space-3xl);position:relative}.stalux-nav-container{box-sizing:border-box;max-width:100%;position:relative;overflow:hidden}.stalux-author{margin-top:4em}.stalux-card-post-cover{border-radius:var(--radius-md);flex-shrink:0;height:180px;margin-bottom:.5rem;overflow:hidden}.stalux-home-title{color:var(--white-full);text-shadow:var(--stalux-text-shadow);margin-top:1.5em;font-size:4em}.stalux-nav-item{text-shadow:var(--stalux-text-shadow);flex-shrink:0;margin-left:1em;margin-right:1em;font-size:1.3em}.stalux-page-description{color:var(--white-60p);margin-bottom:1.5em;font-size:1.2em}.stalux-page-title{text-shadow:var(--stalux-text-shadow);margin-top:1.5em;font-size:2.5em}.stalux-typewriter{min-height:2em;text-shadow:var(--stalux-text-shadow);margin-top:1.5em;font-size:2.5em}.stalux-404-error-container{min-height:60vh;padding:2rem}.stalux-badge,.stalux-badges-wrapper .stalux-badge{width:auto}.stalux-u-min-w-0{min-width:0}.stalux-u-w-full{width:100%}.stalux-u-flex{display:flex}.stalux-u-flex-col{flex-direction:column}.stalux-u-flex-wrap{flex-wrap:wrap}.stalux-u-items-center{align-items:center}.stalux-u-justify-center{justify-content:center}.stalux-badges,.stalux-badges-wrapper{gap:.5rem}.stalux-beian-beian-info{gap:1rem}.stalux-stats-site-stats{gap:.5rem;font-size:.9rem}.stalux-nav-text{white-space:nowrap;color:var(--white-full)}.stalux-badge-group-items{padding-top:.35rem}.stalux-u-text-center{text-align:center}.stalux-badge-group-hint{color:var(--white-70p);font-size:.7rem}.stalux-badge-group-title{color:var(--white-80p)}#stalux-home-show-post-list{cursor:pointer;text-shadow:var(--stalux-text-shadow);margin-top:3em;font-size:1.5em}.stalux-post-list-container{width:100%;height:auto;margin:5px 0}.stalux-post-list-container ul{flex-wrap:wrap;gap:2rem;margin:3em;padding:0;list-style-type:none;display:flex}.stalux-post-list-container ul>li{flex:min(22rem,100%);min-width:0;margin:0}.stalux-card-post-title a{color:inherit;text-decoration:none}.stalux-post-card>a:first-child{width:100%;min-width:0;display:block}.stalux-card-post-cover img{object-fit:cover;width:100%;max-width:100%;height:100%;transition:transform var(--transition-fast)}.stalux-card-post-date,.stalux-card-post-updated{color:#e8f2ff;border-radius:10px;align-items:center;gap:.35rem;width:fit-content;padding:.28rem .6rem;font-size:.9rem;line-height:1.1;display:inline-flex}.stalux-card-post-date{background:var(--date-bg);border:1px solid var(--date-border);color:#e8f2ff}.stalux-card-post-updated{background:var(--updated-bg);border:1px solid var(--updated-border);color:#fff7de}.stalux-card-post-tags a,.stalux-card-post-categories a{text-decoration:none}.stalux-card-post-tags a:focus-visible .stalux-card-post-tag{background:var(--tag-bg-hover)}.stalux-card-post-categories a:focus-visible .stalux-card-post-category{background:var(--category-bg-hover)}.stalux-social{margin-top:3em}.stalux-social ul{flex-wrap:wrap;justify-content:center;gap:1em;margin:0;padding:0;display:flex}.stalux-social ul li{box-sizing:border-box;text-align:center;background-color:var(--white-15p);border-radius:9999px;justify-content:center;align-items:center;width:2.5em;height:2.5em;font-size:large;display:inline-flex;overflow:hidden}.stalux-social ul a,.stalux-social ul .stalux-social-icon-container,.stalux-social ul .stalux-social-custom-icon{justify-content:center;align-items:center;width:100%;height:100%;line-height:1;display:inline-flex}.stalux-social[data-stalux-social-animate=true] li{animation:.28s cubic-bezier(.2,.8,.2,1) both stalux-social-stalux-social-arrive}.stalux-social[data-stalux-social-animate=true] li:nth-child(2){animation-delay:30ms}.stalux-social[data-stalux-social-animate=true] li:nth-child(3){animation-delay:60ms}.stalux-social[data-stalux-social-animate=true] li:nth-child(4){animation-delay:90ms}.stalux-social[data-stalux-social-animate=true] li:nth-child(5){animation-delay:.12s}.stalux-social[data-stalux-social-animate=true] li:nth-child(6){animation-delay:.15s}.stalux-social[data-stalux-social-animate=true] li:nth-child(n+7){animation-delay:.18s}nav{width:100%;min-width:0;max-width:100%}html{scroll-padding-top:var(--stalux-nav-offset,var(--stalux-site-header-height))}.stalux-site-header{z-index:990;width:100%;min-height:var(--stalux-site-header-min-height);isolation:isolate;justify-content:center;align-items:center;display:flex;position:sticky;top:0}.stalux-nav-scroll-btn[data-visible]{pointer-events:auto;opacity:1}.stalux-nav-scroll-btn[data-side=left]{left:4px}.stalux-nav-scroll-btn[data-side=right]{right:4px}.stalux-nav-scroll-btn svg{stroke:currentColor;stroke-width:2px;fill:none;width:20px;height:20px}.stalux-nav-link,.stalux-nav-link:visited{cursor:pointer;width:100%;color:inherit;min-height:44px;font:inherit;background:0 0;border:none;align-items:center;gap:.5rem;padding:.5rem .75rem;text-decoration:none;display:flex}.stalux-nav-link .nav-icon{stroke:var(--white-full)}.stalux-nav-toggle svg{width:32px;height:32px}.stalux-nav-overlay[data-state=show]{pointer-events:auto;opacity:1;display:block}#stalux-to-archive-archs{margin-top:2em}#stalux-date-date-time{text-shadow:var(--stalux-text-shadow);color:var(--white-full);flex-direction:column;align-items:center;margin-top:2em;display:flex}#stalux-date-date-time #stalux-date-date{min-height:1.25em;margin-bottom:.5em;font-size:2em;line-height:1.25}#stalux-date-date-time #stalux-date-time{font-variant-numeric:tabular-nums;min-height:1.25em;font-size:3em;line-height:1.25}.stalux-author-figure{justify-content:center;align-items:center;display:flex}.stalux-author-figure img{box-shadow:0 0 10px var(--stalux-accent-color);border-radius:9999px;transition:transform .65s ease-in-out}.stalux-author-figure figcaption{text-shadow:var(--stalux-text-shadow);color:var(--white-full);margin-left:1em;font-size:2.5em;font-weight:700}.stalux-author-figure-column figcaption{text-align:center;margin-top:.5em;margin-left:0}.agent-home-summary{clip-path:inset(50%);white-space:normal;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.stalux-404-error-content h1{color:var(--white-90p);margin:0;font-size:6rem;font-weight:700}.stalux-404-error-content p{color:var(--white-70p);margin:1rem 0 2rem;font-size:1.5rem}.stalux-404-countdown-text{color:var(--white-50p)!important;margin:-.5rem 0 1.5rem!important;font-size:.95rem!important}.agent-recovery{max-width:42rem;line-height:1.7;margin:0 auto 1.5rem!important;font-size:1rem!important}.agent-recovery a{color:inherit;text-decoration-line:underline}.stalux-theme-info span,.stalux-copyright span{margin:0}.stalux-theme-info a{color:#fffc;margin:0 .2em;text-decoration:none;transition:color .3s}.stalux-beian-beian-info a{color:#ffffffb3;font-size:.9rem;text-decoration:none;transition:color .3s}.stalux-beian-public-security-beian img{width:15px;height:15px;display:inline-block}.stalux-badge-group-summary::-webkit-details-marker,.stalux-badge-group[open] .stalux-badge-group-hint[data-hint=collapsed],.stalux-badge-group:not([open]) .stalux-badge-group-hint[data-hint=expanded]{display:none}.stalux-badge-group[open] .stalux-badge-group-arrow{transform:rotate(90deg)}@media (hover:hover) and (pointer:fine){.stalux-card-post-tags a:hover .stalux-card-post-tag{background:var(--tag-bg-hover)}.stalux-card-post-categories a:hover .stalux-card-post-category{background:var(--category-bg-hover)}.stalux-post-card-shell:hover .stalux-post-card .stalux-card-post-cover img{transform:scale(1.025)}.stalux-post-card-shell:hover .stalux-post-card{box-shadow:var(--card-box-shadow-hover)}.stalux-nav-scroll-btn:hover{background:0 0}.stalux-nav-container:hover .stalux-nav-scroll-btn[data-visible]{opacity:1}.stalux-nav-link:hover .nav-icon,.stalux-nav-link:hover .stalux-nav-text{stroke:var(--stalux-accent-color);color:var(--stalux-accent-color)}.stalux-author-figure>a:hover img{animation:.65s ease-in-out stalux-link-avatar-spin}.stalux-404-home-btn:hover{background:var(--accent-20p);box-shadow:0 4px 12px var(--shadow-dark)}.stalux-theme-info a:hover{color:#fff;text-decoration:none}.stalux-beian-beian-info a:hover,.stalux-beian-public-security-beian:hover{color:#ffffffe6;text-decoration:none}.stalux-badge-group-summary:hover{color:var(--white-70p)}}@media (width>=601px){.stalux-site-nav{isolation:isolate;border-radius:0 0 16px 16px;transition:background-color .18s,box-shadow .18s}.stalux-site-nav[data-scrolled]{backdrop-filter:blur(20px)saturate(140%);box-shadow:0 1px 0 var(--white-10p), 0 8px 24px #0000001f;background:#181818c7}}@media (width<=1100px){.stalux-nav-list{gap:1rem}.stalux-nav-item{margin-left:.6em;margin-right:.6em;font-size:1em}}@media (width<=900px){.stalux-nav-item{margin-left:.25em;margin-right:.25em;font-size:.95em}.stalux-nav-list{gap:.5rem}}@media (width<=768px){.stalux-home-body{box-sizing:border-box;width:100%;max-width:95vw;height:auto;padding:2rem .5rem 1.5rem}.stalux-home-title{word-break:break-all;margin-top:1em;font-size:2em}#stalux-home-show-post-list{margin-top:2em;font-size:1.1em}.stalux-post-list-container ul{margin:1rem}.stalux-footer{padding:1.2rem 0;font-size:.8rem}.stalux-footer-content{gap:.6rem;padding:0 .8rem}.stalux-author{box-sizing:border-box;width:100%;max-width:95vw;margin-top:2em;padding:1em .5em}.stalux-author-figure{gap:.5em;flex-direction:column!important}.stalux-author-figure img{max-width:20vw;max-height:20vw;width:64px!important;height:64px!important}.stalux-author-figure figcaption{text-align:center;word-break:break-all;overflow-wrap:break-word;white-space:normal;max-width:90vw;margin-top:.5em;margin-left:0;font-size:1.5em}.stalux-404-error-content h1{font-size:4rem}.stalux-404-error-content p{font-size:1.2rem}.stalux-badges{gap:.3rem}.stalux-badge{width:auto}}@media (width<=600px){html{--stalux-site-header-min-height:4rem}.stalux-nav-toggle[data-state=open]{visibility:hidden;pointer-events:none}.stalux-nav-toggle[data-scrolled]{backdrop-filter:blur(20px)saturate(140%);box-shadow:0 1px 0 var(--white-10p), 0 8px 24px #0000001f;background:#181818c7;border-radius:12px}.stalux-nav-toggle{display:block;position:fixed;top:.75rem;left:.75rem}.stalux-nav-container{overflow:visible}nav{width:auto}.stalux-nav-list{pointer-events:none;z-index:1000;background:var(--black-20p);backdrop-filter:blur(20px);flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:0;width:min(220px,100vw - 1rem);height:100vh;padding:.5rem 1rem 2rem;position:fixed;top:0;left:0;right:auto;overflow-y:auto;transform:translate(-100%)}.stalux-nav-list[data-state=open]{pointer-events:auto;transform:translate(0)}.stalux-nav-item{border-bottom:1px solid var(--white-10p);flex-shrink:0;width:100%;margin:0;font-size:.9em}.stalux-nav-text{display:inline}.stalux-nav-link{width:100%;min-height:44px;font-size:inherit;padding:.45rem .75rem}.stalux-nav-link .nav-icon{width:18px;height:18px}}@media (width<=480px){.stalux-footer{padding:1rem 0;font-size:.8rem}.stalux-footer-content{gap:.6rem;padding:0 .8rem}}@media (prefers-reduced-motion:reduce){.stalux-social[data-stalux-social-animate=true] li{animation:none}}.stalux-main,.stalux-post-page,.stalux-post-layout>*,.stalux-link-card-content,.stalux-word-list-item,.stalux-word-card{box-sizing:border-box;min-width:0;max-width:100%}.stalux-main{overflow-wrap:anywhere}.stalux-link-shell{min-width:0;max-width:100%;display:block}.stalux-link-card{box-sizing:border-box;width:100%;max-width:100%}.stalux-category-shell{width:100%;min-width:0}.stalux-author-figure>a{flex-shrink:0;display:inline-block}.stalux-author-figure img{display:block}.stalux-post-card-shell,.stalux-category-shell,.stalux-link-shell{position:relative}.stalux-post-card,.stalux-category-card,.stalux-link-card,.stalux-word-card{transition:transform .2s,background-color .2s,border-color .2s,box-shadow .2s}:is(.stalux-post-card-shell,.stalux-category-shell):focus-within>*,.stalux-link-shell:focus-visible>*{box-shadow:var(--card-box-shadow-hover)}:is(button,summary,[role=button]):focus-visible{outline:2px solid var(--stalux-accent-color);outline-offset:3px}@media (prefers-reduced-motion:reduce){.stalux-main *,.stalux-main :before,.stalux-main :after{transition-duration:0s!important;animation:none!important}.stalux-post-card,.stalux-category-card,.stalux-link-card,.stalux-link-card-content,.stalux-card-post-cover img,.stalux-category-icon,.stalux-author-figure img,.stalux-link-card-avatar img{transform:none!important}}@keyframes stalux-social-stalux-social-arrive{0%{opacity:0;transform:translateY(.75rem)rotate(-12deg)}to{opacity:1;transform:translateY(0)rotate(0)}}@keyframes stalux-random-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes stalux-link-avatar-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes stalux-word-word-glow{0%{box-shadow:0 0 30px var(--accent-50p), 0 0 80px var(--accent-30p), var(--shadow-lg);transform:scale(1.02)}to{box-shadow:0 0 20px var(--accent-40p), 0 0 60px var(--accent-20p), var(--shadow-lg);transform:scale(1)}}}@layer utilities{.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.visible{visibility:visible}.absolute{position:absolute}.static{position:static}.grid{display:grid}.block{display:block}.inline-block{display:inline-block}.hidden{display:none}.h-full{height:100%}.flex{display:flex}.flex-shrink{flex-shrink:1}.flex-wrap{flex-wrap:wrap}.transform{transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.b,.border{border-width:1px}.text-inherit{color:inherit}.no-underline{text-decoration:none}.outline{outline-style:solid}}@layer theme;@layer base{html,body{color:#fff;width:100%;height:100%;margin:0;& main{flex:1}scrollbar-color:#4a4a4a #2a2a2a;font-family:var(--font-body), "Noto Sans SC", "Noto Sans CJK SC", system-ui, -apple-system, sans-serif;text-rendering:optimizelegibility;line-height:1.25;display:block}body{height:auto;min-height:100%}html{scrollbar-gutter:stable;background-color:var(--stalux-bg-color,#202020)}html[data-clarity-id]{opacity:1!important}a{color:inherit;cursor:pointer;text-decoration-skip-ink:auto;background-color:#0000;text-decoration:none;transition:color .2s,text-shadow .2s;position:relative}.a-none{cursor:pointer;text-decoration-skip-ink:auto;background-color:#0000;color:inherit!important;text-decoration:none!important}.a-none:after{display:none!important}a:not(.a-none):not([data-stalux-card]):not(.stalux-nav-link):after{content:"";background:linear-gradient(90deg, var(--stalux-accent-color), var(--accent-50p));transform-origin:0;pointer-events:none;width:100%;height:1px;transition:transform .25s cubic-bezier(.25,.9,.2,1);position:absolute;bottom:-2px;left:0;transform:scaleX(0)}a:not(.a-none):not([data-stalux-card]):not(.stalux-nav-link):focus-visible:after,a:not(.a-none):not([data-stalux-card]):not(.stalux-nav-link):active:after{transform:scaleX(1)}@media (hover:hover) and (pointer:fine){a:not(.a-none):not([data-stalux-card]):not(.stalux-nav-link):hover:after{transform:scaleX(1)}}a:active,a:focus-visible{text-decoration:none}@media (hover:hover) and (pointer:fine){a:hover{text-decoration:none}}a:focus{outline:none}a:focus-visible{outline:2px solid var(--stalux-accent-color);outline-offset:2px}ul{margin:0;padding:0;list-style:none}.none{display:none}.stalux-root{color:#fff;min-height:100vh}.stalux-main{min-height:calc(100vh - var(--stalux-site-header-height,3rem))}:root{--stalux-bg-color:#202020;--stalux-bg-filter:none;--stalux-site-header-min-height:3.75rem;--stalux-site-header-height:var(--stalux-site-header-min-height);--stalux-text-shadow:var(--stalux-accent-color) .08rem .08rem .18rem;--stalux-accent-color:#eab308;--stalux-accent-rgb:234 179 8;--surface-glass:var(--black-05p);--surface-glass-shadow:var(--shadow-sidebar);--card-bg:var(--surface-glass);--card-border:#ffffff1a;--card-box-shadow:0 10px 24px #00000014;--card-box-shadow-hover:0 14px 28px #0000001f;--tag-bg:#ffffff1f;--tag-bg-hover:#ffffff2e;--category-bg:#ffffff14;--category-bg-hover:#ffffff24;--date-bg:#42a0ff2e;--date-border:#42a0ff40;--updated-bg:#ffc94733;--updated-border:#ffc9474d;--white-full:#fff;--white-95p:#fffffff2;--white-90p:#ffffffe6;--white-85p:#ffffffd9;--white-80p:#ffffffe6;--white-78p:#ffffffc7;--white-75p:#ffffffbf;--white-70p:#ffffffdb;--white-60p:#fff9;--white-50p:#ffffff80;--white-30p:#ffffff4d;--white-20p:#fff3;--white-15p:#ffffff26;--white-10p:#ffffff1a;--white-05p:#ffffff0d;--black-30p:#0000004d;--black-20p:#0003;--black-15p:#00000026;--black-10p:#0000001a;--black-05p:#0000000d;--accent-90p:rgb(var(--stalux-accent-rgb) / .9);--accent-85p:rgb(var(--stalux-accent-rgb) / .85);--accent-80p:rgb(var(--stalux-accent-rgb) / .8);--accent-70p:rgb(var(--stalux-accent-rgb) / .7);--accent-60p:rgb(var(--stalux-accent-rgb) / .6);--accent-50p:rgb(var(--stalux-accent-rgb) / .5);--accent-40p:rgb(var(--stalux-accent-rgb) / .4);--accent-30p:rgb(var(--stalux-accent-rgb) / .3);--accent-20p:rgb(var(--stalux-accent-rgb) / .2);--transition-fast:.18s ease;--transition-medium:.2s ease;--transition-normal:.25s ease;--transition-slow:.3s ease;--transition-slower:.5s ease;--transition-slowest:.6s ease;--easing-bounce:cubic-bezier(.175, .885, .32, 1.275);--space-2xs:.25rem;--space-xs:.75rem;--space-sm:.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-full:9999px;--shadow-sm:0 2px 5px #0000001a;--shadow-md:0 6px 16px #0003;--shadow-lg:0 8px 20px #0000004d;--shadow-xl:0 12px 26px #00000047;--shadow-sidebar:0 16px 20px -12px #000000d6, 10px 4px 16px -12px #00000094, -10px 4px 16px -12px #00000094;--shadow-raised-hover:0 20px 24px -13px #000000e6, 12px 5px 18px -13px #000000ad, -12px 5px 18px -13px #000000ad;--shadow-dark:#000000c0;--muted-text:#bbb;--font-body:"Noto Sans SC", "Noto Sans CJK SC", system-ui, sans-serif;--font-size-subtitle:1.35rem;--font-size-base:1.1rem;--font-size-small:.95rem;--font-size-smaller:.9rem;--font-size-tiny:.85rem;--border-thin:1px;--border-medium:2px;--border-thick:3px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#2a2a2a;border-radius:4px}::-webkit-scrollbar-thumb{background:#4a4a4a;border-radius:4px;transition:background .3s ease-out}@media (hover:hover) and (pointer:fine){::-webkit-scrollbar-thumb:hover{background:#5a5a5a}}::-webkit-scrollbar-corner{background:#2a2a2a}.bg-layer{z-index:-10;background-position:50%;background-repeat:repeat;background-size:auto;background-color:var(--stalux-bg-color,transparent);filter:var(--stalux-bg-filter,none);pointer-events:none;opacity:0;forced-color-adjust:none;color-scheme:light only;transition:opacity .65s ease-in-out;position:fixed;inset:0}@media (prefers-reduced-motion:reduce){.bg-layer{transition-duration:0s}}footer{padding:var(--space-lg) var(--space-md);text-align:center;color:var(--muted-text);border-top:1px solid var(--white-10p);backdrop-filter:blur(16px);background:linear-gradient(#0c0e122e,#0c0e12b8)}}@media print{[data-stalux-offscreen-code],[data-stalux-offscreen-svg]{content-visibility:visible!important;contain-intrinsic-block-size:none!important}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.stagger-children>:first-child{animation-delay:.1s}.stagger-children>:nth-child(2){animation-delay:.15s}.stagger-children>:nth-child(3){animation-delay:.2s}.stagger-children>:nth-child(4){animation-delay:.25s}.stagger-children>:nth-child(5){animation-delay:.3s}.stagger-children>:nth-child(n+6){animation-delay:.35s}html,[data-astro-transition-persist],.stalux-main,.stalux-main *,.bg-layer,.bg-layer *,[data-stalux-scroll-sentinel],[data-stalux-back-to-top]{view-transition-name:none!important}html[data-stalux-vt-preset]{--stalux-vt-duration:.16s;--stalux-vt-distance:clamp(28px, 4vw, 40px);--stalux-vt-tilt:8deg;--stalux-vt-x:var(--stalux-vt-distance);--stalux-vt-y:0px;--stalux-vt-rx:0deg;--stalux-vt-ry:0deg;--stalux-vt-rz:-.35deg;--stalux-vt-scale:1}html[data-stalux-vt-preset]:not([data-stalux-vt-preset=none]) [data-stalux-motion-focus]{view-transition-name:stalux-focus!important}::view-transition{pointer-events:none}::view-transition-group(stalux-focus){animation:none!important}::view-transition-old(stalux-focus){display:none;animation:none!important}::view-transition-new(stalux-focus){mix-blend-mode:normal;transform-origin:50%;backface-visibility:hidden;animation:stalux-content-in var(--stalux-vt-duration,.16s) cubic-bezier(.22, .7, .2, 1) both paused}html[data-stalux-vt-phase=prepared] [data-stalux-motion-content],html[data-stalux-vt-phase=running] [data-stalux-motion-content]{transform-origin:50% min(42vh,400px);backface-visibility:hidden;animation:stalux-content-in var(--stalux-vt-duration,.16s) cubic-bezier(.22, .7, .2, 1) both paused}html[data-stalux-vt-phase=running] [data-stalux-motion-content],html[data-stalux-vt-phase=running]::view-transition-new(stalux-focus){animation-play-state:running}html[data-stalux-vt-phase] .stalux-article{overflow:clip}[data-stalux-home-content]{flex-direction:column;align-items:center;width:100%;display:flex}html[data-stalux-vt-preset=enter]{--stalux-vt-x:calc(var(--stalux-vt-distance) * 1.25);--stalux-vt-rz:0deg}html[data-stalux-vt-preset=article]{--stalux-vt-duration:.26s;--stalux-vt-distance:clamp(36px, 5vw, 56px);--stalux-vt-x:calc(var(--stalux-vt-distance) * 1.25);--stalux-vt-rz:0deg}html[data-stalux-vt-preset=next]{--stalux-vt-duration:.26s;--stalux-vt-distance:clamp(36px, 5vw, 56px);--stalux-vt-x:calc(var(--stalux-vt-distance) * 1.5);--stalux-vt-rz:0deg}html[data-stalux-vt-preset=previous]{--stalux-vt-duration:.26s;--stalux-vt-distance:clamp(36px, 5vw, 56px);--stalux-vt-x:calc(var(--stalux-vt-distance) * -1.5);--stalux-vt-rz:0deg}html[data-stalux-vt-preset=up]{--stalux-vt-duration:.14s;--stalux-vt-x:calc(var(--stalux-vt-distance) * -.75);--stalux-vt-y:-10px;--stalux-vt-rz:0deg}html[data-stalux-vt-preset=taxonomy]{--stalux-vt-duration:.14s;--stalux-vt-x:0px;--stalux-vt-y:18px;--stalux-vt-rx:calc(var(--stalux-vt-tilt) * -.5);--stalux-vt-rz:0deg}html[data-stalux-vt-preset=panel]{--stalux-vt-x:calc(var(--stalux-vt-distance) * .6);--stalux-vt-ry:calc(var(--stalux-vt-tilt) * -1);--stalux-vt-rz:0deg}html[data-stalux-vt-preset=panel][data-stalux-vt-to=links]{--stalux-vt-x:0px;--stalux-vt-y:12px;--stalux-vt-rx:calc(var(--stalux-vt-tilt) * .75);--stalux-vt-ry:0deg}html[data-stalux-vt-preset=panel][data-stalux-vt-to=words]{--stalux-vt-x:0px;--stalux-vt-y:16px;--stalux-vt-ry:0deg;--stalux-vt-rz:-1deg}html[data-stalux-vt-preset=home]{--stalux-vt-duration:.18s;--stalux-vt-x:0px;--stalux-vt-y:20px;--stalux-vt-rx:calc(var(--stalux-vt-tilt) * -.625);--stalux-vt-rz:0deg;--stalux-vt-scale:.985}html[data-stalux-vt-preset=restore]{--stalux-vt-duration:.1s;--stalux-vt-x:12px;--stalux-vt-rz:0deg}html[data-stalux-vt-preset=restore][data-stalux-vt-direction=back],html[data-stalux-vt-preset=restore][data-stalux-vt-direction=backward]{--stalux-vt-x:-12px}html[data-stalux-vt-preset=error]{--stalux-vt-duration:.12s;--stalux-vt-x:0px;--stalux-vt-y:12px;--stalux-vt-rz:-.7deg}@keyframes stalux-content-in{0%{opacity:.25;transform:perspective(1200px) translate3d(var(--stalux-vt-x), var(--stalux-vt-y), 0) rotateX(var(--stalux-vt-rx)) rotateY(var(--stalux-vt-ry)) rotateZ(var(--stalux-vt-rz)) scale(var(--stalux-vt-scale))}55%{opacity:1}to{opacity:1;transform:perspective(1200px)translate(0,0)rotateX(0)rotateY(0)rotate(0)scale(1)}}@keyframes stalux-page-exit{0%{opacity:1}to{opacity:1}}@keyframes stalux-page-enter{0%{opacity:.9}to{opacity:1}}@keyframes stalux-page-enter-back{0%{opacity:.96}to{opacity:1}}@keyframes stalux-taxonomy-enter{0%{opacity:.9}to{opacity:1}}@keyframes stalux-taxonomy-enter-back{0%{opacity:.96}to{opacity:1}}@keyframes stalux-article-enter{0%{opacity:.9}to{opacity:1}}@keyframes stalux-article-enter-back{0%{opacity:.96}to{opacity:1}}@keyframes stalux-sidebar-left-in{0%{opacity:.96}to{opacity:1}}@keyframes stalux-sidebar-left-out{0%{opacity:1}to{opacity:1}}@keyframes stalux-sidebar-left-back-in{0%{opacity:.96}to{opacity:1}}@keyframes stalux-sidebar-left-back-out{0%{opacity:1}to{opacity:1}}@keyframes stalux-sidebar-right-in{0%{opacity:.96}to{opacity:1}}@keyframes stalux-sidebar-right-out{0%{opacity:1}to{opacity:1}}@keyframes stalux-sidebar-right-back-in{0%{opacity:.96}to{opacity:1}}@keyframes stalux-sidebar-right-back-out{0%{opacity:1}to{opacity:1}}[data-stalux-scroll-sentinel]{visibility:hidden;pointer-events:none;width:1px;height:1px;position:absolute;top:240px;left:0}@media (width<=768px){html[data-stalux-vt-preset]:not([data-stalux-vt-preset=none]){--stalux-vt-distance:20px;--stalux-vt-tilt:4deg}html[data-stalux-vt-preset=restore]{--stalux-vt-x:8px}html[data-stalux-vt-preset=restore][data-stalux-vt-direction=back],html[data-stalux-vt-preset=restore][data-stalux-vt-direction=backward]{--stalux-vt-x:-8px}}@media (prefers-reduced-motion:reduce){html[data-stalux-vt-preset],html[data-stalux-vt-preset] [data-astro-transition-persist]{view-transition-name:none!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){filter:none!important;animation:none!important;transform:none!important}.stalux-main,.stalux-main *,.postLayout *{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}
|
|
3
3
|
/*$vite$:1*/
|
package/src/styles/motion.css
CHANGED
|
@@ -28,9 +28,8 @@
|
|
|
28
28
|
animation-delay: 0.35s;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
/*
|
|
32
|
-
|
|
33
|
-
Keep literal keyframe references: production CSS removes unreferenced frames. */
|
|
31
|
+
/* Only a bounded heading is captured by native VT. Long article/list content
|
|
32
|
+
stays in the live DOM; sidebars, navigation, footer and backgrounds stay put. */
|
|
34
33
|
html,
|
|
35
34
|
[data-astro-transition-persist],
|
|
36
35
|
.stalux-main,
|
|
@@ -42,143 +41,162 @@ html,
|
|
|
42
41
|
view-transition-name: none !important;
|
|
43
42
|
}
|
|
44
43
|
|
|
45
|
-
html[data-stalux-vt-preset]
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
html[data-stalux-vt-preset] {
|
|
45
|
+
--stalux-vt-duration: 160ms;
|
|
46
|
+
--stalux-vt-distance: clamp(28px, 4vw, 40px);
|
|
47
|
+
--stalux-vt-tilt: 8deg;
|
|
48
|
+
--stalux-vt-x: var(--stalux-vt-distance);
|
|
49
|
+
--stalux-vt-y: 0px;
|
|
50
|
+
--stalux-vt-rx: 0deg;
|
|
51
|
+
--stalux-vt-ry: 0deg;
|
|
52
|
+
--stalux-vt-rz: -0.35deg;
|
|
53
|
+
--stalux-vt-scale: 1;
|
|
49
54
|
}
|
|
50
55
|
|
|
51
|
-
html[data-stalux-vt-preset="none"]
|
|
52
|
-
|
|
53
|
-
[data-stalux-motion-focus][data-stalux-motion-visible="true"] {
|
|
54
|
-
view-transition-name: none !important;
|
|
56
|
+
html[data-stalux-vt-preset]:not([data-stalux-vt-preset="none"]) [data-stalux-motion-focus] {
|
|
57
|
+
view-transition-name: stalux-focus !important;
|
|
55
58
|
}
|
|
56
59
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
::view-transition-group(stalux-focus) {
|
|
60
|
-
animation: none;
|
|
60
|
+
::view-transition {
|
|
61
|
+
pointer-events: none;
|
|
61
62
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
isolation: auto;
|
|
63
|
+
::view-transition-group(stalux-focus) {
|
|
64
|
+
animation: none !important;
|
|
65
65
|
}
|
|
66
|
-
|
|
67
66
|
::view-transition-old(stalux-focus) {
|
|
68
67
|
display: none;
|
|
69
|
-
animation: none;
|
|
68
|
+
animation: none !important;
|
|
70
69
|
}
|
|
71
|
-
|
|
72
70
|
::view-transition-new(stalux-focus) {
|
|
73
71
|
mix-blend-mode: normal;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
animation: stalux-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
html[data-stalux-vt-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
html[data-stalux-vt-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
72
|
+
transform-origin: 50% 50%;
|
|
73
|
+
backface-visibility: hidden;
|
|
74
|
+
animation: stalux-content-in var(--stalux-vt-duration, 160ms) cubic-bezier(0.22, 0.7, 0.2, 1)
|
|
75
|
+
both paused;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* The incoming document starts paused, before it can be painted. Native ready
|
|
79
|
+
releases both the small heading and live content in the same style update. */
|
|
80
|
+
html[data-stalux-vt-phase="prepared"] [data-stalux-motion-content],
|
|
81
|
+
html[data-stalux-vt-phase="running"] [data-stalux-motion-content] {
|
|
82
|
+
transform-origin: 50% min(42vh, 400px);
|
|
83
|
+
backface-visibility: hidden;
|
|
84
|
+
animation: stalux-content-in var(--stalux-vt-duration, 160ms) cubic-bezier(0.22, 0.7, 0.2, 1)
|
|
85
|
+
both paused;
|
|
86
|
+
}
|
|
87
|
+
html[data-stalux-vt-phase="running"] [data-stalux-motion-content],
|
|
88
|
+
html[data-stalux-vt-phase="running"]::view-transition-new(stalux-focus) {
|
|
89
|
+
animation-play-state: running;
|
|
90
|
+
}
|
|
91
|
+
html[data-stalux-vt-phase] .stalux-article {
|
|
92
|
+
/* Clip a sliding paragraph at its reading card, without a scroll container. */
|
|
93
|
+
overflow: clip;
|
|
94
|
+
}
|
|
95
|
+
[data-stalux-home-content] {
|
|
96
|
+
display: flex;
|
|
97
|
+
flex-direction: column;
|
|
98
|
+
align-items: center;
|
|
99
|
+
width: 100%;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/* Reading follows a horizontal page sequence; prev/next articles are siblings
|
|
103
|
+
in that sequence, so they keep a lateral glide. Vertical travel is reserved
|
|
104
|
+
for hierarchical moves (list -> detail, back up to the archive). A slower
|
|
105
|
+
260ms window keeps the longer sibling travel legible instead of abrupt. */
|
|
106
|
+
html[data-stalux-vt-preset="enter"] {
|
|
107
|
+
--stalux-vt-x: calc(var(--stalux-vt-distance) * 1.25);
|
|
108
|
+
--stalux-vt-rz: 0deg;
|
|
109
|
+
}
|
|
110
|
+
html[data-stalux-vt-preset="article"] {
|
|
111
|
+
--stalux-vt-duration: 260ms;
|
|
112
|
+
--stalux-vt-distance: clamp(36px, 5vw, 56px);
|
|
113
|
+
--stalux-vt-x: calc(var(--stalux-vt-distance) * 1.25);
|
|
114
|
+
--stalux-vt-rz: 0deg;
|
|
115
|
+
}
|
|
116
|
+
html[data-stalux-vt-preset="next"] {
|
|
117
|
+
--stalux-vt-duration: 260ms;
|
|
118
|
+
--stalux-vt-distance: clamp(36px, 5vw, 56px);
|
|
119
|
+
--stalux-vt-x: calc(var(--stalux-vt-distance) * 1.5);
|
|
120
|
+
--stalux-vt-rz: 0deg;
|
|
121
|
+
}
|
|
122
|
+
html[data-stalux-vt-preset="previous"] {
|
|
123
|
+
--stalux-vt-duration: 260ms;
|
|
124
|
+
--stalux-vt-distance: clamp(36px, 5vw, 56px);
|
|
125
|
+
--stalux-vt-x: calc(var(--stalux-vt-distance) * -1.5);
|
|
126
|
+
--stalux-vt-rz: 0deg;
|
|
127
|
+
}
|
|
128
|
+
html[data-stalux-vt-preset="up"] {
|
|
129
|
+
--stalux-vt-duration: 140ms;
|
|
130
|
+
--stalux-vt-x: calc(var(--stalux-vt-distance) * -0.75);
|
|
131
|
+
--stalux-vt-y: -10px;
|
|
132
|
+
--stalux-vt-rz: 0deg;
|
|
133
|
+
}
|
|
134
|
+
html[data-stalux-vt-preset="taxonomy"] {
|
|
135
|
+
--stalux-vt-duration: 140ms;
|
|
136
|
+
--stalux-vt-x: 0px;
|
|
137
|
+
--stalux-vt-y: 18px;
|
|
138
|
+
--stalux-vt-rx: calc(var(--stalux-vt-tilt) * -0.5);
|
|
139
|
+
--stalux-vt-rz: 0deg;
|
|
140
|
+
}
|
|
141
|
+
html[data-stalux-vt-preset="panel"] {
|
|
142
|
+
--stalux-vt-x: calc(var(--stalux-vt-distance) * 0.6);
|
|
143
|
+
--stalux-vt-ry: calc(var(--stalux-vt-tilt) * -1);
|
|
144
|
+
--stalux-vt-rz: 0deg;
|
|
145
|
+
}
|
|
146
|
+
html[data-stalux-vt-preset="panel"][data-stalux-vt-to="links"] {
|
|
147
|
+
--stalux-vt-x: 0px;
|
|
148
|
+
--stalux-vt-y: 12px;
|
|
149
|
+
--stalux-vt-rx: calc(var(--stalux-vt-tilt) * 0.75);
|
|
150
|
+
--stalux-vt-ry: 0deg;
|
|
151
|
+
}
|
|
152
|
+
html[data-stalux-vt-preset="panel"][data-stalux-vt-to="words"] {
|
|
153
|
+
--stalux-vt-x: 0px;
|
|
154
|
+
--stalux-vt-y: 16px;
|
|
155
|
+
--stalux-vt-ry: 0deg;
|
|
156
|
+
--stalux-vt-rz: -1deg;
|
|
157
|
+
}
|
|
158
|
+
html[data-stalux-vt-preset="home"] {
|
|
159
|
+
--stalux-vt-duration: 180ms;
|
|
160
|
+
--stalux-vt-x: 0px;
|
|
161
|
+
--stalux-vt-y: 20px;
|
|
162
|
+
--stalux-vt-rx: calc(var(--stalux-vt-tilt) * -0.625);
|
|
163
|
+
--stalux-vt-rz: 0deg;
|
|
164
|
+
--stalux-vt-scale: 0.985;
|
|
165
|
+
}
|
|
166
|
+
/* History restores the actual reading position. Small mirrored translation
|
|
167
|
+
signals direction without re-playing the page-entry tilt at a deep scroll. */
|
|
168
|
+
html[data-stalux-vt-preset="restore"] {
|
|
169
|
+
--stalux-vt-duration: 100ms;
|
|
170
|
+
--stalux-vt-x: 12px;
|
|
171
|
+
--stalux-vt-rz: 0deg;
|
|
172
|
+
}
|
|
173
|
+
html[data-stalux-vt-preset="restore"][data-stalux-vt-direction="back"],
|
|
174
|
+
html[data-stalux-vt-preset="restore"][data-stalux-vt-direction="backward"] {
|
|
175
|
+
--stalux-vt-x: -12px;
|
|
176
|
+
}
|
|
177
|
+
html[data-stalux-vt-preset="error"] {
|
|
178
|
+
--stalux-vt-duration: 120ms;
|
|
179
|
+
--stalux-vt-x: 0px;
|
|
180
|
+
--stalux-vt-y: 12px;
|
|
181
|
+
--stalux-vt-rz: -0.7deg;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
@keyframes stalux-content-in {
|
|
130
185
|
from {
|
|
131
|
-
opacity: 0.
|
|
132
|
-
transform:
|
|
186
|
+
opacity: 0.25;
|
|
187
|
+
transform: perspective(1200px) translate3d(var(--stalux-vt-x), var(--stalux-vt-y), 0)
|
|
188
|
+
rotateX(var(--stalux-vt-rx)) rotateY(var(--stalux-vt-ry)) rotateZ(var(--stalux-vt-rz))
|
|
189
|
+
scale(var(--stalux-vt-scale));
|
|
133
190
|
}
|
|
134
|
-
|
|
191
|
+
55% {
|
|
135
192
|
opacity: 1;
|
|
136
|
-
transform: translateY(0);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
@keyframes stalux-focus-previous {
|
|
141
|
-
from {
|
|
142
|
-
opacity: 0.9;
|
|
143
|
-
transform: translateX(-8px);
|
|
144
|
-
}
|
|
145
|
-
to {
|
|
146
|
-
opacity: 1;
|
|
147
|
-
transform: translateX(0);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
@keyframes stalux-focus-next {
|
|
152
|
-
from {
|
|
153
|
-
opacity: 0.9;
|
|
154
|
-
transform: translateX(8px);
|
|
155
193
|
}
|
|
156
194
|
to {
|
|
157
195
|
opacity: 1;
|
|
158
|
-
transform:
|
|
196
|
+
transform: perspective(1200px) translate3d(0, 0, 0) rotateX(0deg) rotateY(0deg)
|
|
197
|
+
rotateZ(0deg) scale(1);
|
|
159
198
|
}
|
|
160
199
|
}
|
|
161
|
-
|
|
162
|
-
@keyframes stalux-focus-home {
|
|
163
|
-
from {
|
|
164
|
-
opacity: 0.9;
|
|
165
|
-
transform: translateY(4px);
|
|
166
|
-
}
|
|
167
|
-
to {
|
|
168
|
-
opacity: 1;
|
|
169
|
-
transform: translateY(0);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
@keyframes stalux-focus-restore {
|
|
174
|
-
from {
|
|
175
|
-
opacity: 0.96;
|
|
176
|
-
}
|
|
177
|
-
to {
|
|
178
|
-
opacity: 1;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
|
|
182
200
|
/* Public transition helpers retain their names as opacity-only compatibility
|
|
183
201
|
frames. Theme layouts no longer use them to move large content/sidebars. */
|
|
184
202
|
@keyframes stalux-page-exit {
|
|
@@ -312,20 +330,24 @@ html[data-stalux-vt-preset="error"]::view-transition-new(stalux-focus) {
|
|
|
312
330
|
pointer-events: none;
|
|
313
331
|
}
|
|
314
332
|
|
|
315
|
-
/*
|
|
333
|
+
/* Phone routes keep direction and depth with smaller travel/angles. */
|
|
316
334
|
@media (max-width: 768px) {
|
|
317
|
-
html[data-stalux-vt-preset]
|
|
318
|
-
|
|
335
|
+
html[data-stalux-vt-preset]:not([data-stalux-vt-preset="none"]) {
|
|
336
|
+
--stalux-vt-distance: 20px;
|
|
337
|
+
--stalux-vt-tilt: 4deg;
|
|
338
|
+
}
|
|
339
|
+
html[data-stalux-vt-preset="restore"] {
|
|
340
|
+
--stalux-vt-x: 8px;
|
|
319
341
|
}
|
|
320
|
-
html[data-stalux-vt-preset="restore"]
|
|
321
|
-
|
|
342
|
+
html[data-stalux-vt-preset="restore"][data-stalux-vt-direction="back"],
|
|
343
|
+
html[data-stalux-vt-preset="restore"][data-stalux-vt-direction="backward"] {
|
|
344
|
+
--stalux-vt-x: -8px;
|
|
322
345
|
}
|
|
323
346
|
}
|
|
324
347
|
|
|
325
348
|
@media (prefers-reduced-motion: reduce) {
|
|
326
|
-
html[data-stalux-vt-preset]
|
|
327
|
-
|
|
328
|
-
[data-stalux-motion-focus][data-stalux-motion-visible="true"] {
|
|
349
|
+
html[data-stalux-vt-preset],
|
|
350
|
+
html[data-stalux-vt-preset] [data-astro-transition-persist] {
|
|
329
351
|
view-transition-name: none !important;
|
|
330
352
|
}
|
|
331
353
|
|
|
@@ -2,7 +2,9 @@ import { getRouteKind, normalizePublicPath } from "./public-routes";
|
|
|
2
2
|
|
|
3
3
|
export type RouteMotionPreset =
|
|
4
4
|
| "none"
|
|
5
|
-
| "
|
|
5
|
+
| "glide"
|
|
6
|
+
| "article"
|
|
7
|
+
| "panel"
|
|
6
8
|
| "enter"
|
|
7
9
|
| "up"
|
|
8
10
|
| "taxonomy"
|
|
@@ -42,14 +44,17 @@ export function getRouteMotionPreset(context: MotionContext): RouteMotionPreset
|
|
|
42
44
|
// Both directions restore an existing history entry. A push to a parent
|
|
43
45
|
// route is not a history traversal, and an article's previous/next is not back.
|
|
44
46
|
if (context.navigationType === "traverse") return "restore";
|
|
45
|
-
if (context.navigationType === "replace") return "
|
|
47
|
+
if (context.navigationType === "replace") return "glide";
|
|
46
48
|
if (target === "not-found") return "error";
|
|
47
|
-
if (source === "not-found") return "
|
|
49
|
+
if (source === "not-found") return "glide";
|
|
48
50
|
if (target === "home") return "home";
|
|
49
51
|
if (source === "article" && target === "article") {
|
|
50
|
-
return context.intent === "previous" || context.intent === "next"
|
|
52
|
+
return context.intent === "previous" || context.intent === "next"
|
|
53
|
+
? context.intent
|
|
54
|
+
: "article";
|
|
51
55
|
}
|
|
52
56
|
if (target === "article") return "enter";
|
|
57
|
+
if (target === "about" || target === "links" || target === "words") return "panel";
|
|
53
58
|
if (target === "tags-detail" || target === "categories-detail") return "taxonomy";
|
|
54
59
|
if (
|
|
55
60
|
(source === "article" &&
|
|
@@ -59,5 +64,5 @@ export function getRouteMotionPreset(context: MotionContext): RouteMotionPreset
|
|
|
59
64
|
) {
|
|
60
65
|
return "up";
|
|
61
66
|
}
|
|
62
|
-
return source === "home" ? "enter" : "
|
|
67
|
+
return source === "home" ? "enter" : "glide";
|
|
63
68
|
}
|