@xingwangzhe/stalux 1.31.4 → 1.33.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 +4 -0
- package/package.json +1 -1
- package/src/components/stalux/common/Weather.astro +140 -0
- package/src/components/stalux/layout/footer.astro +3 -0
- package/src/components/stalux/posts/ArticleSummary.astro +47 -0
- package/src/components/stalux/posts/postContent.astro +4 -0
- package/src/components/stalux/posts/postRight.astro +2 -0
- package/src/i18n/en.json +1 -0
- package/src/i18n/zh-CN.json +1 -0
- package/src/layouts/PostLayout.astro +2 -0
- package/src/pages/posts/[post].astro +1 -0
- package/src/schemas/config.ts +1 -0
- package/src/scripts/weather.ts +307 -0
- package/src/styles/content.css +7 -3
- package/src/styles/generated-article.css +1 -1
- package/src/styles/generated-prose.css +1 -1
- package/src/styles/generated.css +1 -1
- package/src/utils/config-utils.ts +5 -1
package/README.md
CHANGED
|
@@ -295,3 +295,7 @@ Stalux precompiles its UnoCSS styles; consuming projects need no UnoCSS dependen
|
|
|
295
295
|
Wide article pages use 280px sidebars within a layout up to 1920px wide, with 16px outer padding. Sidebars collapse below 1600px. UnoCSS remains the style builder; prose and integration styles use standard CSS, and build checks reject Tailwind variables and uncompiled directives.
|
|
296
296
|
|
|
297
297
|
The friend links list is up to 1600px wide with 16px horizontal padding. Cards fill their grid columns, with one to five columns depending on the viewport.
|
|
298
|
+
|
|
299
|
+
Article bodies and summary cards are up to 840px wide. Summaries use the existing post `desc` and are omitted when empty. Markdown blockquotes appear as callout cards without new configuration or syntax.
|
|
300
|
+
|
|
301
|
+
Visitor weather is optional: set `weather: { enabled: true }` in `stalux/config/site.yml` to show it as plain text in the footer (with visitor IP and approximate location) and below the desktop article clock. Omitted or `false` disables it. It automatically requests an approximate city from IP.SB (with IPinfo as fallback) and weather from Open-Meteo, only while visible; no browser GPS permission is requested. These external services receive the visitor IP, and Open-Meteo receives rounded coordinates. A 20-minute session cache stores the city, visitor IP and weather, without coordinates. Visitors behind VPNs may see the exit city. Hidden tabs, offscreen cards and Astro navigation stop work; unavailable services show a retry action and retain previous weather. Open-Meteo's free endpoint is for non-commercial use subject to its limits; the card links to its attribution licence. No server endpoint or extra package is needed.
|
package/package.json
CHANGED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { getCollection } from "astro:content";
|
|
3
|
+
import { CloudSun } from "@lucide/astro";
|
|
4
|
+
import { getSiteData } from "@utils/config-utils";
|
|
5
|
+
|
|
6
|
+
const site = getSiteData(await getCollection("config"));
|
|
7
|
+
interface Props {
|
|
8
|
+
showIp?: boolean;
|
|
9
|
+
}
|
|
10
|
+
const { showIp = false } = Astro.props;
|
|
11
|
+
const zh = (site.lang || "zh-CN").startsWith("zh");
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
{site.weather?.enabled && (
|
|
15
|
+
<section
|
|
16
|
+
class:list={["stalux-weather", { "stalux-weather-footer": showIp }]}
|
|
17
|
+
data-weather-placement={showIp ? "footer" : "sidebar"}
|
|
18
|
+
data-stalux-weather
|
|
19
|
+
data-lang={site.lang || "zh-CN"}
|
|
20
|
+
aria-label={zh ? "附近城市天气" : "Nearby weather"}
|
|
21
|
+
>
|
|
22
|
+
<div class="stalux-weather-heading">
|
|
23
|
+
<CloudSun size={18} aria-hidden="true" />
|
|
24
|
+
<span>{zh ? "附近天气" : "Nearby weather"}</span>
|
|
25
|
+
</div>
|
|
26
|
+
<p class="stalux-weather-main" data-weather-output role="status">
|
|
27
|
+
{zh ? "正在获取附近城市天气…" : "Loading nearby weather…"}
|
|
28
|
+
</p>
|
|
29
|
+
{showIp && (
|
|
30
|
+
<p class="stalux-weather-location" data-weather-location>
|
|
31
|
+
{zh ? "访客 IP 与位置加载中…" : "Loading visitor IP and location…"}
|
|
32
|
+
</p>
|
|
33
|
+
)}
|
|
34
|
+
<p class="stalux-weather-status" data-weather-status></p>
|
|
35
|
+
<button type="button" data-weather-retry hidden>
|
|
36
|
+
{zh ? "重试" : "Retry"}
|
|
37
|
+
</button>
|
|
38
|
+
<p class="stalux-weather-source">
|
|
39
|
+
{zh ? "IP 近似位置" : "Approximate IP location"} ·{" "}
|
|
40
|
+
<a href="https://open-meteo.com/en/licence" target="_blank" rel="noopener noreferrer">
|
|
41
|
+
Open-Meteo
|
|
42
|
+
</a>
|
|
43
|
+
</p>
|
|
44
|
+
<noscript>
|
|
45
|
+
<p>{zh ? "启用 JavaScript 后可显示天气。" : "Enable JavaScript to load weather."}</p>
|
|
46
|
+
</noscript>
|
|
47
|
+
</section>
|
|
48
|
+
)}
|
|
49
|
+
<script>
|
|
50
|
+
import { registerPageLifecycle } from "../../../scripts/page-runtime";
|
|
51
|
+
import { mountWeather } from "../../../scripts/weather";
|
|
52
|
+
|
|
53
|
+
registerPageLifecycle("weather", mountWeather);
|
|
54
|
+
</script>
|
|
55
|
+
<style>
|
|
56
|
+
.stalux-weather {
|
|
57
|
+
box-sizing: border-box;
|
|
58
|
+
width: 100%;
|
|
59
|
+
max-width: 360px;
|
|
60
|
+
margin: 1rem auto;
|
|
61
|
+
padding: 1rem;
|
|
62
|
+
border: 1px solid var(--white-10p);
|
|
63
|
+
border-radius: 12px;
|
|
64
|
+
background: var(--surface-glass);
|
|
65
|
+
overflow-wrap: anywhere;
|
|
66
|
+
text-align: left;
|
|
67
|
+
}
|
|
68
|
+
.stalux-weather-heading {
|
|
69
|
+
display: flex;
|
|
70
|
+
align-items: center;
|
|
71
|
+
gap: 0.5rem;
|
|
72
|
+
color: var(--accent-90p);
|
|
73
|
+
font-size: 0.85rem;
|
|
74
|
+
}
|
|
75
|
+
.stalux-weather-main {
|
|
76
|
+
margin: 0.75rem 0 0.4rem;
|
|
77
|
+
color: var(--white-95p);
|
|
78
|
+
font-size: 1rem;
|
|
79
|
+
line-height: 1.5;
|
|
80
|
+
}
|
|
81
|
+
.stalux-weather-location,
|
|
82
|
+
.stalux-weather-status,
|
|
83
|
+
.stalux-weather-source {
|
|
84
|
+
margin: 0.4rem 0 0;
|
|
85
|
+
color: var(--white-60p);
|
|
86
|
+
font-size: 0.75rem;
|
|
87
|
+
line-height: 1.5;
|
|
88
|
+
}
|
|
89
|
+
.stalux-weather-source a {
|
|
90
|
+
color: inherit;
|
|
91
|
+
}
|
|
92
|
+
.stalux-weather button {
|
|
93
|
+
margin-top: 0.5rem;
|
|
94
|
+
color: var(--accent-90p);
|
|
95
|
+
border: 1px solid var(--white-20p);
|
|
96
|
+
background: var(--white-05p);
|
|
97
|
+
border-radius: 6px;
|
|
98
|
+
padding: 0.3rem 0.6rem;
|
|
99
|
+
cursor: pointer;
|
|
100
|
+
}
|
|
101
|
+
.stalux-weather button[hidden] {
|
|
102
|
+
display: none;
|
|
103
|
+
}
|
|
104
|
+
.stalux-weather-footer {
|
|
105
|
+
max-width: 100%;
|
|
106
|
+
width: auto;
|
|
107
|
+
padding: 0;
|
|
108
|
+
margin: 0 auto;
|
|
109
|
+
border: 0;
|
|
110
|
+
border-radius: 0;
|
|
111
|
+
background: transparent;
|
|
112
|
+
text-align: center;
|
|
113
|
+
font-size: inherit;
|
|
114
|
+
line-height: 1.6;
|
|
115
|
+
display: flex;
|
|
116
|
+
flex-wrap: wrap;
|
|
117
|
+
justify-content: center;
|
|
118
|
+
gap: 0.3rem 0.75rem;
|
|
119
|
+
}
|
|
120
|
+
.stalux-weather-footer .stalux-weather-heading {
|
|
121
|
+
display: none;
|
|
122
|
+
}
|
|
123
|
+
.stalux-weather-footer .stalux-weather-main {
|
|
124
|
+
margin: 0;
|
|
125
|
+
font-size: inherit;
|
|
126
|
+
color: var(--white-80p);
|
|
127
|
+
}
|
|
128
|
+
.stalux-weather-footer .stalux-weather-location,
|
|
129
|
+
.stalux-weather-footer .stalux-weather-status,
|
|
130
|
+
.stalux-weather-footer .stalux-weather-source {
|
|
131
|
+
margin: 0;
|
|
132
|
+
color: var(--white-70p);
|
|
133
|
+
font-size: 0.8rem;
|
|
134
|
+
}
|
|
135
|
+
@media print {
|
|
136
|
+
.stalux-weather {
|
|
137
|
+
display: none;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
</style>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
import { getCollection } from "astro:content";
|
|
3
|
+
import Weather from "@components/stalux/common/Weather.astro";
|
|
3
4
|
import FooterBadges from "@components/stalux/footer/FooterBadges.astro";
|
|
4
5
|
import FooterBeian from "@components/stalux/footer/FooterBeian.astro";
|
|
5
6
|
import FooterCopyright from "@components/stalux/footer/FooterCopyright.astro";
|
|
@@ -76,6 +77,8 @@ const formattedWordCount = formatWordCount(totalWordCount, siteConfig.lang || "z
|
|
|
76
77
|
<!-- 站点统计 -->
|
|
77
78
|
<FooterStats wordCount={formattedWordCount} buildtime={footerConfig?.buildtime} />
|
|
78
79
|
|
|
80
|
+
<Weather showIp />
|
|
81
|
+
|
|
79
82
|
<!-- 自定义内容 -->
|
|
80
83
|
{footerConfig?.custom && <Fragment set:html={footerConfig.custom} />}
|
|
81
84
|
<BackToTop lang={siteConfig.lang || "zh-CN"} />
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
interface Props {
|
|
3
|
+
description?: string;
|
|
4
|
+
label: string;
|
|
5
|
+
}
|
|
6
|
+
const { description, label } = Astro.props;
|
|
7
|
+
const summary = description?.trim();
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
{summary && (
|
|
11
|
+
<aside class="stalux-article-summary" aria-label={label}>
|
|
12
|
+
<p class="stalux-article-summary-label">{label}</p>
|
|
13
|
+
<p class="stalux-article-summary-text">{summary}</p>
|
|
14
|
+
</aside>
|
|
15
|
+
)}
|
|
16
|
+
|
|
17
|
+
<style>
|
|
18
|
+
.stalux-article-summary {
|
|
19
|
+
box-sizing: border-box;
|
|
20
|
+
width: min(840px, 100%);
|
|
21
|
+
margin: 0 auto 2rem;
|
|
22
|
+
padding: 1.25rem 1.5rem;
|
|
23
|
+
border: 1px solid var(--accent-30p);
|
|
24
|
+
border-radius: 14px;
|
|
25
|
+
background: var(--surface-glass);
|
|
26
|
+
box-shadow: 0 4px 20px #0002;
|
|
27
|
+
overflow-wrap: anywhere;
|
|
28
|
+
}
|
|
29
|
+
.stalux-article-summary-label {
|
|
30
|
+
margin: 0 0 0.6rem;
|
|
31
|
+
font-size: 0.85rem;
|
|
32
|
+
font-weight: 600;
|
|
33
|
+
color: var(--accent-90p);
|
|
34
|
+
letter-spacing: 0.08em;
|
|
35
|
+
}
|
|
36
|
+
.stalux-article-summary-text {
|
|
37
|
+
margin: 0;
|
|
38
|
+
color: var(--white-85p);
|
|
39
|
+
font-size: 1rem;
|
|
40
|
+
line-height: 1.8;
|
|
41
|
+
}
|
|
42
|
+
@media (max-width: 480px) {
|
|
43
|
+
.stalux-article-summary {
|
|
44
|
+
padding: 1rem;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
</style>
|
|
@@ -7,9 +7,11 @@ import { getCollection } from "astro:content";
|
|
|
7
7
|
import { getPromoteData, getSiteData } from "@utils/config-utils";
|
|
8
8
|
import { createTranslator } from "@utils/i18n";
|
|
9
9
|
import { toMachineDateTime } from "@utils/semantic-time";
|
|
10
|
+
import ArticleSummary from "./ArticleSummary.astro";
|
|
10
11
|
|
|
11
12
|
interface Props {
|
|
12
13
|
title: string;
|
|
14
|
+
description?: string;
|
|
13
15
|
transitionName?: string;
|
|
14
16
|
titleTransitionName?: string;
|
|
15
17
|
date?: string;
|
|
@@ -102,6 +104,8 @@ const mdSourceUrl = exportMd ? `${Astro.url.pathname.replace(/\/$/, "")}.md` : "
|
|
|
102
104
|
)}
|
|
103
105
|
</header>
|
|
104
106
|
|
|
107
|
+
<ArticleSummary description={props.description} label={t("post.summary")} />
|
|
108
|
+
|
|
105
109
|
<!-- Article Body -->
|
|
106
110
|
<section class="stalux-post-body stalux-prose" data-pagefind-body>
|
|
107
111
|
<slot />
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
import "../../../styles/generated-article.css";
|
|
3
3
|
import PostDate from "@components/stalux/common/date.astro";
|
|
4
|
+
import Weather from "@components/stalux/common/Weather.astro";
|
|
4
5
|
import PostTaxonomy from "@components/stalux/posts/PostTaxonomy.astro";
|
|
5
6
|
import PostToc from "@components/stalux/posts/postToc.astro";
|
|
6
7
|
|
|
@@ -22,6 +23,7 @@ const { headings = [], tags = [], categories = [] } = Astro.props;
|
|
|
22
23
|
>
|
|
23
24
|
<div class="stalux-sidebar-container">
|
|
24
25
|
<PostDate />
|
|
26
|
+
<Weather />
|
|
25
27
|
</div>
|
|
26
28
|
<div class="stalux-sidebar-container">
|
|
27
29
|
<PostToc headings={headings} />
|
package/src/i18n/en.json
CHANGED
package/src/i18n/zh-CN.json
CHANGED
|
@@ -13,6 +13,7 @@ import { buildWalineProps } from "@utils/waline";
|
|
|
13
13
|
|
|
14
14
|
interface Props {
|
|
15
15
|
title: string;
|
|
16
|
+
description?: string;
|
|
16
17
|
postId?: string | number;
|
|
17
18
|
date?: string;
|
|
18
19
|
updated?: string;
|
|
@@ -58,6 +59,7 @@ const walineConfig = walineSection?.serverURL
|
|
|
58
59
|
<!-- Main Content -->
|
|
59
60
|
<PostContent
|
|
60
61
|
title={props.title}
|
|
62
|
+
description={props.description}
|
|
61
63
|
titleTransitionName={props.postId === undefined ? undefined : getPostTitleTransitionName(props.postId)}
|
|
62
64
|
date={props.date}
|
|
63
65
|
updated={props.updated}
|
package/src/schemas/config.ts
CHANGED
|
@@ -23,6 +23,7 @@ export const siteSchema = z.object({
|
|
|
23
23
|
.default("#EAB308"),
|
|
24
24
|
seoTitle: z.string().min(1).optional(),
|
|
25
25
|
timezone: z.string().optional().default("Asia/Shanghai"),
|
|
26
|
+
weather: z.object({ enabled: z.boolean().optional().default(false) }).optional(),
|
|
26
27
|
canonical: z.url("site.canonical must be a valid URL").optional(),
|
|
27
28
|
twitterSite: z.string().optional(),
|
|
28
29
|
noindex: z.boolean().optional().default(false),
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
export const WEATHER_TTL = 20 * 60 * 1000;
|
|
2
|
+
const CACHE_KEY = "stalux-weather-v1";
|
|
3
|
+
export interface WeatherData {
|
|
4
|
+
city: string;
|
|
5
|
+
ip?: string;
|
|
6
|
+
temperature: number;
|
|
7
|
+
apparent: number;
|
|
8
|
+
code: number;
|
|
9
|
+
updated: number;
|
|
10
|
+
}
|
|
11
|
+
export type WeatherState = { status: "loading" | "ready" | "error"; data?: WeatherData };
|
|
12
|
+
type Listener = (state: WeatherState) => void;
|
|
13
|
+
|
|
14
|
+
function validData(value: unknown): value is WeatherData {
|
|
15
|
+
if (!value || typeof value !== "object") return false;
|
|
16
|
+
const data = value as WeatherData;
|
|
17
|
+
return (
|
|
18
|
+
typeof data.city === "string" &&
|
|
19
|
+
data.city.length > 0 &&
|
|
20
|
+
data.city.length < 160 &&
|
|
21
|
+
(data.ip === undefined ||
|
|
22
|
+
(typeof data.ip === "string" &&
|
|
23
|
+
data.ip.length <= 45 &&
|
|
24
|
+
/^[0-9a-f:.]+$/i.test(data.ip))) &&
|
|
25
|
+
[data.temperature, data.apparent, data.code, data.updated].every(Number.isFinite)
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function createWeatherClient({
|
|
30
|
+
fetcher = fetch,
|
|
31
|
+
storage,
|
|
32
|
+
now = Date.now,
|
|
33
|
+
}: {
|
|
34
|
+
fetcher?: typeof fetch;
|
|
35
|
+
storage?: Pick<Storage, "getItem" | "setItem">;
|
|
36
|
+
now?: () => number;
|
|
37
|
+
} = {}) {
|
|
38
|
+
const listeners = new Set<Listener>();
|
|
39
|
+
let data: WeatherData | undefined;
|
|
40
|
+
let controller: AbortController | undefined;
|
|
41
|
+
let timer: ReturnType<typeof setTimeout> | undefined;
|
|
42
|
+
let generation = 0;
|
|
43
|
+
try {
|
|
44
|
+
const cached: unknown = JSON.parse(storage?.getItem(CACHE_KEY) ?? "null");
|
|
45
|
+
if (validData(cached) && cached.updated <= now()) data = cached;
|
|
46
|
+
} catch {
|
|
47
|
+
/* Storage is optional. */
|
|
48
|
+
}
|
|
49
|
+
const emit = (status: WeatherState["status"]) => {
|
|
50
|
+
for (const listener of listeners) listener({ status, data });
|
|
51
|
+
};
|
|
52
|
+
const stop = () => {
|
|
53
|
+
generation++;
|
|
54
|
+
controller?.abort();
|
|
55
|
+
controller = undefined;
|
|
56
|
+
clearTimeout(timer);
|
|
57
|
+
timer = undefined;
|
|
58
|
+
};
|
|
59
|
+
const refresh = async (force = false) => {
|
|
60
|
+
if (!listeners.size || controller) return;
|
|
61
|
+
clearTimeout(timer);
|
|
62
|
+
if (!force && data && now() - data.updated < WEATHER_TTL) {
|
|
63
|
+
emit("ready");
|
|
64
|
+
timer = setTimeout(() => void refresh(), WEATHER_TTL - (now() - data.updated));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const token = ++generation;
|
|
68
|
+
const request = new AbortController();
|
|
69
|
+
controller = request;
|
|
70
|
+
const timeout = setTimeout(() => request.abort(), 10000);
|
|
71
|
+
timer = timeout;
|
|
72
|
+
emit("loading");
|
|
73
|
+
try {
|
|
74
|
+
const get = async (url: string) => {
|
|
75
|
+
if (request.signal.aborted) throw new Error("Request cancelled");
|
|
76
|
+
const response = await fetcher(url, {
|
|
77
|
+
signal: request.signal,
|
|
78
|
+
credentials: "omit",
|
|
79
|
+
referrerPolicy: "no-referrer",
|
|
80
|
+
});
|
|
81
|
+
if (request.signal.aborted || !response.ok)
|
|
82
|
+
throw new Error("Weather service unavailable");
|
|
83
|
+
return response.json();
|
|
84
|
+
};
|
|
85
|
+
const validateLocation = (location: {
|
|
86
|
+
city?: unknown;
|
|
87
|
+
latitude?: unknown;
|
|
88
|
+
longitude?: unknown;
|
|
89
|
+
ip?: unknown;
|
|
90
|
+
error?: unknown;
|
|
91
|
+
}) => {
|
|
92
|
+
const lat = location.latitude;
|
|
93
|
+
const lon = location.longitude;
|
|
94
|
+
if (
|
|
95
|
+
location.error ||
|
|
96
|
+
typeof location.city !== "string" ||
|
|
97
|
+
!location.city.trim() ||
|
|
98
|
+
typeof lat !== "number" ||
|
|
99
|
+
typeof lon !== "number" ||
|
|
100
|
+
!Number.isFinite(lat) ||
|
|
101
|
+
!Number.isFinite(lon) ||
|
|
102
|
+
Math.abs(lat) > 90 ||
|
|
103
|
+
Math.abs(lon) > 180
|
|
104
|
+
)
|
|
105
|
+
throw new Error("Invalid approximate location");
|
|
106
|
+
const ip =
|
|
107
|
+
typeof location.ip === "string" &&
|
|
108
|
+
location.ip.length <= 45 &&
|
|
109
|
+
/^[0-9a-f:.]+$/i.test(location.ip)
|
|
110
|
+
? location.ip
|
|
111
|
+
: undefined;
|
|
112
|
+
return { city: location.city.trim(), lat, lon, ip };
|
|
113
|
+
};
|
|
114
|
+
let location: ReturnType<typeof validateLocation>;
|
|
115
|
+
try {
|
|
116
|
+
location = validateLocation(await get("https://api.ip.sb/geoip"));
|
|
117
|
+
} catch {
|
|
118
|
+
const info = await get("https://ipinfo.io/json");
|
|
119
|
+
const coordinates = typeof info.loc === "string" ? info.loc.split(",") : [];
|
|
120
|
+
location = validateLocation({
|
|
121
|
+
city: info.city,
|
|
122
|
+
ip: info.ip,
|
|
123
|
+
latitude:
|
|
124
|
+
coordinates.length === 2 && coordinates[0]?.trim()
|
|
125
|
+
? Number(coordinates[0])
|
|
126
|
+
: undefined,
|
|
127
|
+
longitude:
|
|
128
|
+
coordinates.length === 2 && coordinates[1]?.trim()
|
|
129
|
+
? Number(coordinates[1])
|
|
130
|
+
: undefined,
|
|
131
|
+
error: info.error,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
const { lat, lon } = location;
|
|
135
|
+
const url = new URL("https://api.open-meteo.com/v1/forecast");
|
|
136
|
+
url.search = new URLSearchParams({
|
|
137
|
+
latitude: lat.toFixed(2),
|
|
138
|
+
longitude: lon.toFixed(2),
|
|
139
|
+
current: "temperature_2m,apparent_temperature,weather_code",
|
|
140
|
+
timezone: "auto",
|
|
141
|
+
forecast_days: "1",
|
|
142
|
+
}).toString();
|
|
143
|
+
const weather = await get(url.href);
|
|
144
|
+
const current = weather.current;
|
|
145
|
+
const next: WeatherData = {
|
|
146
|
+
city: location.city.trim(),
|
|
147
|
+
ip: location.ip,
|
|
148
|
+
temperature: current?.temperature_2m,
|
|
149
|
+
apparent: current?.apparent_temperature,
|
|
150
|
+
code: current?.weather_code,
|
|
151
|
+
updated: now(),
|
|
152
|
+
};
|
|
153
|
+
if (!validData(next)) throw new Error("Invalid weather response");
|
|
154
|
+
if (token !== generation || request.signal.aborted) return;
|
|
155
|
+
data = next;
|
|
156
|
+
try {
|
|
157
|
+
storage?.setItem(CACHE_KEY, JSON.stringify(data));
|
|
158
|
+
} catch {
|
|
159
|
+
/* Private browsing. */
|
|
160
|
+
}
|
|
161
|
+
emit("ready");
|
|
162
|
+
timer = setTimeout(() => void refresh(), WEATHER_TTL);
|
|
163
|
+
} catch {
|
|
164
|
+
if (token === generation) emit("error");
|
|
165
|
+
} finally {
|
|
166
|
+
clearTimeout(timeout);
|
|
167
|
+
if (token === generation) controller = undefined;
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
return {
|
|
171
|
+
subscribe(listener: Listener) {
|
|
172
|
+
listeners.add(listener);
|
|
173
|
+
void refresh();
|
|
174
|
+
return () => {
|
|
175
|
+
listeners.delete(listener);
|
|
176
|
+
if (!listeners.size) stop();
|
|
177
|
+
};
|
|
178
|
+
},
|
|
179
|
+
refresh: () => void refresh(true),
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export function weatherDescription(code: number, lang: string): string {
|
|
184
|
+
const zh = lang.startsWith("zh");
|
|
185
|
+
const labels = zh
|
|
186
|
+
? ["晴", "少云", "多云", "阴", "雾", "毛毛雨", "雨", "雪", "雷雨", "天气未知"]
|
|
187
|
+
: [
|
|
188
|
+
"Clear",
|
|
189
|
+
"Mostly clear",
|
|
190
|
+
"Partly cloudy",
|
|
191
|
+
"Overcast",
|
|
192
|
+
"Fog",
|
|
193
|
+
"Drizzle",
|
|
194
|
+
"Rain",
|
|
195
|
+
"Snow",
|
|
196
|
+
"Thunderstorm",
|
|
197
|
+
"Unknown",
|
|
198
|
+
];
|
|
199
|
+
const index =
|
|
200
|
+
code === 0
|
|
201
|
+
? 0
|
|
202
|
+
: code === 1
|
|
203
|
+
? 1
|
|
204
|
+
: code === 2
|
|
205
|
+
? 2
|
|
206
|
+
: code === 3
|
|
207
|
+
? 3
|
|
208
|
+
: [45, 48].includes(code)
|
|
209
|
+
? 4
|
|
210
|
+
: [51, 53, 55, 56, 57].includes(code)
|
|
211
|
+
? 5
|
|
212
|
+
: [61, 63, 65, 66, 67, 80, 81, 82].includes(code)
|
|
213
|
+
? 6
|
|
214
|
+
: [71, 73, 75, 77, 85, 86].includes(code)
|
|
215
|
+
? 7
|
|
216
|
+
: [95, 96, 99].includes(code)
|
|
217
|
+
? 8
|
|
218
|
+
: 9;
|
|
219
|
+
return labels[index] ?? labels[9] ?? "Unknown";
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
let client: ReturnType<typeof createWeatherClient> | undefined;
|
|
223
|
+
export function mountWeather() {
|
|
224
|
+
const elements = [...document.querySelectorAll<HTMLElement>("[data-stalux-weather]")];
|
|
225
|
+
if (!elements.length) return;
|
|
226
|
+
if (!client) {
|
|
227
|
+
let storage: Storage | undefined;
|
|
228
|
+
try {
|
|
229
|
+
storage = sessionStorage;
|
|
230
|
+
} catch {
|
|
231
|
+
/* Storage may be disabled. */
|
|
232
|
+
}
|
|
233
|
+
client = createWeatherClient({ storage });
|
|
234
|
+
}
|
|
235
|
+
const shared = client;
|
|
236
|
+
const cleanups = elements.map((element) => {
|
|
237
|
+
const output = element.querySelector<HTMLElement>("[data-weather-output]");
|
|
238
|
+
const locationOutput = element.querySelector<HTMLElement>("[data-weather-location]");
|
|
239
|
+
const status = element.querySelector<HTMLElement>("[data-weather-status]");
|
|
240
|
+
const retry = element.querySelector<HTMLButtonElement>("[data-weather-retry]");
|
|
241
|
+
if (!output || !status || !retry) return () => {};
|
|
242
|
+
const zh = (element.dataset.lang ?? "zh-CN").startsWith("zh");
|
|
243
|
+
let visible = !globalThis.IntersectionObserver;
|
|
244
|
+
let unsubscribe: (() => void) | undefined;
|
|
245
|
+
const render: Listener = ({ status: state, data }) => {
|
|
246
|
+
element.dataset.weatherState = state;
|
|
247
|
+
retry.hidden = state !== "error";
|
|
248
|
+
output.textContent = data
|
|
249
|
+
? `${locationOutput ? (zh ? "天气:" : "Weather: ") : ""}${data.city} · ${weatherDescription(data.code, element.dataset.lang ?? "zh-CN")} · ${Math.round(data.temperature)}°C`
|
|
250
|
+
: zh
|
|
251
|
+
? "正在获取附近城市天气…"
|
|
252
|
+
: "Loading nearby weather…";
|
|
253
|
+
if (locationOutput)
|
|
254
|
+
locationOutput.textContent = data
|
|
255
|
+
? `${zh ? "位置" : "Location"}:${data.city} · IP:${data.ip || (zh ? "暂不可用" : "Unavailable")}`
|
|
256
|
+
: zh
|
|
257
|
+
? "访客 IP 与位置暂不可用"
|
|
258
|
+
: "Visitor IP and location unavailable";
|
|
259
|
+
status.textContent =
|
|
260
|
+
state === "error"
|
|
261
|
+
? data
|
|
262
|
+
? zh
|
|
263
|
+
? "更新失败,显示上次天气"
|
|
264
|
+
: "Update failed; showing last weather"
|
|
265
|
+
: zh
|
|
266
|
+
? "请稍后重试"
|
|
267
|
+
: "Please try again later"
|
|
268
|
+
: state === "loading"
|
|
269
|
+
? zh
|
|
270
|
+
? "正在更新"
|
|
271
|
+
: "Updating"
|
|
272
|
+
: data
|
|
273
|
+
? `${zh ? "体感" : "Feels like"} ${Math.round(data.apparent)}°C · ${new Date(data.updated).toLocaleTimeString(zh ? "zh-CN" : "en", { hour: "2-digit", minute: "2-digit" })}`
|
|
274
|
+
: "";
|
|
275
|
+
if (state === "error" && !data)
|
|
276
|
+
output.textContent = zh ? "天气暂不可用" : "Weather unavailable";
|
|
277
|
+
};
|
|
278
|
+
const update = () => {
|
|
279
|
+
if (visible && !document.hidden) {
|
|
280
|
+
if (!unsubscribe) unsubscribe = shared.subscribe(render);
|
|
281
|
+
} else {
|
|
282
|
+
unsubscribe?.();
|
|
283
|
+
unsubscribe = undefined;
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
const observer = globalThis.IntersectionObserver
|
|
287
|
+
? new IntersectionObserver((entries) => {
|
|
288
|
+
visible = entries.some((entry) => entry.isIntersecting);
|
|
289
|
+
update();
|
|
290
|
+
})
|
|
291
|
+
: undefined;
|
|
292
|
+
observer?.observe(element);
|
|
293
|
+
const refresh = () => shared.refresh();
|
|
294
|
+
retry.addEventListener("click", refresh);
|
|
295
|
+
document.addEventListener("visibilitychange", update);
|
|
296
|
+
update();
|
|
297
|
+
return () => {
|
|
298
|
+
unsubscribe?.();
|
|
299
|
+
observer?.disconnect();
|
|
300
|
+
retry.removeEventListener("click", refresh);
|
|
301
|
+
document.removeEventListener("visibilitychange", update);
|
|
302
|
+
};
|
|
303
|
+
});
|
|
304
|
+
return () => {
|
|
305
|
+
for (const cleanup of cleanups) cleanup();
|
|
306
|
+
};
|
|
307
|
+
}
|
package/src/styles/content.css
CHANGED
|
@@ -223,9 +223,13 @@
|
|
|
223
223
|
margin: var(--space-xl) 0;
|
|
224
224
|
padding: 1rem 1.5rem;
|
|
225
225
|
border-left: 4px solid var(--accent-60p);
|
|
226
|
-
background: var(--
|
|
227
|
-
border-
|
|
228
|
-
|
|
226
|
+
background: var(--surface-glass);
|
|
227
|
+
border-top: 1px solid var(--white-10p);
|
|
228
|
+
border-right: 1px solid var(--white-10p);
|
|
229
|
+
border-bottom: 1px solid var(--white-10p);
|
|
230
|
+
border-radius: 12px;
|
|
231
|
+
box-shadow: 0 4px 16px #0002;
|
|
232
|
+
color: var(--white-85p);
|
|
229
233
|
}
|
|
230
234
|
|
|
231
235
|
.stalux-prose blockquote p {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
@layer theme, base, components, utilities;
|
|
2
|
-
@layer components{.stalux-article{box-shadow:var(--surface-glass-shadow);box-sizing:border-box;background:var(--surface-glass);border-radius:18px;flex-direction:column;flex:1;width:100%;min-width:0;max-width:100%;min-height:100vh;padding:clamp(1rem,2vw,2rem);display:flex}.stalux-byline-author-bio{border-top:var(--border-thin) solid var(--white-10p);margin:var(--space-md) 0 0;width:100%;padding-top:var(--space-md);text-align:center;color:var(--white-70p);line-height:1.6;font-size:var(--font-size-small)}.stalux-byline-author-card{background:var(--black-05p);border-radius:var(--radius-lg);padding:var(--space-md);box-shadow:var(--card-box-shadow);flex-direction:column;display:flex}.stalux-license-box{border:var(--border-thin) solid var(--white-20p);margin:var(--space-lg) auto;border-radius:var(--radius-md);background-color:var(--black-10p);max-width:80%;padding:var(--space-lg);position:relative;overflow:hidden}.stalux-license-watermark{opacity:.15;transition:opacity var(--transition-normal);pointer-events:none;z-index:1;position:absolute;bottom:.5rem;right:.5rem}.stalux-pagination{border-top:var(--border-thin) solid var(--white-20p);border-bottom:var(--border-thin) solid var(--white-20p);margin:var(--space-lg) 0;width:100%;padding-top:var(--space-lg);padding-bottom:var(--space-lg)}.stalux-pagination-arrow{color:var(--white-70p);flex-shrink:0;justify-content:center;align-items:center;transition:translate .18s;display:flex}.stalux-pagination-label{margin-bottom:var(--space-xs);color:var(--accent-90p);font-weight:500;font-size:var(--font-size-small)}.stalux-pagination-link{background:var(--black-10p);outline:1px solid var(--white-10p);outline-offset:0;box-shadow:var(--shadow-sidebar);box-sizing:border-box;align-items:center;gap:var(--space-sm);border-radius:var(--radius-md);min-width:0;padding:var(--space-md);color:var(--white-90p);flex:1 1 0;text-decoration:none;transition:background-color .18s,outline-color .18s;display:flex;position:relative}.stalux-pagination-title{text-overflow:ellipsis;white-space:nowrap;max-width:100%;color:var(--white-90p);font-size:var(--font-size-base);overflow:hidden}.stalux-post-article-footer{border-top:1px solid var(--white-10p);margin-top:3rem;padding-top:2rem;animation:.22s .36s both stalux-post-content-reveal}.stalux-post-article-header{border-bottom:1px solid var(--white-10p);margin-bottom:3rem;padding-bottom:2rem;animation:.22s .36s both stalux-post-content-reveal}.stalux-post-body{box-sizing:border-box;flex:1;width:min(1200px,100%);min-width:0;max-width:100%;margin:0 auto;padding:0 0 2rem;animation:.22s .36s both stalux-post-content-reveal}.stalux-post-layout{box-sizing:border-box;flex:1;grid-template-columns:280px minmax(0,1fr) 280px;gap:1.5rem;width:100%;min-width:0;max-width:1920px;margin:0 auto;padding:1.5rem 1rem;display:grid}.stalux-post-meta-item{transition:color var(--transition-fast);align-items:center;gap:.5rem;display:inline-flex}.stalux-post-meta-row{flex-basis:100%;justify-content:center;display:flex}.stalux-post-metadata{color:#ffffffb3;flex-wrap:wrap;justify-content:center;gap:1.5rem;font-size:.95rem;display:flex}.stalux-post-page-stats{border-top:1px solid var(--white-10p);color:#ffffffb3;justify-content:center;align-items:center;gap:1rem;margin-top:1rem;padding-top:.8rem;font-size:.9rem;display:flex}.stalux-post-reading-time{align-items:center;gap:.3rem;display:inline-flex}.stalux-post-source-link{background:var(--white-10p);border-top:1px solid var(--white-20p);border-right:1px solid var(--white-20p);border-left:1px solid var(--white-20p);transition:background var(--transition-fast), transform var(--transition-fast);border-radius:var(--radius-full,999px);color:var(--white-full);border-bottom:0;align-items:center;gap:.4rem;padding:.5rem 1.1rem;font-size:.85rem;font-weight:500;text-decoration:none;display:inline-flex}.stalux-post-taxonomy-item-column{background:var(--white-05p);border-left:var(--border-thick) solid var(--accent-60p);transition:color var(--transition-medium), transform var(--transition-medium);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:var(--space-sm) var(--space-xs);color:var(--white-80p);font-size:var(--font-size-small);text-decoration:none;display:inline-flex;transform:translate(0)}.stalux-post-taxonomy-item-pill{background:var(--white-10p);transition:color var(--transition-medium), transform var(--transition-medium);white-space:nowrap;border-radius:var(--radius-full);color:var(--white-85p);font-size:var(--font-size-smaller);border:none;padding:.4rem .8rem;text-decoration:none;display:inline-block;transform:translateY(0)}.stalux-post-taxonomy-title{border-bottom:var(--border-thin) solid var(--white-20p);padding-bottom:var(--space-sm);color:var(--white-90p);font-weight:600;font-size:var(--font-size-base);margin:0}.stalux-post-title{word-break:break-word;text-align:center;color:var(--white-full);text-shadow:var(--stalux-text-shadow);margin:0 0 1.5rem;font-size:2.5rem;font-weight:700;line-height:1.2}.stalux-random-container{transition:background-color .3s,border-color .3s}.stalux-random-header{border-bottom:2px solid #0000000d;justify-content:space-between;align-items:center;margin-bottom:1em;padding-bottom:.75em;display:flex}.stalux-random-list{flex-direction:column;gap:.75em;margin:0;padding:0;list-style-type:none;transition:opacity .3s;display:flex}.stalux-random-refresh{cursor:pointer;width:2em;height:2em;color:var(--foreground-60p,#333);background:0 0;border:none;border-radius:.375em;justify-content:center;align-items:center;padding:0;transition:color .2s;display:flex}.stalux-sidebar-container{box-shadow:var(--surface-glass-shadow);padding:var(--space-md);background:var(--surface-glass);border-radius:14px;flex-direction:column;transition:box-shadow .22s,background-color .22s;display:flex}.stalux-sidebar-right{scroll-padding-bottom:8rem}.stalux-toc-item{border-left:var(--border-thick) solid transparent;transition:color var(--transition-medium), background-color var(--transition-medium), border-left-color var(--transition-medium), transform var(--transition-medium);word-break:break-word;border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:var(--space-sm) var(--space-xs);color:var(--white-70p);line-height:1.4;font-size:var(--font-size-small);text-decoration:none;display:block}.stalux-toc-title{border-bottom:var(--border-thin) solid var(--white-20p);margin:0 0 var(--space-xs);padding-bottom:var(--space-sm);color:var(--white-90p);font-weight:600;font-size:var(--font-size-base)}.stalux-license-content{z-index:2;position:relative}.stalux-random-title{color:var(--foreground-60p,#333);margin:0;font-size:1.1em;font-weight:600}.stalux-toc-list{gap:var(--space-sm);flex-direction:column;margin:0;padding:0;list-style-type:none;display:flex}.stalux-license-title{margin-top:0;margin-bottom:var(--space-sm);color:var(--white-90p);font-size:var(--font-size-subtitle)}.stalux-post-source-link-row{justify-content:center;margin-top:1.2rem;display:flex}.stalux-byline-author-section{width:100%}.stalux-license-icon{justify-content:center;align-items:center;width:120px;height:120px;display:flex}.stalux-pagination-content{flex-direction:column;min-width:0;display:flex;overflow:hidden}.stalux-post-page{flex-direction:column;width:100%;min-height:100vh;display:flex}.stalux-byline-sidebar-container,.stalux-post-footer-content{gap:var(--space-lg);flex-direction:column;display:flex}.stalux-pagination-inner{justify-content:space-between;gap:var(--space-md);display:flex}.stalux-post-taxonomy-container{gap:var(--space-xs);flex-direction:column;display:flex}.stalux-post-taxonomy-list-column{flex-direction:column}.stalux-post-taxonomy-list-wrap{flex-wrap:wrap}.stalux-post-taxonomy-empty{padding:var(--space-md) 0;text-align:center;color:var(--white-50p);font-size:var(--font-size-small)}.stalux-random-error{color:var(--accent-60p,#e74c3c)}.stalux-toc-empty{color:var(--white-60p);font-size:var(--font-size-small)}.stalux-sidebar .stalux-author-figure,.stalux-post-layout>:first-child,.stalux-post-layout>:nth-child(3){margin:0}.stalux-sidebar .stalux-author-figure figcaption{font-size:1.75rem}.stalux-sidebar-right #stalux-date-date-time #stalux-date-date{white-space:nowrap;font-size:1.5rem}.stalux-sidebar-right #stalux-date-date-time #stalux-date-time{white-space:nowrap;font-size:2.25rem}.stalux-random-refresh:active{opacity:.7}.stalux-random-refresh svg{width:1em;height:1em}.stalux-random-refresh.stalux-random-rotating svg{animation:.6s linear stalux-random-spin}.stalux-random-loading,.stalux-random-error,.stalux-random-no-more{text-align:center;color:var(--foreground-60p,#666);padding:1em;font-size:.95em}.stalux-random-list>li>a{color:var(--foreground-60p,#333);word-break:break-word;background:0 0;border-radius:.375em;padding:.75em 1em;text-decoration:none;transition:color .2s,transform .2s;display:block}.stalux-random-list>li>a:active,.stalux-post-taxonomy-item-column:active,.stalux-post-taxonomy-item-pill:active{background:var(--white-05p)}.stalux-toc-item:active,.stalux-toc-item.stalux-toc-active{color:var(--accent-90p);background-color:var(--accent-20p);border-left-color:var(--accent-80p);font-weight:500}.stalux-toc-depth-1{padding-left:var(--space-xs)}.stalux-toc-depth-2{padding-left:var(--space-lg);font-size:var(--font-size-smaller)}.stalux-toc-depth-3{font-size:var(--font-size-tiny);padding-left:2.25rem}.stalux-toc-depth-4,.stalux-toc-depth-5,.stalux-toc-depth-6{padding-left:var(--space-2xl);color:var(--white-60p);font-size:.75rem}:is(.stalux-post-taxonomy-list,.stalux-post-taxonomy-list-column,.stalux-post-taxonomy-list-wrap){gap:var(--space-sm);display:flex}:is(.stalux-sidebar,.stalux-sidebar-right){box-sizing:border-box;gap:var(--space-lg);width:100%;min-width:0;height:fit-content;max-height:calc(100vh - 40px);padding:var(--space-lg) 0;scrollbar-width:none;-ms-overflow-style:none;flex-direction:column;display:flex;position:sticky;top:20px;overflow-y:auto}.stalux-pagination-link:before,.stalux-pagination-link:after{display:none}:is(.stalux-sidebar,.stalux-sidebar-right)::-webkit-scrollbar{display:none}a.stalux-pagination-link:focus-visible{background:var(--white-05p);outline-color:var(--accent-50p);outline:2px solid var(--stalux-accent-color);outline-offset:3px}a.stalux-pagination-prev-post:focus-visible .stalux-pagination-arrow{translate:-2px}a.stalux-pagination-next-post:focus-visible .stalux-pagination-arrow{translate:2px}.stalux-pagination-link.stalux-pagination-disabled{pointer-events:none;opacity:.5;cursor:not-allowed;background:var(--black-15p)}.stalux-pagination-link.stalux-pagination-prev-post{text-align:left;margin-left:var(--space-xs)}.stalux-pagination-link.stalux-pagination-next-post{text-align:right;margin-right:var(--space-xs);justify-content:flex-end}.stalux-post-layout>:nth-child(2){min-width:0;margin:0}.stalux-post-layout :focus-visible{outline:2px solid var(--accent-80p);outline-offset:2px}.stalux-post-page-stats span{align-items:center;gap:.3rem;display:inline-flex}#stalux-post-vercount_value_page_pv{color:#ffffffb3;font-weight:600}#stalux-post-vercount_container_page_pv{transition:opacity .3s}.stalux-post-source-link:focus,.stalux-post-source-link:active{background:var(--accent,#fff2);border-top-color:var(--accent,#fff4);border-right-color:var(--accent,#fff4);border-left-color:var(--accent,#fff4);text-decoration:none}.stalux-post-source-link:after{display:none!important}.stalux-license-author,.stalux-license-url,.stalux-license-license{margin:var(--space-sm) 0;line-height:1.6;font-size:var(--font-size-small);color:var(--white-80p)}.stalux-license-box a{color:var(--accent-90p);transition:color var(--transition-normal), border-bottom-color var(--transition-normal);border-bottom:1px dashed var(--accent-50p);padding-bottom:1px;text-decoration:none;position:relative}.stalux-license-box a:active{color:var(--accent-70p)}.stalux-license-icon svg{width:100%;height:100%;display:block}.stalux-license-icon path{color:var(--white-full);fill:currentColor}@media (hover:hover) and (pointer:fine){.stalux-random-refresh:hover{color:var(--accent-60p,#06c)}.stalux-random-list>li>a:hover,.stalux-toc-item:hover,.stalux-post-taxonomy-item-column:hover,.stalux-post-taxonomy-item-pill:hover{background:var(--white-05p)}a.stalux-pagination-link:hover{background:var(--white-05p);outline-color:var(--accent-50p)}a.stalux-pagination-prev-post:hover .stalux-pagination-arrow{translate:-2px}a.stalux-pagination-next-post:hover .stalux-pagination-arrow{translate:2px}.stalux-post-source-link:hover{background:var(--accent,#fff2);border-top-color:var(--accent,#fff4);border-right-color:var(--accent,#fff4);border-left-color:var(--accent,#fff4);text-decoration:none}.stalux-license-box a:hover{color:var(--stalux-accent-color);border-bottom-color:var(--accent-80p)}.stalux-license-box:hover .stalux-license-watermark{opacity:.25}}@media (prefers-color-scheme:dark){.stalux-random-header{border-bottom-color:#ffffff1a}.stalux-random-title,.stalux-random-refresh,.stalux-random-list>li>a{color:var(--foreground-60p,#e0e0e0)}.stalux-random-loading,.stalux-random-error,.stalux-random-no-more{color:var(--foreground-60p,#b0b0b0)}}@media (prefers-contrast:more){.stalux-post-layout{gap:2rem}}@media (width<=1599px){:is(.stalux-sidebar,.stalux-sidebar-right){display:none}.stalux-post-layout{grid-template-columns:minmax(0,1fr);max-width:1312px}}@media (width<=1024px){.stalux-post-title{font-size:2rem}.stalux-post-metadata{gap:1rem}}@media (width<=768px){:is(.stalux-sidebar,.stalux-sidebar-right),.stalux-sidebar-right{display:none}.stalux-pagination{margin:var(--space-md) 0}.stalux-pagination-inner{gap:var(--space-sm)}.stalux-pagination-link{padding:var(--space-sm) var(--space-md);flex-direction:column;justify-content:center;align-items:flex-start;min-height:120px}.stalux-pagination-link.stalux-pagination-next-post{align-items:flex-end}.stalux-pagination-arrow{transform:scale(.85)}.stalux-pagination-label{margin-bottom:var(--space-xs);font-size:.75rem}.stalux-pagination-title{max-width:100%;font-size:var(--font-size-small);white-space:normal}.stalux-post-page{padding:0}.stalux-post-layout{flex-direction:column;gap:2rem;margin:0;padding:0;display:flex}.stalux-post-layout>:nth-child(2){order:1}.stalux-post-layout>:first-child{order:2}.stalux-post-layout>:nth-child(3){order:3}.stalux-article{box-sizing:border-box;width:100%;box-shadow:none;background:0 0;margin:0;padding:clamp(1rem,2vw,2rem)}.stalux-post-body{width:100%;margin:0;padding:0 0 2rem}.stalux-post-article-header{margin-bottom:2rem;padding:1rem 1rem 0}.stalux-post-title{font-size:1.75rem}.stalux-post-metadata{flex-direction:column;gap:.75rem;font-size:.85rem}.stalux-post-article-footer{margin-top:2rem;padding-top:1.5rem}.stalux-post-page-stats{margin-top:.8rem;padding-top:.6rem;font-size:.85rem}.stalux-license-box{max-width:95%;padding:var(--space-md);margin:var(--space-md) auto}.stalux-license-title{margin-bottom:var(--space-xs);font-size:var(--font-size-base)}.stalux-license-author,.stalux-license-url,.stalux-license-license{margin:var(--space-xs) 0;font-size:.85rem}.stalux-license-icon{width:80px;height:80px}}@media (width<=480px){.stalux-pagination{margin:var(--space-md) 0}.stalux-pagination-inner{gap:var(--space-sm);flex-direction:column}.stalux-pagination-link{width:100%;padding:var(--space-sm) var(--space-md);justify-content:flex-start;align-items:center;gap:var(--space-md);flex-direction:row;min-height:100px}.stalux-pagination-link.stalux-pagination-prev-post,.stalux-pagination-link.stalux-pagination-next-post{text-align:left;align-items:center;margin-left:0;margin-right:0}.stalux-pagination-link.stalux-pagination-next-post{justify-content:flex-start}.stalux-pagination-title{white-space:normal}.stalux-post-layout{gap:1.25rem;padding:0}.stalux-license-box{max-width:100%;padding:var(--space-sm);margin:var(--space-md) 0}.stalux-license-title{margin-bottom:var(--space-2xs);font-size:var(--font-size-small)}.stalux-license-author,.stalux-license-url,.stalux-license-license{margin:var(--space-2xs) 0;font-size:.8rem}.stalux-license-icon{width:60px;height:60px}}@media (prefers-reduced-motion:reduce){.stalux-post-page *{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{.stalux-post-layout{grid-template-columns:1fr;gap:2rem}.stalux-post-layout>:first-child,.stalux-post-layout>:nth-child(3){display:none}}}@layer utilities,theme,base;
|
|
2
|
+
@layer components{.stalux-article{box-shadow:var(--surface-glass-shadow);box-sizing:border-box;background:var(--surface-glass);border-radius:18px;flex-direction:column;flex:1;width:100%;min-width:0;max-width:100%;min-height:100vh;padding:clamp(1rem,2vw,2rem);display:flex}.stalux-byline-author-bio{border-top:var(--border-thin) solid var(--white-10p);margin:var(--space-md) 0 0;width:100%;padding-top:var(--space-md);text-align:center;color:var(--white-70p);line-height:1.6;font-size:var(--font-size-small)}.stalux-byline-author-card{background:var(--black-05p);border-radius:var(--radius-lg);padding:var(--space-md);box-shadow:var(--card-box-shadow);flex-direction:column;display:flex}.stalux-license-box{border:var(--border-thin) solid var(--white-20p);margin:var(--space-lg) auto;border-radius:var(--radius-md);background-color:var(--black-10p);max-width:80%;padding:var(--space-lg);position:relative;overflow:hidden}.stalux-license-watermark{opacity:.15;transition:opacity var(--transition-normal);pointer-events:none;z-index:1;position:absolute;bottom:.5rem;right:.5rem}.stalux-pagination{border-top:var(--border-thin) solid var(--white-20p);border-bottom:var(--border-thin) solid var(--white-20p);margin:var(--space-lg) 0;width:100%;padding-top:var(--space-lg);padding-bottom:var(--space-lg)}.stalux-pagination-arrow{color:var(--white-70p);flex-shrink:0;justify-content:center;align-items:center;transition:translate .18s;display:flex}.stalux-pagination-label{margin-bottom:var(--space-xs);color:var(--accent-90p);font-weight:500;font-size:var(--font-size-small)}.stalux-pagination-link{background:var(--black-10p);outline:1px solid var(--white-10p);outline-offset:0;box-shadow:var(--shadow-sidebar);box-sizing:border-box;align-items:center;gap:var(--space-sm);border-radius:var(--radius-md);min-width:0;padding:var(--space-md);color:var(--white-90p);flex:1 1 0;text-decoration:none;transition:background-color .18s,outline-color .18s;display:flex;position:relative}.stalux-pagination-title{text-overflow:ellipsis;white-space:nowrap;max-width:100%;color:var(--white-90p);font-size:var(--font-size-base);overflow:hidden}.stalux-post-article-footer{border-top:1px solid var(--white-10p);margin-top:3rem;padding-top:2rem;animation:.22s .36s both stalux-post-content-reveal}.stalux-post-article-header{border-bottom:1px solid var(--white-10p);margin-bottom:3rem;padding-bottom:2rem;animation:.22s .36s both stalux-post-content-reveal}.stalux-post-body{box-sizing:border-box;flex:1;width:min(840px,100%);min-width:0;max-width:100%;margin:0 auto;padding:0 0 2rem;animation:.22s .36s both stalux-post-content-reveal}.stalux-post-layout{box-sizing:border-box;flex:1;grid-template-columns:280px minmax(0,1fr) 280px;gap:1.5rem;width:100%;min-width:0;max-width:1544px;margin:0 auto;padding:1.5rem 1rem;display:grid}.stalux-post-meta-item{transition:color var(--transition-fast);align-items:center;gap:.5rem;display:inline-flex}.stalux-post-meta-row{flex-basis:100%;justify-content:center;display:flex}.stalux-post-metadata{color:#ffffffb3;flex-wrap:wrap;justify-content:center;gap:1.5rem;font-size:.95rem;display:flex}.stalux-post-page-stats{border-top:1px solid var(--white-10p);color:#ffffffb3;justify-content:center;align-items:center;gap:1rem;margin-top:1rem;padding-top:.8rem;font-size:.9rem;display:flex}.stalux-post-reading-time{align-items:center;gap:.3rem;display:inline-flex}.stalux-post-source-link{background:var(--white-10p);border-top:1px solid var(--white-20p);border-right:1px solid var(--white-20p);border-left:1px solid var(--white-20p);transition:background var(--transition-fast), transform var(--transition-fast);border-radius:var(--radius-full,999px);color:var(--white-full);border-bottom:0;align-items:center;gap:.4rem;padding:.5rem 1.1rem;font-size:.85rem;font-weight:500;text-decoration:none;display:inline-flex}.stalux-post-taxonomy-item-column{background:var(--white-05p);border-left:var(--border-thick) solid var(--accent-60p);transition:color var(--transition-medium), transform var(--transition-medium);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:var(--space-sm) var(--space-xs);color:var(--white-80p);font-size:var(--font-size-small);text-decoration:none;display:inline-flex;transform:translate(0)}.stalux-post-taxonomy-item-pill{background:var(--white-10p);transition:color var(--transition-medium), transform var(--transition-medium);white-space:nowrap;border-radius:var(--radius-full);color:var(--white-85p);font-size:var(--font-size-smaller);border:none;padding:.4rem .8rem;text-decoration:none;display:inline-block;transform:translateY(0)}.stalux-post-taxonomy-title{border-bottom:var(--border-thin) solid var(--white-20p);padding-bottom:var(--space-sm);color:var(--white-90p);font-weight:600;font-size:var(--font-size-base);margin:0}.stalux-post-title{word-break:break-word;text-align:center;color:var(--white-full);text-shadow:var(--stalux-text-shadow);margin:0 0 1.5rem;font-size:2.5rem;font-weight:700;line-height:1.2}.stalux-random-container{transition:background-color .3s,border-color .3s}.stalux-random-header{border-bottom:2px solid #0000000d;justify-content:space-between;align-items:center;margin-bottom:1em;padding-bottom:.75em;display:flex}.stalux-random-list{flex-direction:column;gap:.75em;margin:0;padding:0;list-style-type:none;transition:opacity .3s;display:flex}.stalux-random-refresh{cursor:pointer;width:2em;height:2em;color:var(--foreground-60p,#333);background:0 0;border:none;border-radius:.375em;justify-content:center;align-items:center;padding:0;transition:color .2s;display:flex}.stalux-sidebar-container{box-shadow:var(--surface-glass-shadow);padding:var(--space-md);background:var(--surface-glass);border-radius:14px;flex-direction:column;transition:box-shadow .22s,background-color .22s;display:flex}.stalux-sidebar-right{scroll-padding-bottom:8rem}.stalux-toc-item{border-left:var(--border-thick) solid transparent;transition:color var(--transition-medium), background-color var(--transition-medium), border-left-color var(--transition-medium), transform var(--transition-medium);word-break:break-word;border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:var(--space-sm) var(--space-xs);color:var(--white-70p);line-height:1.4;font-size:var(--font-size-small);text-decoration:none;display:block}.stalux-toc-title{border-bottom:var(--border-thin) solid var(--white-20p);margin:0 0 var(--space-xs);padding-bottom:var(--space-sm);color:var(--white-90p);font-weight:600;font-size:var(--font-size-base)}.stalux-license-content{z-index:2;position:relative}.stalux-random-title{color:var(--foreground-60p,#333);margin:0;font-size:1.1em;font-weight:600}.stalux-toc-list{gap:var(--space-sm);flex-direction:column;margin:0;padding:0;list-style-type:none;display:flex}.stalux-license-title{margin-top:0;margin-bottom:var(--space-sm);color:var(--white-90p);font-size:var(--font-size-subtitle)}.stalux-post-source-link-row{justify-content:center;margin-top:1.2rem;display:flex}.stalux-byline-author-section{width:100%}.stalux-license-icon{justify-content:center;align-items:center;width:120px;height:120px;display:flex}.stalux-pagination-content{flex-direction:column;min-width:0;display:flex;overflow:hidden}.stalux-post-page{flex-direction:column;width:100%;min-height:100vh;display:flex}.stalux-byline-sidebar-container,.stalux-post-footer-content{gap:var(--space-lg);flex-direction:column;display:flex}.stalux-pagination-inner{justify-content:space-between;gap:var(--space-md);display:flex}.stalux-post-taxonomy-container{gap:var(--space-xs);flex-direction:column;display:flex}.stalux-post-taxonomy-list-column{flex-direction:column}.stalux-post-taxonomy-list-wrap{flex-wrap:wrap}.stalux-post-taxonomy-empty{padding:var(--space-md) 0;text-align:center;color:var(--white-50p);font-size:var(--font-size-small)}.stalux-random-error{color:var(--accent-60p,#e74c3c)}.stalux-toc-empty{color:var(--white-60p);font-size:var(--font-size-small)}.stalux-sidebar .stalux-author-figure,.stalux-post-layout>:first-child,.stalux-post-layout>:nth-child(3){margin:0}.stalux-sidebar .stalux-author-figure figcaption{font-size:1.75rem}.stalux-sidebar-right #stalux-date-date-time #stalux-date-date{white-space:nowrap;font-size:1.5rem}.stalux-sidebar-right #stalux-date-date-time #stalux-date-time{white-space:nowrap;font-size:2.25rem}.stalux-random-refresh:active{opacity:.7}.stalux-random-refresh svg{width:1em;height:1em}.stalux-random-refresh.stalux-random-rotating svg{animation:.6s linear stalux-random-spin}.stalux-random-loading,.stalux-random-error,.stalux-random-no-more{text-align:center;color:var(--foreground-60p,#666);padding:1em;font-size:.95em}.stalux-random-list>li>a{color:var(--foreground-60p,#333);word-break:break-word;background:0 0;border-radius:.375em;padding:.75em 1em;text-decoration:none;transition:color .2s,transform .2s;display:block}.stalux-random-list>li>a:active,.stalux-post-taxonomy-item-column:active,.stalux-post-taxonomy-item-pill:active{background:var(--white-05p)}.stalux-toc-item:active,.stalux-toc-item.stalux-toc-active{color:var(--accent-90p);background-color:var(--accent-20p);border-left-color:var(--accent-80p);font-weight:500}.stalux-toc-depth-1{padding-left:var(--space-xs)}.stalux-toc-depth-2{padding-left:var(--space-lg);font-size:var(--font-size-smaller)}.stalux-toc-depth-3{font-size:var(--font-size-tiny);padding-left:2.25rem}.stalux-toc-depth-4,.stalux-toc-depth-5,.stalux-toc-depth-6{padding-left:var(--space-2xl);color:var(--white-60p);font-size:.75rem}:is(.stalux-post-taxonomy-list,.stalux-post-taxonomy-list-column,.stalux-post-taxonomy-list-wrap){gap:var(--space-sm);display:flex}:is(.stalux-sidebar,.stalux-sidebar-right){box-sizing:border-box;gap:var(--space-lg);width:100%;min-width:0;height:fit-content;max-height:calc(100vh - 40px);padding:var(--space-lg) 0;scrollbar-width:none;-ms-overflow-style:none;flex-direction:column;display:flex;position:sticky;top:20px;overflow-y:auto}.stalux-pagination-link:before,.stalux-pagination-link:after{display:none}:is(.stalux-sidebar,.stalux-sidebar-right)::-webkit-scrollbar{display:none}a.stalux-pagination-link:focus-visible{background:var(--white-05p);outline-color:var(--accent-50p);outline:2px solid var(--stalux-accent-color);outline-offset:3px}a.stalux-pagination-prev-post:focus-visible .stalux-pagination-arrow{translate:-2px}a.stalux-pagination-next-post:focus-visible .stalux-pagination-arrow{translate:2px}.stalux-pagination-link.stalux-pagination-disabled{pointer-events:none;opacity:.5;cursor:not-allowed;background:var(--black-15p)}.stalux-pagination-link.stalux-pagination-prev-post{text-align:left;margin-left:var(--space-xs)}.stalux-pagination-link.stalux-pagination-next-post{text-align:right;margin-right:var(--space-xs);justify-content:flex-end}.stalux-post-layout>:nth-child(2){min-width:0;margin:0}.stalux-post-layout :focus-visible{outline:2px solid var(--accent-80p);outline-offset:2px}.stalux-post-page-stats span{align-items:center;gap:.3rem;display:inline-flex}#stalux-post-vercount_value_page_pv{color:#ffffffb3;font-weight:600}#stalux-post-vercount_container_page_pv{transition:opacity .3s}.stalux-post-source-link:focus,.stalux-post-source-link:active{background:var(--accent,#fff2);border-top-color:var(--accent,#fff4);border-right-color:var(--accent,#fff4);border-left-color:var(--accent,#fff4);text-decoration:none}.stalux-post-source-link:after{display:none!important}.stalux-license-author,.stalux-license-url,.stalux-license-license{margin:var(--space-sm) 0;line-height:1.6;font-size:var(--font-size-small);color:var(--white-80p)}.stalux-license-box a{color:var(--accent-90p);transition:color var(--transition-normal), border-bottom-color var(--transition-normal);border-bottom:1px dashed var(--accent-50p);padding-bottom:1px;text-decoration:none;position:relative}.stalux-license-box a:active{color:var(--accent-70p)}.stalux-license-icon svg{width:100%;height:100%;display:block}.stalux-license-icon path{color:var(--white-full);fill:currentColor}@media (hover:hover) and (pointer:fine){.stalux-random-refresh:hover{color:var(--accent-60p,#06c)}.stalux-random-list>li>a:hover,.stalux-toc-item:hover,.stalux-post-taxonomy-item-column:hover,.stalux-post-taxonomy-item-pill:hover{background:var(--white-05p)}a.stalux-pagination-link:hover{background:var(--white-05p);outline-color:var(--accent-50p)}a.stalux-pagination-prev-post:hover .stalux-pagination-arrow{translate:-2px}a.stalux-pagination-next-post:hover .stalux-pagination-arrow{translate:2px}.stalux-post-source-link:hover{background:var(--accent,#fff2);border-top-color:var(--accent,#fff4);border-right-color:var(--accent,#fff4);border-left-color:var(--accent,#fff4);text-decoration:none}.stalux-license-box a:hover{color:var(--stalux-accent-color);border-bottom-color:var(--accent-80p)}.stalux-license-box:hover .stalux-license-watermark{opacity:.25}}@media (prefers-color-scheme:dark){.stalux-random-header{border-bottom-color:#ffffff1a}.stalux-random-title,.stalux-random-refresh,.stalux-random-list>li>a{color:var(--foreground-60p,#e0e0e0)}.stalux-random-loading,.stalux-random-error,.stalux-random-no-more{color:var(--foreground-60p,#b0b0b0)}}@media (prefers-contrast:more){.stalux-post-layout{gap:2rem}}@media (width<=1599px){:is(.stalux-sidebar,.stalux-sidebar-right){display:none}.stalux-post-layout{grid-template-columns:minmax(0,1fr);max-width:936px}}@media (width<=1024px){.stalux-post-title{font-size:2rem}.stalux-post-metadata{gap:1rem}}@media (width<=768px){:is(.stalux-sidebar,.stalux-sidebar-right),.stalux-sidebar-right{display:none}.stalux-pagination{margin:var(--space-md) 0}.stalux-pagination-inner{gap:var(--space-sm)}.stalux-pagination-link{padding:var(--space-sm) var(--space-md);flex-direction:column;justify-content:center;align-items:flex-start;min-height:120px}.stalux-pagination-link.stalux-pagination-next-post{align-items:flex-end}.stalux-pagination-arrow{transform:scale(.85)}.stalux-pagination-label{margin-bottom:var(--space-xs);font-size:.75rem}.stalux-pagination-title{max-width:100%;font-size:var(--font-size-small);white-space:normal}.stalux-post-page{padding:0}.stalux-post-layout{flex-direction:column;gap:2rem;margin:0;padding:0;display:flex}.stalux-post-layout>:nth-child(2){order:1}.stalux-post-layout>:first-child{order:2}.stalux-post-layout>:nth-child(3){order:3}.stalux-article{box-sizing:border-box;width:100%;box-shadow:none;background:0 0;margin:0;padding:clamp(1rem,2vw,2rem)}.stalux-post-body{width:100%;margin:0;padding:0 0 2rem}.stalux-post-article-header{margin-bottom:2rem;padding:1rem 1rem 0}.stalux-post-title{font-size:1.75rem}.stalux-post-metadata{flex-direction:column;gap:.75rem;font-size:.85rem}.stalux-post-article-footer{margin-top:2rem;padding-top:1.5rem}.stalux-post-page-stats{margin-top:.8rem;padding-top:.6rem;font-size:.85rem}.stalux-license-box{max-width:95%;padding:var(--space-md);margin:var(--space-md) auto}.stalux-license-title{margin-bottom:var(--space-xs);font-size:var(--font-size-base)}.stalux-license-author,.stalux-license-url,.stalux-license-license{margin:var(--space-xs) 0;font-size:.85rem}.stalux-license-icon{width:80px;height:80px}}@media (width<=480px){.stalux-pagination{margin:var(--space-md) 0}.stalux-pagination-inner{gap:var(--space-sm);flex-direction:column}.stalux-pagination-link{width:100%;padding:var(--space-sm) var(--space-md);justify-content:flex-start;align-items:center;gap:var(--space-md);flex-direction:row;min-height:100px}.stalux-pagination-link.stalux-pagination-prev-post,.stalux-pagination-link.stalux-pagination-next-post{text-align:left;align-items:center;margin-left:0;margin-right:0}.stalux-pagination-link.stalux-pagination-next-post{justify-content:flex-start}.stalux-pagination-title{white-space:normal}.stalux-post-layout{gap:1.25rem;padding:0}.stalux-license-box{max-width:100%;padding:var(--space-sm);margin:var(--space-md) 0}.stalux-license-title{margin-bottom:var(--space-2xs);font-size:var(--font-size-small)}.stalux-license-author,.stalux-license-url,.stalux-license-license{margin:var(--space-2xs) 0;font-size:.8rem}.stalux-license-icon{width:60px;height:60px}}@media (prefers-reduced-motion:reduce){.stalux-post-page *{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{.stalux-post-layout{grid-template-columns:1fr;gap:2rem}.stalux-post-layout>:first-child,.stalux-post-layout>:nth-child(3){display:none}}}@layer utilities,theme,base;
|
|
3
3
|
/*$vite$:1*/
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
@layer theme,base;@layer components{.stalux-prose{font-family:var(--font-body), "Noto Sans SC", "Noto Sans CJK SC", system-ui, -apple-system, sans-serif;font-size:var(--font-size-base);color:var(--white-85p);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;line-height:1.75}.stalux-prose h1,.stalux-prose h2,.stalux-prose h3,.stalux-prose h4,.stalux-prose h5,.stalux-prose h6{color:var(--white-full);margin-top:var(--space-xl);margin-bottom:var(--space-md);font-weight:600;line-height:1.3}.stalux-prose h1{margin-top:2.5rem;margin-bottom:var(--space-lg);border-bottom:3px solid var(--accent-50p);padding-bottom:.6rem;font-size:2.6rem;font-weight:700;line-height:1.25}.stalux-prose h2{border-bottom:2px solid var(--accent-30p);margin-top:2.5rem;padding-bottom:.4rem;font-size:2rem;font-weight:650}.stalux-prose h3{color:var(--white-95p);margin-top:2rem;font-size:1.5rem;line-height:1.4}.stalux-prose h4{color:var(--white-90p);margin-top:1.5rem;margin-bottom:.6rem;font-size:1.25rem;line-height:1.45}.stalux-prose h5{color:var(--white-90p);margin-top:1.5rem;margin-bottom:.5rem;font-size:1.1rem;line-height:1.5}.stalux-prose h6{color:var(--white-80p);margin-top:1.5rem;margin-bottom:.5rem;font-size:1rem;line-height:1.5}.stalux-prose p{margin:0 0 var(--space-lg);line-height:1.75}.stalux-prose strong{color:#ffd966;font-weight:600}.stalux-prose em{color:var(--white-85p);font-style:italic}.stalux-prose strong em,.stalux-prose em strong{color:#ffd966}.stalux-prose del{color:var(--white-60p)}.stalux-prose mark{color:inherit;background-color:#ffd96640;border-radius:2px;padding:.1em .2em}.stalux-prose kbd{font-family:var(--font-code), "JetBrains Mono", "Fira Code", "Consolas", "Courier New", monospace;background-color:var(--white-10p);border:1px solid var(--white-20p);color:var(--white-85p);border-radius:4px;padding:.15em .4em;font-size:.85em}.stalux-prose sup,.stalux-prose sub{font-size:.8em}.stalux-prose a{color:var(--accent-80p);transition:color var(--transition-fast), border-bottom-color var(--transition-fast);overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;border-bottom:2px solid #0000;text-decoration:none}.stalux-prose a:focus-visible{color:var(--accent-90p);border-bottom-color:var(--accent-60p)}@media (hover:hover) and (pointer:fine){.stalux-prose a:hover{color:var(--accent-90p);border-bottom-color:var(--accent-60p)}}.stalux-prose code{font-family:var(--font-code), "JetBrains Mono", "Fira Code", "Consolas", "Courier New", monospace;color:#ff92d0;background-color:#ff79c626;border:1px solid #ff79c640;border-radius:4px;padding:.2em .4em;font-size:.88em}.stalux-prose pre{background:var(--black-30p);color:var(--white-85p);border-left:4px solid var(--accent-60p);margin:var(--space-xl) 0;font-size:.92em;line-height:1.65;font-family:var(--font-code), "JetBrains Mono", "Fira Code", "Consolas", "Courier New", monospace;box-shadow:var(--shadow-md);border-radius:8px;padding:1.2rem 1.5rem;overflow-x:auto}.stalux-prose pre code{color:inherit;font-size:inherit;background:0 0;border:none;padding:0;font-family:inherit}.expressive-code pre,.expressive-code code{all:revert}.stalux-prose ul,.stalux-prose ol{margin:0 0 var(--space-lg);padding-left:1.75rem}.stalux-prose li{color:var(--white-85p);margin:.4rem 0;line-height:1.75}.stalux-prose ul li{list-style:outside}.stalux-prose ul li ul li{list-style:circle}.stalux-prose ul li ul li ul li{list-style:square}.stalux-prose ol li{list-style:decimal}.stalux-prose ol li ol li{list-style:lower-alpha}.stalux-prose li>ul,.stalux-prose li>ol{margin-top:.3rem;margin-bottom:.3rem}.stalux-prose blockquote{margin:var(--space-xl) 0;border-left:4px solid var(--accent-60p);background:var(--black-10p);color:var(--white-75p);border-radius:0 8px 8px 0;padding:1rem 1.5rem}.stalux-prose blockquote p{margin:0;line-height:1.7}.stalux-prose blockquote p+p{margin-top:.8rem}.stalux-prose blockquote strong{color:#ffd966}.stalux-prose blockquote code{font-size:.85em}.stalux-prose table{border-collapse:collapse;width:100%;margin:var(--space-xl) 0;box-shadow:var(--shadow-md);-webkit-overflow-scrolling:touch;border-radius:8px;display:block;overflow:auto hidden}.stalux-prose th,.stalux-prose td{text-align:left;border-bottom:1px solid var(--white-10p);padding:.75rem 1rem;line-height:1.6}.stalux-prose th{white-space:nowrap;background:var(--accent-30p);color:var(--white-full);font-size:.95em;font-weight:600}.stalux-prose td{color:var(--white-85p)}.stalux-prose tr:nth-child(2n) td{background-color:var(--white-05p)}@media (hover:hover) and (pointer:fine){.stalux-prose tr:hover td{background-color:var(--black-10p)}}.stalux-prose table code{font-size:.85em}.stalux-prose img{max-width:100%;height:auto;margin:var(--space-xl) auto;box-shadow:var(--shadow-lg);transition:transform var(--transition-normal), box-shadow var(--transition-normal);border-radius:8px;display:block}@media (hover:hover) and (pointer:fine){.stalux-prose img:hover{box-shadow:var(--shadow-xl);transform:none}}.stalux-prose embed,.stalux-prose video{max-width:100%;height:auto;margin:var(--space-xl) auto;border-radius:8px;display:block}.stalux-prose hr{margin:var(--space-2xl) 0;background:linear-gradient(90deg, transparent, var(--white-15p) 20%, var(--accent-40p) 50%, var(--white-15p) 80%, transparent);border:none;height:1.5px}.stalux-prose details{margin:var(--space-lg) 0;background-color:var(--white-05p);border:1px solid var(--white-10p);transition:border-color var(--transition-fast);border-radius:6px;padding:.8rem 1rem}@media (hover:hover) and (pointer:fine){.stalux-prose details:hover{border-color:var(--white-20p)}}.stalux-prose summary{cursor:pointer;color:var(--white-90p);font-weight:600}.stalux-prose details[open] summary{border-bottom:1px solid var(--white-10p);margin-bottom:.8rem;padding-bottom:.6rem}.stalux-prose figure{text-align:center;margin:var(--space-xl) 0}.stalux-prose figcaption{color:var(--white-70p);margin-top:.5rem;font-size:.9em;font-style:italic}.stalux-prose .footnotes{color:var(--white-75p);border-top:1px solid var(--white-15p);margin-top:var(--space-2xl);padding-top:var(--space-lg);font-size:.88em}.stalux-prose .footnotes ol{margin-left:1rem;padding-left:.5rem}.stalux-prose .footnotes li{margin:.5rem 0;line-height:1.6}.stalux-prose .footnotes a{font-size:.9em}@media (width<=1024px){.stalux-prose{font-size:1.05rem}.stalux-prose h1{font-size:2.2rem}.stalux-prose h2{font-size:1.8rem}.stalux-prose h3{font-size:1.35rem}.stalux-prose h4{font-size:1.15rem}.stalux-prose pre{padding:1rem 1.2rem;font-size:.88em}}@media (width<=768px){.stalux-prose{font-size:1rem;line-height:1.7}.stalux-prose h1{margin-top:1.5rem;font-size:1.8rem}.stalux-prose h2{margin-top:1.5rem;font-size:1.4rem}.stalux-prose h3{margin-top:1.25rem;font-size:1.2rem}.stalux-prose h4{margin-top:1rem;font-size:1.1rem}.stalux-prose h5{font-size:1rem}.stalux-prose h6{font-size:.95rem}.stalux-prose p{margin-bottom:var(--space-md)}.stalux-prose pre{margin:var(--space-lg) 0;border-left-width:3px;padding:.8rem 1rem;font-size:.82em}.stalux-prose table{font-size:.85rem}.stalux-prose th,.stalux-prose td{padding:.5rem .7rem}.stalux-prose blockquote{padding:.8rem 1rem;font-size:.9em}.stalux-prose ul,.stalux-prose ol{padding-left:1.5rem}}.stalux-prose,.stalux-prose>*,.stalux-prose div,.stalux-prose .expressive-code,.stalux-prose .expressive-code .frame{box-sizing:border-box;min-width:0;max-width:100%}.stalux-prose{overflow-wrap:anywhere}.stalux-prose a:after{content:none}.stalux-prose a{text-decoration:underline;-webkit-text-decoration-color:var(--accent-50p);text-decoration-color:var(--accent-50p);text-underline-offset:.2em;border-bottom:0;text-decoration-thickness:1px}.stalux-prose a:has(img){text-decoration:none}.stalux-prose pre,.stalux-prose table,.stalux-prose .mermaid,.stalux-prose math{overscroll-behavior-x:contain;max-width:100%;overflow-x:auto}.stalux-prose pre,.stalux-prose pre code{overflow-wrap:normal;word-break:normal}.stalux-prose :is(img,video,iframe,embed,svg,canvas){max-width:100%}.stalux-prose :is(img,video,svg,canvas){height:auto}.stalux-prose iframe{margin:var(--space-xl) auto;border-radius:8px;display:block}.stalux-prose .mermaid svg{max-width:none}.stalux-prose canvas{box-sizing:border-box}.stalux-prose summary{overflow-wrap:anywhere}}@layer utilities;@font-face{font-family:"Temml", serif;src:url(/fonts/Temml.woff2)format("woff2");font-weight:400;font-style:normal}@font-face{font-family:Latin Modern Math;src:url(/fonts/latinmodern-math.woff2)format("woff2");font-display:swap}math{font-size-adjust:none;text-indent:0;text-transform:none;letter-spacing:normal;word-wrap:normal;font-feature-settings:"dtls" off;font-style:normal;font-weight:400;line-height:normal;font-family:"Latin Modern Math", var(--font-body), math;direction:ltr}math *{border-color:currentColor}math.tml-display{width:100%;display:block}.mathscr{font-family:Temml,serif}mfrac>:nth-child(2),msqrt,mover>:first-child{math-shift:compact}.menclose{padding:.5ex 0;display:inline-block;position:relative}.tml-cancelto{background-color:currentColor;padding:.5ex 0;display:inline-block;position:absolute;top:0;left:0;-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><defs><marker id='a' markerHeight='5' markerUnits='strokeWidth' markerWidth='7' orient='auto' refX='7' refY='2.5'><path fill='black' d='m0 0 7 2.5L0 5z'/></marker></defs><line x2='100%25' y1='100%25' stroke='black' stroke-width='.06em' marker-end='url(%23a)' vector-effect='non-scaling-stroke'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><defs><marker id='a' markerHeight='5' markerUnits='strokeWidth' markerWidth='7' orient='auto' refX='7' refY='2.5'><path fill='black' d='m0 0 7 2.5L0 5z'/></marker></defs><line x2='100%25' y1='100%25' stroke='black' stroke-width='.06em' marker-end='url(%23a)' vector-effect='non-scaling-stroke'/></svg>");-webkit-mask-position:0 0;mask-position:0 0;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}@-moz-document url-prefix(){math{display:inline}math>mrow{padding:0}mtd,mtable.tml-small mtd{padding-top:0;padding-bottom:0}mtable.tml-jot mtd{padding-top:.2ex;padding-bottom:0}.tml-vec{transform:scale(.75)}.ff-narrow{width:0}.ff-nudge-left{margin-left:-.2em}.ff-squash mtd{height:0;display:block}}@supports not ((-moz-appearance:none)){mo.tml-prime{font-family:Temml,serif}.tml-sml-pad{padding-left:.05em}.tml-med-pad{padding-left:.1em}.tml-lrg-pad{padding-left:.15em}}@supports ((-webkit-backdrop-filter:blur(1px))){.wbk-acc{transform:translateY(.431em)}.wbk-sml{transform:translate(.07em)}.wbk-sml-acc{transform:translate(.07em,.431em)}.wbk-sml-vec{transform:scale(.75)translate(.07em)}.wbk-med{transform:translate(.14em)}.wbk-med-acc{transform:translate(.14em,.431em)}.wbk-med-vec{transform:scale(.75)translate(.14em)}.wbk-lrg{transform:translate(.21em)}.wbk-lrg-acc{transform:translate(.21em,.431em)}.wbk-lrg-vec{transform:scale(.75)translate(.21em)}}@supports (not ((-webkit-backdrop-filter:blur(1px)))) and (not ((-moz-appearance:none))){.chr-sml{transform:translate(.07em)}.chr-sml-vec{transform:scale(.75)translate(.07em)}.chr-med{transform:translate(.14em)}.chr-med-vec{transform:scale(.75)translate(.14em)}.chr-lrg{transform:translate(.21em)}.chr-lrg-vec{transform:scale(.75)translate(.21em)}.tml-shift-left{margin-left:-100%}menclose{padding:.5ex 0;position:relative}.tml-overline{border-top:.065em solid;padding:.1em 0 0}.tml-underline{border-bottom:.065em solid;padding:0 0 .1em}.tml-cancel{background-color:currentColor;width:100%;height:100%;display:inline-block;position:absolute;bottom:0;left:.5px}.upstrike{clip-path:polygon(.05em 100%,0 calc(100% - .05em),calc(100% - .05em) 0,100% .05em)}.downstrike{clip-path:polygon(0 .05em,.05em 0,100% calc(100% - .05em),calc(100% - .05em) 100%)}.sout{clip-path:polygon(0 calc(55% + .0333em),0 calc(55% - .0333em),100% calc(55% - .0333em),100% calc(55% + .0333em))}.tml-xcancel{clip-path:polygon(.05em 0,0 .05em,calc(50% - .05em) 50%,0 calc(100% - .05em),.05em 100%,50% calc(50% + .05em),calc(100% - .05em) 100%,100% calc(100% - .05em),calc(50% + .05em) 50%,100% .05em,calc(100% - .05em) 0%,50% calc(50% - .05em))}.longdiv-top{border-top:.067em solid;padding:.1em .2em .2em .433em}.longdiv-arc{clip-path:inset(0 0 0 .4em);box-sizing:border-box;border:.067em solid;border-radius:70%;width:.7em;position:absolute;top:0;bottom:.1em;left:-.4em;transform:translateY(-.067em)}.menclose{text-align:left;display:inline-block;position:relative}.phasor-bottom{border-bottom:.067em solid;padding:.2em .2em .1em .6em}.phasor-angle{aspect-ratio:.5;clip-path:polygon(.05em 100%,0 calc(100% - .05em),calc(100% - .05em) 0,100% .05em);background-color:currentColor;height:100%;display:inline-block;position:absolute;bottom:-.04em;left:.5px}.tml-fbox{border:1px solid;padding:3pt}.circle-pad{padding:.267em}.textcircle{border:.067em solid;border-radius:50%;position:absolute;inset:0}.actuarial{border-style:solid;border-width:.08em .08em 0 0;margin-right:.03889em;padding:.03889em .03889em 0}.tml-crooked-2{transform:scale(2,1.1)}.tml-crooked-3{transform:scale(3,1.3)}.tml-crooked-4{transform:scale(4,1.4)}.tml-right{text-align:-webkit-right}.tml-left{text-align:-webkit-left}}menclose{-webkit-print-color-adjust:exact;print-color-adjust:exact}.tml-right{text-align:right}.tml-left{text-align:left}.special-fraction{font-family:Times New Roman,Times,STIX TWO,Tinos,serif}math{flex-wrap:wrap;align-items:baseline;display:inline-flex}math>mrow{padding:.5ex 0}mtable.tml-jot mtd{padding-top:.7ex;padding-bottom:.7ex}mtable.tml-small mtd{padding-top:.35ex;padding-bottom:.35ex}.tml-shift-left{margin-left:-200%}.tml-eqn:before{counter-increment:tmlEqnNo;content:"(" counter(tmlEqnNo) ")"}body{counter-reset:tmlEqnNo}
|
|
1
|
+
@layer theme,base;@layer components{.stalux-prose{font-family:var(--font-body), "Noto Sans SC", "Noto Sans CJK SC", system-ui, -apple-system, sans-serif;font-size:var(--font-size-base);color:var(--white-85p);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;line-height:1.75}.stalux-prose h1,.stalux-prose h2,.stalux-prose h3,.stalux-prose h4,.stalux-prose h5,.stalux-prose h6{color:var(--white-full);margin-top:var(--space-xl);margin-bottom:var(--space-md);font-weight:600;line-height:1.3}.stalux-prose h1{margin-top:2.5rem;margin-bottom:var(--space-lg);border-bottom:3px solid var(--accent-50p);padding-bottom:.6rem;font-size:2.6rem;font-weight:700;line-height:1.25}.stalux-prose h2{border-bottom:2px solid var(--accent-30p);margin-top:2.5rem;padding-bottom:.4rem;font-size:2rem;font-weight:650}.stalux-prose h3{color:var(--white-95p);margin-top:2rem;font-size:1.5rem;line-height:1.4}.stalux-prose h4{color:var(--white-90p);margin-top:1.5rem;margin-bottom:.6rem;font-size:1.25rem;line-height:1.45}.stalux-prose h5{color:var(--white-90p);margin-top:1.5rem;margin-bottom:.5rem;font-size:1.1rem;line-height:1.5}.stalux-prose h6{color:var(--white-80p);margin-top:1.5rem;margin-bottom:.5rem;font-size:1rem;line-height:1.5}.stalux-prose p{margin:0 0 var(--space-lg);line-height:1.75}.stalux-prose strong{color:#ffd966;font-weight:600}.stalux-prose em{color:var(--white-85p);font-style:italic}.stalux-prose strong em,.stalux-prose em strong{color:#ffd966}.stalux-prose del{color:var(--white-60p)}.stalux-prose mark{color:inherit;background-color:#ffd96640;border-radius:2px;padding:.1em .2em}.stalux-prose kbd{font-family:var(--font-code), "JetBrains Mono", "Fira Code", "Consolas", "Courier New", monospace;background-color:var(--white-10p);border:1px solid var(--white-20p);color:var(--white-85p);border-radius:4px;padding:.15em .4em;font-size:.85em}.stalux-prose sup,.stalux-prose sub{font-size:.8em}.stalux-prose a{color:var(--accent-80p);transition:color var(--transition-fast), border-bottom-color var(--transition-fast);overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;border-bottom:2px solid #0000;text-decoration:none}.stalux-prose a:focus-visible{color:var(--accent-90p);border-bottom-color:var(--accent-60p)}@media (hover:hover) and (pointer:fine){.stalux-prose a:hover{color:var(--accent-90p);border-bottom-color:var(--accent-60p)}}.stalux-prose code{font-family:var(--font-code), "JetBrains Mono", "Fira Code", "Consolas", "Courier New", monospace;color:#ff92d0;background-color:#ff79c626;border:1px solid #ff79c640;border-radius:4px;padding:.2em .4em;font-size:.88em}.stalux-prose pre{background:var(--black-30p);color:var(--white-85p);border-left:4px solid var(--accent-60p);margin:var(--space-xl) 0;font-size:.92em;line-height:1.65;font-family:var(--font-code), "JetBrains Mono", "Fira Code", "Consolas", "Courier New", monospace;box-shadow:var(--shadow-md);border-radius:8px;padding:1.2rem 1.5rem;overflow-x:auto}.stalux-prose pre code{color:inherit;font-size:inherit;background:0 0;border:none;padding:0;font-family:inherit}.expressive-code pre,.expressive-code code{all:revert}.stalux-prose ul,.stalux-prose ol{margin:0 0 var(--space-lg);padding-left:1.75rem}.stalux-prose li{color:var(--white-85p);margin:.4rem 0;line-height:1.75}.stalux-prose ul li{list-style:outside}.stalux-prose ul li ul li{list-style:circle}.stalux-prose ul li ul li ul li{list-style:square}.stalux-prose ol li{list-style:decimal}.stalux-prose ol li ol li{list-style:lower-alpha}.stalux-prose li>ul,.stalux-prose li>ol{margin-top:.3rem;margin-bottom:.3rem}.stalux-prose blockquote{margin:var(--space-xl) 0;border-left:4px solid var(--accent-60p);background:var(--surface-glass);border-top:1px solid var(--white-10p);border-right:1px solid var(--white-10p);border-bottom:1px solid var(--white-10p);color:var(--white-85p);border-radius:12px;padding:1rem 1.5rem;box-shadow:0 4px 16px #0002}.stalux-prose blockquote p{margin:0;line-height:1.7}.stalux-prose blockquote p+p{margin-top:.8rem}.stalux-prose blockquote strong{color:#ffd966}.stalux-prose blockquote code{font-size:.85em}.stalux-prose table{border-collapse:collapse;width:100%;margin:var(--space-xl) 0;box-shadow:var(--shadow-md);-webkit-overflow-scrolling:touch;border-radius:8px;display:block;overflow:auto hidden}.stalux-prose th,.stalux-prose td{text-align:left;border-bottom:1px solid var(--white-10p);padding:.75rem 1rem;line-height:1.6}.stalux-prose th{white-space:nowrap;background:var(--accent-30p);color:var(--white-full);font-size:.95em;font-weight:600}.stalux-prose td{color:var(--white-85p)}.stalux-prose tr:nth-child(2n) td{background-color:var(--white-05p)}@media (hover:hover) and (pointer:fine){.stalux-prose tr:hover td{background-color:var(--black-10p)}}.stalux-prose table code{font-size:.85em}.stalux-prose img{max-width:100%;height:auto;margin:var(--space-xl) auto;box-shadow:var(--shadow-lg);transition:transform var(--transition-normal), box-shadow var(--transition-normal);border-radius:8px;display:block}@media (hover:hover) and (pointer:fine){.stalux-prose img:hover{box-shadow:var(--shadow-xl);transform:none}}.stalux-prose embed,.stalux-prose video{max-width:100%;height:auto;margin:var(--space-xl) auto;border-radius:8px;display:block}.stalux-prose hr{margin:var(--space-2xl) 0;background:linear-gradient(90deg, transparent, var(--white-15p) 20%, var(--accent-40p) 50%, var(--white-15p) 80%, transparent);border:none;height:1.5px}.stalux-prose details{margin:var(--space-lg) 0;background-color:var(--white-05p);border:1px solid var(--white-10p);transition:border-color var(--transition-fast);border-radius:6px;padding:.8rem 1rem}@media (hover:hover) and (pointer:fine){.stalux-prose details:hover{border-color:var(--white-20p)}}.stalux-prose summary{cursor:pointer;color:var(--white-90p);font-weight:600}.stalux-prose details[open] summary{border-bottom:1px solid var(--white-10p);margin-bottom:.8rem;padding-bottom:.6rem}.stalux-prose figure{text-align:center;margin:var(--space-xl) 0}.stalux-prose figcaption{color:var(--white-70p);margin-top:.5rem;font-size:.9em;font-style:italic}.stalux-prose .footnotes{color:var(--white-75p);border-top:1px solid var(--white-15p);margin-top:var(--space-2xl);padding-top:var(--space-lg);font-size:.88em}.stalux-prose .footnotes ol{margin-left:1rem;padding-left:.5rem}.stalux-prose .footnotes li{margin:.5rem 0;line-height:1.6}.stalux-prose .footnotes a{font-size:.9em}@media (width<=1024px){.stalux-prose{font-size:1.05rem}.stalux-prose h1{font-size:2.2rem}.stalux-prose h2{font-size:1.8rem}.stalux-prose h3{font-size:1.35rem}.stalux-prose h4{font-size:1.15rem}.stalux-prose pre{padding:1rem 1.2rem;font-size:.88em}}@media (width<=768px){.stalux-prose{font-size:1rem;line-height:1.7}.stalux-prose h1{margin-top:1.5rem;font-size:1.8rem}.stalux-prose h2{margin-top:1.5rem;font-size:1.4rem}.stalux-prose h3{margin-top:1.25rem;font-size:1.2rem}.stalux-prose h4{margin-top:1rem;font-size:1.1rem}.stalux-prose h5{font-size:1rem}.stalux-prose h6{font-size:.95rem}.stalux-prose p{margin-bottom:var(--space-md)}.stalux-prose pre{margin:var(--space-lg) 0;border-left-width:3px;padding:.8rem 1rem;font-size:.82em}.stalux-prose table{font-size:.85rem}.stalux-prose th,.stalux-prose td{padding:.5rem .7rem}.stalux-prose blockquote{padding:.8rem 1rem;font-size:.9em}.stalux-prose ul,.stalux-prose ol{padding-left:1.5rem}}.stalux-prose,.stalux-prose>*,.stalux-prose div,.stalux-prose .expressive-code,.stalux-prose .expressive-code .frame{box-sizing:border-box;min-width:0;max-width:100%}.stalux-prose{overflow-wrap:anywhere}.stalux-prose a:after{content:none}.stalux-prose a{text-decoration:underline;-webkit-text-decoration-color:var(--accent-50p);text-decoration-color:var(--accent-50p);text-underline-offset:.2em;border-bottom:0;text-decoration-thickness:1px}.stalux-prose a:has(img){text-decoration:none}.stalux-prose pre,.stalux-prose table,.stalux-prose .mermaid,.stalux-prose math{overscroll-behavior-x:contain;max-width:100%;overflow-x:auto}.stalux-prose pre,.stalux-prose pre code{overflow-wrap:normal;word-break:normal}.stalux-prose :is(img,video,iframe,embed,svg,canvas){max-width:100%}.stalux-prose :is(img,video,svg,canvas){height:auto}.stalux-prose iframe{margin:var(--space-xl) auto;border-radius:8px;display:block}.stalux-prose .mermaid svg{max-width:none}.stalux-prose canvas{box-sizing:border-box}.stalux-prose summary{overflow-wrap:anywhere}}@layer utilities;@font-face{font-family:"Temml", serif;src:url(/fonts/Temml.woff2)format("woff2");font-weight:400;font-style:normal}@font-face{font-family:Latin Modern Math;src:url(/fonts/latinmodern-math.woff2)format("woff2");font-display:swap}math{font-size-adjust:none;text-indent:0;text-transform:none;letter-spacing:normal;word-wrap:normal;font-feature-settings:"dtls" off;font-style:normal;font-weight:400;line-height:normal;font-family:"Latin Modern Math", var(--font-body), math;direction:ltr}math *{border-color:currentColor}math.tml-display{width:100%;display:block}.mathscr{font-family:Temml,serif}mfrac>:nth-child(2),msqrt,mover>:first-child{math-shift:compact}.menclose{padding:.5ex 0;display:inline-block;position:relative}.tml-cancelto{background-color:currentColor;padding:.5ex 0;display:inline-block;position:absolute;top:0;left:0;-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><defs><marker id='a' markerHeight='5' markerUnits='strokeWidth' markerWidth='7' orient='auto' refX='7' refY='2.5'><path fill='black' d='m0 0 7 2.5L0 5z'/></marker></defs><line x2='100%25' y1='100%25' stroke='black' stroke-width='.06em' marker-end='url(%23a)' vector-effect='non-scaling-stroke'/></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><defs><marker id='a' markerHeight='5' markerUnits='strokeWidth' markerWidth='7' orient='auto' refX='7' refY='2.5'><path fill='black' d='m0 0 7 2.5L0 5z'/></marker></defs><line x2='100%25' y1='100%25' stroke='black' stroke-width='.06em' marker-end='url(%23a)' vector-effect='non-scaling-stroke'/></svg>");-webkit-mask-position:0 0;mask-position:0 0;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}@-moz-document url-prefix(){math{display:inline}math>mrow{padding:0}mtd,mtable.tml-small mtd{padding-top:0;padding-bottom:0}mtable.tml-jot mtd{padding-top:.2ex;padding-bottom:0}.tml-vec{transform:scale(.75)}.ff-narrow{width:0}.ff-nudge-left{margin-left:-.2em}.ff-squash mtd{height:0;display:block}}@supports not ((-moz-appearance:none)){mo.tml-prime{font-family:Temml,serif}.tml-sml-pad{padding-left:.05em}.tml-med-pad{padding-left:.1em}.tml-lrg-pad{padding-left:.15em}}@supports ((-webkit-backdrop-filter:blur(1px))){.wbk-acc{transform:translateY(.431em)}.wbk-sml{transform:translate(.07em)}.wbk-sml-acc{transform:translate(.07em,.431em)}.wbk-sml-vec{transform:scale(.75)translate(.07em)}.wbk-med{transform:translate(.14em)}.wbk-med-acc{transform:translate(.14em,.431em)}.wbk-med-vec{transform:scale(.75)translate(.14em)}.wbk-lrg{transform:translate(.21em)}.wbk-lrg-acc{transform:translate(.21em,.431em)}.wbk-lrg-vec{transform:scale(.75)translate(.21em)}}@supports (not ((-webkit-backdrop-filter:blur(1px)))) and (not ((-moz-appearance:none))){.chr-sml{transform:translate(.07em)}.chr-sml-vec{transform:scale(.75)translate(.07em)}.chr-med{transform:translate(.14em)}.chr-med-vec{transform:scale(.75)translate(.14em)}.chr-lrg{transform:translate(.21em)}.chr-lrg-vec{transform:scale(.75)translate(.21em)}.tml-shift-left{margin-left:-100%}menclose{padding:.5ex 0;position:relative}.tml-overline{border-top:.065em solid;padding:.1em 0 0}.tml-underline{border-bottom:.065em solid;padding:0 0 .1em}.tml-cancel{background-color:currentColor;width:100%;height:100%;display:inline-block;position:absolute;bottom:0;left:.5px}.upstrike{clip-path:polygon(.05em 100%,0 calc(100% - .05em),calc(100% - .05em) 0,100% .05em)}.downstrike{clip-path:polygon(0 .05em,.05em 0,100% calc(100% - .05em),calc(100% - .05em) 100%)}.sout{clip-path:polygon(0 calc(55% + .0333em),0 calc(55% - .0333em),100% calc(55% - .0333em),100% calc(55% + .0333em))}.tml-xcancel{clip-path:polygon(.05em 0,0 .05em,calc(50% - .05em) 50%,0 calc(100% - .05em),.05em 100%,50% calc(50% + .05em),calc(100% - .05em) 100%,100% calc(100% - .05em),calc(50% + .05em) 50%,100% .05em,calc(100% - .05em) 0%,50% calc(50% - .05em))}.longdiv-top{border-top:.067em solid;padding:.1em .2em .2em .433em}.longdiv-arc{clip-path:inset(0 0 0 .4em);box-sizing:border-box;border:.067em solid;border-radius:70%;width:.7em;position:absolute;top:0;bottom:.1em;left:-.4em;transform:translateY(-.067em)}.menclose{text-align:left;display:inline-block;position:relative}.phasor-bottom{border-bottom:.067em solid;padding:.2em .2em .1em .6em}.phasor-angle{aspect-ratio:.5;clip-path:polygon(.05em 100%,0 calc(100% - .05em),calc(100% - .05em) 0,100% .05em);background-color:currentColor;height:100%;display:inline-block;position:absolute;bottom:-.04em;left:.5px}.tml-fbox{border:1px solid;padding:3pt}.circle-pad{padding:.267em}.textcircle{border:.067em solid;border-radius:50%;position:absolute;inset:0}.actuarial{border-style:solid;border-width:.08em .08em 0 0;margin-right:.03889em;padding:.03889em .03889em 0}.tml-crooked-2{transform:scale(2,1.1)}.tml-crooked-3{transform:scale(3,1.3)}.tml-crooked-4{transform:scale(4,1.4)}.tml-right{text-align:-webkit-right}.tml-left{text-align:-webkit-left}}menclose{-webkit-print-color-adjust:exact;print-color-adjust:exact}.tml-right{text-align:right}.tml-left{text-align:left}.special-fraction{font-family:Times New Roman,Times,STIX TWO,Tinos,serif}math{flex-wrap:wrap;align-items:baseline;display:inline-flex}math>mrow{padding:.5ex 0}mtable.tml-jot mtd{padding-top:.7ex;padding-bottom:.7ex}mtable.tml-small mtd{padding-top:.35ex;padding-bottom:.35ex}.tml-shift-left{margin-left:-200%}.tml-eqn:before{counter-increment:tmlEqnNo;content:"(" counter(tmlEqnNo) ")"}body{counter-reset:tmlEqnNo}
|
|
2
2
|
/*$vite$:1*/
|
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:rect(0, 0, 0, 0);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{-webkit-user-select:none;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{-webkit-backdrop-filter:blur(10px);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-home-navs{order:-1;max-width:100%}.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);-webkit-backdrop-filter:blur(8px);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:1001;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:100vh;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%}.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{margin-bottom:.5em;font-size:2em}#stalux-date-date-time #stalux-date-time{font-size:3em}.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:rect(0, 0, 0, 0);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[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-summary::-webkit-details-marker{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<=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-navs{flex-direction:column;align-items:center;gap:.5em}.stalux-home-navs nav{width:100%}#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){.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);-webkit-backdrop-filter:blur(20px);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-post-content-reveal{0%{opacity:0}to{opacity:1}}@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-shrink{flex-shrink:1}.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))}.border{border-width:1px}.px{padding-left:1rem;padding-right:1rem}.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}:is(html,body) main{flex:1}html,body{scrollbar-color:#4a4a4a #2a2a2a;font-family:var(--font-body), "Noto Sans SC", "Noto Sans CJK SC", system-ui, -apple-system, sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;display:block}html[data-clarity-id]{opacity:1!important}a{color:inherit;cursor:pointer;-webkit-text-decoration-skip-ink:auto;text-decoration-skip-ink:auto;background-color:#0000;text-decoration:none;transition:color .2s,text-shadow .2s;position:relative}.a-none{cursor:pointer;-webkit-text-decoration-skip-ink:auto;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([class*=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([class*=card]):not(.stalux-nav-link):focus-visible:after,a:not(.a-none):not([class*=card]):not(.stalux-nav-link):active:after{transform:scaleX(1)}@media (hover:hover) and (pointer:fine){a:not(.a-none):not([class*=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:100vh}:root{--stalux-bg-color:#202020;--stalux-bg-filter:none;--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:rgba(var(--stalux-accent-rgb), .9);--accent-85p:rgba(var(--stalux-accent-rgb), .85);--accent-80p:rgba(var(--stalux-accent-rgb), .8);--accent-70p:rgba(var(--stalux-accent-rgb), .7);--accent-60p:rgba(var(--stalux-accent-rgb), .6);--accent-50p:rgba(var(--stalux-accent-rgb), .5);--accent-40p:rgba(var(--stalux-accent-rgb), .4);--accent-30p:rgba(var(--stalux-accent-rgb), .3);--accent-20p:rgba(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;--lightningcss-light:initial;--lightningcss-dark: ;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);-webkit-backdrop-filter:blur(16px);background:linear-gradient(#0c0e122e,#0c0e12b8)}}@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}@keyframes stalux-page-exit{to{opacity:0}}@keyframes stalux-page-enter{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}@keyframes stalux-page-enter-back{0%{opacity:0;transform:translateY(-9px)}to{opacity:1;transform:translateY(0)}}@keyframes stalux-taxonomy-enter{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:translate(0)}}@keyframes stalux-taxonomy-enter-back{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}@keyframes stalux-article-enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes stalux-article-enter-back{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes stalux-sidebar-left-in{0%{opacity:0;transform:translate(-14px)}to{opacity:1;transform:translate(0)}}@keyframes stalux-sidebar-left-out{to{opacity:0;transform:translate(-10px)}}@keyframes stalux-sidebar-left-back-in{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:translate(0)}}@keyframes stalux-sidebar-left-back-out{to{opacity:0;transform:translate(10px)}}@keyframes stalux-sidebar-right-in{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:translate(0)}}@keyframes stalux-sidebar-right-out{to{opacity:0;transform:translate(10px)}}@keyframes stalux-sidebar-right-back-in{0%{opacity:0;transform:translate(-14px)}to{opacity:1;transform:translate(0)}}@keyframes stalux-sidebar-right-back-out{to{opacity:0;transform:translate(-10px)}}::view-transition-group(stalux-page){z-index:1}::view-transition-old(stalux-page){transform-origin:top}::view-transition-new(stalux-page){transform-origin:top}::view-transition-group(*){animation-duration:.24s;animation-timing-function:cubic-bezier(.22,.72,.22,1)}@media (prefers-reduced-motion:reduce){::view-transition-group(*){animation-duration:1ms!important;animation-delay:0s!important}::view-transition-old(*){animation-duration:1ms!important;animation-delay:0s!important}::view-transition-new(*){animation-duration:1ms!important;animation-delay:0s!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:rect(0, 0, 0, 0);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{-webkit-user-select:none;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{-webkit-backdrop-filter:blur(10px);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-home-navs{order:-1;max-width:100%}.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);-webkit-backdrop-filter:blur(8px);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:1001;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:100vh;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%}.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{margin-bottom:.5em;font-size:2em}#stalux-date-date-time #stalux-date-time{font-size:3em}.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:rect(0, 0, 0, 0);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[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-summary::-webkit-details-marker{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<=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-navs{flex-direction:column;align-items:center;gap:.5em}.stalux-home-navs nav{width:100%}#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){.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);-webkit-backdrop-filter:blur(20px);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-post-content-reveal{0%{opacity:0}to{opacity:1}}@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))}.border{border-width:1px}.px{padding-left:1rem;padding-right:1rem}.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}:is(html,body) main{flex:1}html,body{scrollbar-color:#4a4a4a #2a2a2a;font-family:var(--font-body), "Noto Sans SC", "Noto Sans CJK SC", system-ui, -apple-system, sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;display:block}html[data-clarity-id]{opacity:1!important}a{color:inherit;cursor:pointer;-webkit-text-decoration-skip-ink:auto;text-decoration-skip-ink:auto;background-color:#0000;text-decoration:none;transition:color .2s,text-shadow .2s;position:relative}.a-none{cursor:pointer;-webkit-text-decoration-skip-ink:auto;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([class*=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([class*=card]):not(.stalux-nav-link):focus-visible:after,a:not(.a-none):not([class*=card]):not(.stalux-nav-link):active:after{transform:scaleX(1)}@media (hover:hover) and (pointer:fine){a:not(.a-none):not([class*=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:100vh}:root{--stalux-bg-color:#202020;--stalux-bg-filter:none;--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:rgba(var(--stalux-accent-rgb), .9);--accent-85p:rgba(var(--stalux-accent-rgb), .85);--accent-80p:rgba(var(--stalux-accent-rgb), .8);--accent-70p:rgba(var(--stalux-accent-rgb), .7);--accent-60p:rgba(var(--stalux-accent-rgb), .6);--accent-50p:rgba(var(--stalux-accent-rgb), .5);--accent-40p:rgba(var(--stalux-accent-rgb), .4);--accent-30p:rgba(var(--stalux-accent-rgb), .3);--accent-20p:rgba(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;--lightningcss-light:initial;--lightningcss-dark: ;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);-webkit-backdrop-filter:blur(16px);background:linear-gradient(#0c0e122e,#0c0e12b8)}}@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}@keyframes stalux-page-exit{to{opacity:0}}@keyframes stalux-page-enter{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}@keyframes stalux-page-enter-back{0%{opacity:0;transform:translateY(-9px)}to{opacity:1;transform:translateY(0)}}@keyframes stalux-taxonomy-enter{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:translate(0)}}@keyframes stalux-taxonomy-enter-back{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}@keyframes stalux-article-enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes stalux-article-enter-back{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes stalux-sidebar-left-in{0%{opacity:0;transform:translate(-14px)}to{opacity:1;transform:translate(0)}}@keyframes stalux-sidebar-left-out{to{opacity:0;transform:translate(-10px)}}@keyframes stalux-sidebar-left-back-in{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:translate(0)}}@keyframes stalux-sidebar-left-back-out{to{opacity:0;transform:translate(10px)}}@keyframes stalux-sidebar-right-in{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:translate(0)}}@keyframes stalux-sidebar-right-out{to{opacity:0;transform:translate(10px)}}@keyframes stalux-sidebar-right-back-in{0%{opacity:0;transform:translate(-14px)}to{opacity:1;transform:translate(0)}}@keyframes stalux-sidebar-right-back-out{to{opacity:0;transform:translate(-10px)}}::view-transition-group(stalux-page){z-index:1}::view-transition-old(stalux-page){transform-origin:top}::view-transition-new(stalux-page){transform-origin:top}::view-transition-group(*){animation-duration:.24s;animation-timing-function:cubic-bezier(.22,.72,.22,1)}@media (prefers-reduced-motion:reduce){::view-transition-group(*){animation-duration:1ms!important;animation-delay:0s!important}::view-transition-old(*){animation-duration:1ms!important;animation-delay:0s!important}::view-transition-new(*){animation-duration:1ms!important;animation-delay:0s!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*/
|
|
@@ -41,7 +41,11 @@ export function getSiteData(entries: CollectionEntry<"config">[]): SiteData {
|
|
|
41
41
|
if (!site) throw new Error("Missing site config");
|
|
42
42
|
// Content collection loaders may omit Zod defaults from parsed YAML data.
|
|
43
43
|
// Keep the public default stable for older consumer configs that lack this key.
|
|
44
|
-
return {
|
|
44
|
+
return {
|
|
45
|
+
...site,
|
|
46
|
+
accentColor: site.accentColor ?? "#EAB308",
|
|
47
|
+
weather: { enabled: site.weather?.enabled ?? false },
|
|
48
|
+
};
|
|
45
49
|
}
|
|
46
50
|
|
|
47
51
|
export function getAuthorData(entries: CollectionEntry<"config">[]): AuthorData {
|