@xingwangzhe/stalux 1.30.0 → 1.30.2

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.
Files changed (55) hide show
  1. package/package.json +1 -1
  2. package/src/components/stalux/common/author.astro +7 -2
  3. package/src/components/stalux/common/textType.astro +6 -1
  4. package/src/components/stalux/footer/FooterBadges.astro +4 -4
  5. package/src/components/stalux/footer/FooterBeian.astro +2 -2
  6. package/src/components/stalux/footer/FooterCopyright.astro +1 -1
  7. package/src/components/stalux/footer/FooterStats.astro +2 -2
  8. package/src/components/stalux/footer/FooterThemeInfo.astro +1 -1
  9. package/src/components/stalux/layout/footer.astro +2 -2
  10. package/src/components/stalux/layout/listPage.astro +2 -2
  11. package/src/components/stalux/layout/navs.astro +10 -7
  12. package/src/components/stalux/posts/postCard.astro +11 -7
  13. package/src/internal/font-slices.ts +14 -1
  14. package/src/pages/404.astro +4 -1
  15. package/src/pages/archives.astro +2 -2
  16. package/src/pages/categories/index.astro +2 -2
  17. package/src/pages/index.astro +5 -3
  18. package/src/pages/tags/index.astro +2 -2
  19. package/src/pages/words.astro +2 -2
  20. package/src/styles/archives.css +1 -2
  21. package/src/styles/article.css +1 -2
  22. package/src/styles/{theme/base.css → base.css} +4 -7
  23. package/src/styles/categories.css +1 -2
  24. package/src/styles/{theme/prose.css → content.css} +0 -7
  25. package/src/styles/generated-archives.css +1 -1
  26. package/src/styles/generated-article.css +1 -1
  27. package/src/styles/generated-categories.css +1 -1
  28. package/src/styles/generated-links.css +1 -1
  29. package/src/styles/generated-prose.css +1 -1
  30. package/src/styles/generated-tags.css +1 -1
  31. package/src/styles/generated-words.css +1 -1
  32. package/src/styles/generated.css +1 -1
  33. package/src/styles/links.css +1 -2
  34. package/src/styles/{shared/view-transitions.css → motion.css} +96 -0
  35. package/src/styles/prose.css +1 -3
  36. package/src/styles/tags.css +1 -2
  37. package/src/styles/theme.css +1 -12
  38. package/src/styles/words.css +1 -2
  39. package/src/styles/shared/animations.css +0 -87
  40. package/src/styles/shared/stagger.css +0 -20
  41. package/src/styles/theme/archives.css +0 -138
  42. package/src/styles/theme/article.css +0 -562
  43. package/src/styles/theme/categories.css +0 -54
  44. package/src/styles/theme/common.css +0 -79
  45. package/src/styles/theme/footer.css +0 -26
  46. package/src/styles/theme/inline.css +0 -153
  47. package/src/styles/theme/layout.css +0 -143
  48. package/src/styles/theme/link-cards.css +0 -114
  49. package/src/styles/theme/links.css +0 -69
  50. package/src/styles/theme/pages.css +0 -35
  51. package/src/styles/theme/posts.css +0 -79
  52. package/src/styles/theme/tags.css +0 -130
  53. package/src/styles/theme/words.css +0 -84
  54. /package/src/styles/{components/posts/waline.css → integrations.css} +0 -0
  55. /package/src/styles/{base/math.css → math.css} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xingwangzhe/stalux",
3
- "version": "1.30.0",
3
+ "version": "1.30.2",
4
4
  "description": "A powerful, modern Astro blog theme — use as template or install as plugin",
5
5
  "keywords": [
6
6
  "astro",
@@ -17,8 +17,13 @@ const isHomePage = Astro.url.pathname === "/";
17
17
  const navigationHref = isHomePage ? "/about" : "/";
18
18
  ---
19
19
 
20
- <article class="stalux-author" transition:persist-props>
21
- <figure class={`stalux-author-figure ${props.iscolum ? "stalux-author-figure-column" : ""}`}>
20
+ <article
21
+ class="stalux-author stalux-u-flex stalux-u-justify-center stalux-u-flex-col"
22
+ transition:persist-props
23
+ >
24
+ <figure
25
+ class={`stalux-author-figure ${props.iscolum ? "stalux-author-figure-column stalux-u-flex-col" : ""}`}
26
+ >
22
27
  <a href={navigationHref} class="a-none" data-astro-prefetch>
23
28
  <Image src={authorConfig.avatar} alt={authorConfig.name} width={100} height={100} />
24
29
  </a>
@@ -8,4 +8,9 @@ const configEntries = await getCollection("config");
8
8
  const typetextsConfig = getTypetextsData(configEntries);
9
9
  ---
10
10
 
11
- {typetextsConfig?.items && <Typewriter class="stalux-typewriter" messages={typetextsConfig?.items} />}
11
+ {typetextsConfig?.items && (
12
+ <Typewriter
13
+ class="stalux-typewriter stalux-u-flex stalux-u-justify-center stalux-u-w-full stalux-u-text-center"
14
+ messages={typetextsConfig?.items}
15
+ />
16
+ )}
@@ -31,13 +31,13 @@ function badgeImg(opts: BadgeOptions) {
31
31
  ---
32
32
 
33
33
  {badges && badges.length > 0 && (
34
- <div class="stalux-badges-wrapper">
34
+ <div class="stalux-badges-wrapper stalux-u-flex stalux-u-items-center stalux-u-justify-center stalux-u-flex-wrap">
35
35
  {badges.map((item: BadgeItem, idx: number) => {
36
36
  if (isBadgeGroup(item)) {
37
37
  const groupId = `badge-group-${idx}`;
38
38
  return (
39
- <details class="stalux-badge-group badge-group" id={groupId}>
40
- <summary class="stalux-badge-group-summary">
39
+ <details class="stalux-badge-group stalux-u-w-full badge-group" id={groupId}>
40
+ <summary class="stalux-badge-group-summary stalux-u-flex stalux-u-items-center stalux-u-justify-center">
41
41
  <span class="stalux-badge-group-arrow">&#9654;</span>
42
42
  <span class="stalux-badge-group-title">{item.title}</span>
43
43
  <span class="stalux-badge-group-hint" data-hint="expanded">
@@ -47,7 +47,7 @@ function badgeImg(opts: BadgeOptions) {
47
47
  {t("footer.expand")}
48
48
  </span>
49
49
  </summary>
50
- <div class="stalux-badge-group-items stalux-badges">
50
+ <div class="stalux-badge-group-items stalux-badges stalux-u-flex stalux-u-items-center stalux-u-justify-center stalux-u-flex-wrap">
51
51
  {item.items.map((b) => (
52
52
  <Fragment set:html={badgeImg(b)} />
53
53
  ))}
@@ -19,7 +19,7 @@ const showBeian = !!(icp || pubsec);
19
19
  ---
20
20
 
21
21
  {showBeian && (
22
- <div class="stalux-beian-beian-info">
22
+ <div class="stalux-beian-beian-info stalux-u-flex stalux-u-justify-center stalux-u-flex-wrap">
23
23
  {icp && (
24
24
  <a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener noreferrer">
25
25
  {icp}
@@ -30,7 +30,7 @@ const showBeian = !!(icp || pubsec);
30
30
  href={`http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=${pubsecNumber}`}
31
31
  target="_blank"
32
32
  rel="noopener noreferrer"
33
- class="stalux-beian-public-security-beian"
33
+ class="stalux-beian-public-security-beian stalux-u-items-center"
34
34
  >
35
35
  <img
36
36
  src="https://beian.mps.gov.cn/img/logo01.dd7ff50e.png"
@@ -21,6 +21,6 @@ const copyrightYear =
21
21
  : currentYear;
22
22
  ---
23
23
 
24
- <small class="stalux-copyright">
24
+ <small class="stalux-copyright stalux-u-flex stalux-u-justify-center stalux-u-flex-wrap">
25
25
  <span>&copy; {copyrightYear} {props.author || ""}. {t("footer.rightsReserved")}</span>
26
26
  </small>
@@ -16,7 +16,7 @@ const { showStats = true, wordCount, buildtime } = Astro.props;
16
16
  ---
17
17
 
18
18
  {showStats && (
19
- <p class="stalux-stats-site-stats">
19
+ <p class="stalux-stats-site-stats stalux-u-flex stalux-u-justify-center stalux-u-flex-wrap">
20
20
  <span id="vercount_container_site_uv">
21
21
  {t("footer.visitors")}
22
22
  <span id="vercount_value_site_uv">Loading...</span> {t("footer.visits")}
@@ -36,7 +36,7 @@ const { showStats = true, wordCount, buildtime } = Astro.props;
36
36
 
37
37
  {buildtime && (
38
38
  <div
39
- class="stalux-stats-site-build-time"
39
+ class="stalux-stats-site-build-time stalux-u-text-center"
40
40
  data-stalux-buildtime={buildtime}
41
41
  data-stalux-runtime-format={t("footer.runtimeFormat")}
42
42
  >
@@ -9,7 +9,7 @@ const showThemeInfoSection = !!(showPoweredBy || showThemeInfo);
9
9
  ---
10
10
 
11
11
  {showThemeInfoSection && (
12
- <div class="stalux-theme-info">
12
+ <div class="stalux-theme-info stalux-u-flex stalux-u-justify-center stalux-u-flex-wrap">
13
13
  {showPoweredBy && (
14
14
  <span>
15
15
  Powered by
@@ -50,8 +50,8 @@ const totalWordCount = await getTotalWordCount(Astro.logger);
50
50
  const formattedWordCount = formatWordCount(totalWordCount, siteConfig.lang || "zh-CN");
51
51
  ---
52
52
 
53
- <footer class="stalux-footer" transition:persist-props>
54
- <div class="stalux-footer-content">
53
+ <footer class="stalux-footer stalux-u-w-full stalux-u-text-center" transition:persist-props>
54
+ <div class="stalux-footer-content stalux-u-flex stalux-u-flex-col">
55
55
  <!-- 版权信息 -->
56
56
  {footerConfig?.copyright?.enabled && (
57
57
  <FooterCopyright author={author} startYear={footerConfig?.copyright?.startYear} />
@@ -20,7 +20,7 @@ const siteConfig = getSiteData(configEntries);
20
20
  <Stalux title={`${title} | ${siteConfig.title}`} description={description}>
21
21
  <div style="height: 3em;"></div>
22
22
  <Navs />
23
- <h1 class="stalux-page-title">{heading}</h1>
24
- {subheading && <div class="stalux-page-description">{subheading}</div>}
23
+ <h1 class="stalux-page-title stalux-u-text-center">{heading}</h1>
24
+ {subheading && <div class="stalux-page-description stalux-u-text-center">{subheading}</div>}
25
25
  <slot />
26
26
  </Stalux>
@@ -27,14 +27,14 @@ const navs = navsConfig?.items ?? [];
27
27
  </button>
28
28
 
29
29
  <!-- 侧边栏遮罩 -->
30
- <div data-ref="stalux-nav-overlay" class="stalux-nav-overlay"></div>
30
+ <div data-ref="stalux-nav-overlay" class="stalux-nav-overlay stalux-u-w-full"></div>
31
31
 
32
32
  <!-- 导航列表 -->
33
- <div class="stalux-nav-container">
33
+ <div class="stalux-nav-container stalux-u-w-full stalux-u-min-w-0">
34
34
  <button
35
35
  type="button"
36
36
  data-ref="stalux-nav-scroll-left"
37
- class="stalux-nav-scroll-btn"
37
+ class="stalux-nav-scroll-btn stalux-u-items-center stalux-u-justify-center"
38
38
  data-side="left"
39
39
  aria-label={t("nav.scrollLeft")}
40
40
  >
@@ -43,11 +43,14 @@ const navs = navsConfig?.items ?? [];
43
43
  </svg>
44
44
  </button>
45
45
 
46
- <ul data-ref="stalux-nav-list" class="stalux-nav-list">
46
+ <ul
47
+ data-ref="stalux-nav-list"
48
+ class="stalux-nav-list stalux-u-flex stalux-u-items-center stalux-u-justify-center stalux-u-flex-wrap stalux-u-w-full stalux-u-min-w-0"
49
+ >
47
50
  {navs.map((item) => {
48
51
  const NavIcon = item.icon ? getLucideIcon(item.icon, Astro.logger) : null;
49
52
  return (
50
- <li class="stalux-nav-item">
53
+ <li class="stalux-nav-item stalux-u-flex stalux-u-items-center">
51
54
  <a
52
55
  href={item.link}
53
56
  class="stalux-nav-link"
@@ -60,7 +63,7 @@ const navs = navsConfig?.items ?? [];
60
63
  </li>
61
64
  );
62
65
  })}
63
- <li class="stalux-nav-item">
66
+ <li class="stalux-nav-item stalux-u-flex stalux-u-items-center">
64
67
  <a
65
68
  href="#search"
66
69
  class="stalux-nav-link"
@@ -76,7 +79,7 @@ const navs = navsConfig?.items ?? [];
76
79
  <button
77
80
  type="button"
78
81
  data-ref="stalux-nav-scroll-right"
79
- class="stalux-nav-scroll-btn"
82
+ class="stalux-nav-scroll-btn stalux-u-items-center stalux-u-justify-center"
80
83
  data-side="right"
81
84
  aria-label={t("nav.scrollRight")}
82
85
  >
@@ -21,7 +21,7 @@ const description = post.data.desc || "";
21
21
  ---
22
22
 
23
23
  <article class="block h-full text-inherit no-underline">
24
- <div class="stalux-post-card">
24
+ <div class="stalux-post-card stalux-u-flex stalux-u-flex-col stalux-u-w-full stalux-u-min-w-0">
25
25
  {post.data.cover && (
26
26
  <a
27
27
  href={`/posts/${post.data.abbrlink}/`}
@@ -29,7 +29,7 @@ const description = post.data.desc || "";
29
29
  data-astro-prefetch="viewport"
30
30
  aria-label={post.data.title}
31
31
  >
32
- <div class="stalux-card-post-cover">
32
+ <div class="stalux-card-post-cover stalux-u-w-full stalux-u-min-w-0">
33
33
  <img
34
34
  src={post.data.cover}
35
35
  alt={post.data.title}
@@ -50,7 +50,7 @@ const description = post.data.desc || "";
50
50
  {post.data.title}
51
51
  </a>
52
52
  </h2>
53
- <div class="stalux-card-time">
53
+ <div class="stalux-card-time stalux-u-items-center stalux-u-flex-wrap">
54
54
  {post.data.date && (
55
55
  <time
56
56
  class="stalux-card-post-date"
@@ -68,16 +68,20 @@ const description = post.data.desc || "";
68
68
  </time>
69
69
  )}
70
70
  </div>
71
- <div class="stalux-card-post-description">{description}</div>
72
- <div class="stalux-card-post-meta">
73
- <div class="stalux-card-post-tags">
71
+ <div class="stalux-card-post-description stalux-u-min-w-0">{description}</div>
72
+ <div class="stalux-card-post-meta stalux-u-flex stalux-u-flex-col">
73
+ <div
74
+ class="stalux-card-post-tags stalux-u-flex stalux-u-items-center stalux-u-flex-wrap"
75
+ >
74
76
  {post.data.tags?.map((tag) => (
75
77
  <a class="a-none" href={`/tags/${tag}`} data-astro-prefetch>
76
78
  <span class="stalux-card-post-tag">{tag}</span>
77
79
  </a>
78
80
  ))}
79
81
  </div>
80
- <div class="stalux-card-post-categories">
82
+ <div
83
+ class="stalux-card-post-categories stalux-u-flex stalux-u-items-center stalux-u-flex-wrap"
84
+ >
81
85
  {post.data.categories?.map((category) => (
82
86
  <a class="a-none" href={`/categories/${category}`} data-astro-prefetch>
83
87
  <span class="stalux-card-post-category">{category}</span>
@@ -34,6 +34,17 @@ const CODE_FONT_ITALIC_INPUT = "src/assets/fonts/GoogleSansCode-Italic.woff2";
34
34
 
35
35
  const PAGE_SLICE_OUT_DIR = "node_modules/.astro/stalux-page-fonts";
36
36
 
37
+ /**
38
+ * Characters always reserved in every page subset, regardless of page content.
39
+ *
40
+ * Digits are extracted from rendered text nodes, so any number produced at
41
+ * runtime (clock, counters, dates, values injected by client scripts) or
42
+ * carried only in attributes would fall outside the subset and render as
43
+ * fallback glyphs — a visible "font splitting" bug. Reserving 0-9 costs
44
+ * ~10 glyphs per page and makes digit rendering unconditional.
45
+ */
46
+ export const RESERVED_GLYPHS = "0123456789";
47
+
37
48
  // ---------------------------------------------------------------------------
38
49
  // Types
39
50
  // ---------------------------------------------------------------------------
@@ -242,6 +253,7 @@ export function writePageFontSubset(
242
253
  cacheDir: string,
243
254
  publicUrlPrefix = "/_astro/fonts/",
244
255
  linkedStylesheetText = "",
256
+ extraChars = "",
245
257
  ): PageFontSubset | undefined {
246
258
  const document = parse(html);
247
259
  const body = findBody(document);
@@ -254,7 +266,8 @@ export function writePageFontSubset(
254
266
  linkedStylesheetText,
255
267
  ];
256
268
  collectBodyText(body, bodyText);
257
- const chars = [...new Set([...bodyText.join("")].filter((char) => !/\p{C}/u.test(char)))].sort(
269
+ const glyphSource = `${RESERVED_GLYPHS}${extraChars}${bodyText.join("")}`;
270
+ const chars = [...new Set([...glyphSource].filter((char) => !/\p{C}/u.test(char)))].sort(
258
271
  (a, b) => (a.codePointAt(0) as number) - (b.codePointAt(0) as number),
259
272
  );
260
273
  if (chars.length === 0) return undefined;
@@ -16,7 +16,10 @@ const { t } = createTranslator(siteConfig.lang || "zh-CN");
16
16
  >
17
17
  <div style="height: 3em;"></div>
18
18
  <Navs />
19
- <div class="stalux-404-error-container" data-pagefind-ignore>
19
+ <div
20
+ class="stalux-404-error-container stalux-u-flex stalux-u-items-center stalux-u-justify-center stalux-u-text-center"
21
+ data-pagefind-ignore
22
+ >
20
23
  <div class="stalux-404-error-content">
21
24
  <h1>404</h1>
22
25
  <p>{t("page404.pageNotFound")}</p>
@@ -19,8 +19,8 @@ const posts = await getCollection("posts", ({ data }) => !data.draft);
19
19
  >
20
20
  <div style="height: 3em;"></div>
21
21
  <Navs />
22
- <h1 class="stalux-page-title">{t("archives.heading")}</h1>
23
- <div class="stalux-page-description">
22
+ <h1 class="stalux-page-title stalux-u-text-center">{t("archives.heading")}</h1>
23
+ <div class="stalux-page-description stalux-u-text-center">
24
24
  {t("archives.desc", { n: posts.length })}
25
25
  </div>
26
26
  <ArchivesList posts={posts} />
@@ -18,7 +18,7 @@ const { t } = createTranslator(siteConfig.lang || "zh-CN");
18
18
  >
19
19
  <div style="height: 3em;"></div>
20
20
  <Navs />
21
- <h1 class="stalux-page-title">{t("categories.heading")}</h1>
22
- <div class="stalux-page-description">{t("categories.browseByTopic")}</div>
21
+ <h1 class="stalux-page-title stalux-u-text-center">{t("categories.heading")}</h1>
22
+ <div class="stalux-page-description stalux-u-text-center">{t("categories.browseByTopic")}</div>
23
23
  <CategoriesList />
24
24
  </Stalux>
@@ -20,11 +20,13 @@ import { getSiteData } from "@utils/config-utils";
20
20
  ---
21
21
 
22
22
  <Stalux title={siteTitle} description={siteDescription}>
23
- <div class="stalux-home-body">
24
- <div class="stalux-home-navs">
23
+ <div class="stalux-home-body stalux-u-flex stalux-u-items-center stalux-u-flex-col">
24
+ <div
25
+ class="stalux-home-navs stalux-u-flex stalux-u-justify-center stalux-u-w-full stalux-u-min-w-0"
26
+ >
25
27
  <Navs />
26
28
  </div>
27
- <h1 class="stalux-home-title">{siteTitle}</h1>
29
+ <h1 class="stalux-home-title stalux-u-text-center">{siteTitle}</h1>
28
30
  <h2
29
31
  class="sr-only"
30
32
  style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;"
@@ -18,7 +18,7 @@ const { t } = createTranslator(siteConfig.lang || "zh-CN");
18
18
  >
19
19
  <div style="height: 3em;"></div>
20
20
  <Navs />
21
- <h1 class="stalux-page-title">{t("tags.heading")}</h1>
22
- <div class="stalux-page-description">{t("tags.explore")}</div>
21
+ <h1 class="stalux-page-title stalux-u-text-center">{t("tags.heading")}</h1>
22
+ <div class="stalux-page-description stalux-u-text-center">{t("tags.explore")}</div>
23
23
  <TagsCloud />
24
24
  </Stalux>
@@ -16,8 +16,8 @@ const entries = await getCollection("words", ({ data }) => !data.draft);
16
16
  <Stalux title={`${t("words.title")} | ${siteConfig.title}`} description={t("words.description")}>
17
17
  <div style="height: 3em;"></div>
18
18
  <Navs />
19
- <h1 class="stalux-page-title">{t("words.heading")}</h1>
20
- <div class="stalux-page-description">
19
+ <h1 class="stalux-page-title stalux-u-text-center">{t("words.heading")}</h1>
20
+ <div class="stalux-page-description stalux-u-text-center">
21
21
  {t("words.desc", { n: entries.length })}
22
22
  </div>
23
23
  <WordList entries={entries} timezone={siteConfig.timezone} />
@@ -1,2 +1 @@
1
- @layer theme, base, components, utilities;
2
- @import "./theme/archives.css";
1
+ @import "./generated-archives.css";
@@ -1,2 +1 @@
1
- @layer theme, base, components, utilities;
2
- @import "./theme/article.css";
1
+ @import "./generated-article.css";
@@ -29,6 +29,10 @@
29
29
  background-color: transparent;
30
30
  cursor: pointer;
31
31
  text-decoration-skip-ink: auto;
32
+ position: relative;
33
+ transition:
34
+ color 0.2s ease,
35
+ text-shadow 0.2s ease;
32
36
  }
33
37
 
34
38
  .a-none {
@@ -43,13 +47,6 @@
43
47
  display: none !important;
44
48
  }
45
49
 
46
- a {
47
- position: relative;
48
- transition:
49
- color 0.2s ease,
50
- text-shadow 0.2s ease;
51
- }
52
-
53
50
  /* 下划线动画 */
54
51
  a::after {
55
52
  content: "";
@@ -1,2 +1 @@
1
- @layer theme, base, components, utilities;
2
- @import "./theme/categories.css";
1
+ @import "./generated-categories.css";
@@ -37,24 +37,19 @@
37
37
  .stalux-prose h2 {
38
38
  font-size: 2rem;
39
39
  font-weight: 650;
40
- line-height: 1.3;
41
40
  margin-top: 2.5rem;
42
- margin-bottom: var(--space-md);
43
41
  border-bottom: 2px solid var(--accent-30p);
44
42
  padding-bottom: 0.4rem;
45
43
  }
46
44
 
47
45
  .stalux-prose h3 {
48
- @apply font-semibold;
49
46
  font-size: 1.5rem;
50
47
  line-height: 1.4;
51
48
  margin-top: 2rem;
52
- margin-bottom: var(--space-md);
53
49
  color: var(--white-95p);
54
50
  }
55
51
 
56
52
  .stalux-prose h4 {
57
- @apply font-semibold;
58
53
  font-size: 1.25rem;
59
54
  line-height: 1.45;
60
55
  margin-top: 1.5rem;
@@ -63,7 +58,6 @@
63
58
  }
64
59
 
65
60
  .stalux-prose h5 {
66
- @apply font-semibold;
67
61
  font-size: 1.1rem;
68
62
  line-height: 1.5;
69
63
  margin-top: 1.5rem;
@@ -72,7 +66,6 @@
72
66
  }
73
67
 
74
68
  .stalux-prose h6 {
75
- @apply font-semibold;
76
69
  font-size: 1rem;
77
70
  line-height: 1.5;
78
71
  margin-top: 1.5rem;
@@ -1,3 +1,3 @@
1
1
  @layer theme, base, components, utilities;
2
- @layer components{.stalux-archive-container{max-width:1000px;padding:var(--space-xl) var(--space-md);margin:0 auto}.stalux-archive-month-section{content-visibility:auto;contain-intrinsic-block-size:auto var(--archive-estimate,600px);margin-left:calc(-1 * var(--tl-pad));padding-left:var(--tl-pad);margin-bottom:2rem;position:relative}.stalux-archive-no-posts{background-color:var(--black-10p);text-align:center;width:100%;color:var(--white-70p);border-radius:.5rem;padding:3rem 1rem;font-size:1.2rem}.stalux-archive-post-date{min-width:90px;color:var(--white-60p);font-size:.85rem}.stalux-archive-post-list{content-visibility:auto;contain-intrinsic-block-size:auto var(--archive-group-estimate,576px);padding:0 0 0 var(--tl-pad);margin:0 0 0 calc(-1 * var(--tl-pad));list-style-type:none}.stalux-archive-year-count{background-color:var(--accent-20p);color:var(--white-90p);border-radius:1rem;margin-left:1rem;padding:.3rem .8rem;font-size:.9rem}.stalux-archive-year-header{align-items:center;margin-bottom:1.5rem;display:flex}.stalux-archive-year-section{margin-bottom:var(--space-2xl);position:relative}.stalux-archives-archives-container{max-width:1000px;margin:0 auto;padding:2rem 1rem}.stalux-archive-post-link{text-decoration:none}.stalux-archive-timeline-container{--tl-line:var(--radius-sm);--tl-pad:var(--space-xl);padding-left:var(--tl-pad);position:relative}.stalux-archive-timeline-container:before{content:"";height:100%;width:var(--tl-line);background:linear-gradient(to bottom, var(--accent-80p), var(--accent-40p), var(--white-20p));border-radius:var(--border-medium);position:absolute;top:0;left:0}.stalux-archive-year-title{--dot:16px;color:var(--accent-90p);margin:0;font-size:1.8rem;position:relative}.stalux-archive-year-title:before{box-sizing:border-box;content:"";width:var(--dot);height:var(--dot);background-color:var(--accent-80p);border:3px solid var(--white-30p);left:calc(var(--tl-line) / 2 - var(--tl-pad) - var(--dot) / 2);z-index:2;border-radius:9999px;position:absolute;top:50%;transform:translateY(-50%)}.stalux-archive-post-item{--dot:6px;align-items:center;gap:.75rem;margin-bottom:1rem;padding:.35rem 0;display:flex;position:relative}@supports not (content-visibility:auto){.stalux-archive-month-section,.stalux-archive-post-list{contain-intrinsic-block-size:auto}}.stalux-archive-post-item:before{box-sizing:border-box;content:"";width:var(--dot);height:var(--dot);background-color:var(--white-60p);left:calc(var(--tl-line) / 2 - var(--tl-pad) - var(--dot) / 2);z-index:1;border-radius:9999px;position:absolute;top:50%;transform:translateY(-50%)}.stalux-archive-month-title{--dot:10px;margin:0 0 .25rem;font-size:1rem;position:relative}.stalux-archive-month-title:before{box-sizing:border-box;content:"";width:var(--dot);height:var(--dot);left:calc(var(--tl-line) / 2 - var(--tl-pad) - var(--dot) / 2);z-index:1;background-color:#fff9;border-radius:9999px;position:absolute;top:50%;transform:translateY(-50%)}@media (width<=768px){.stalux-archive-container{padding:1.5rem .5rem 2rem 1.5rem}.stalux-archive-page-header{margin-bottom:2rem}.stalux-archive-timeline-container{--tl-pad:1.5rem}.stalux-archive-year-section{margin-bottom:2rem}.stalux-archive-year-title{--dot:14px;font-size:1.6rem}.stalux-archive-month-title{font-size:1.2rem}}@media (width<=480px){.stalux-archive-container{padding:1.5rem .5rem 2rem 1.2rem}.stalux-archive-timeline-container{--tl-pad:1.2rem;--tl-line:3px}.stalux-archive-year-title{--dot:12px;font-size:1.4rem}.stalux-archive-month-title{font-size:1.1rem}}}@layer utilities,theme,base;
2
+ @layer components{.stalux-archive-month-section{content-visibility:auto;contain-intrinsic-block-size:auto var(--archive-estimate,600px);margin-left:calc(-1 * var(--tl-pad));padding-left:var(--tl-pad);margin-bottom:2rem;position:relative}.stalux-archive-post-list{content-visibility:auto;contain-intrinsic-block-size:auto var(--archive-group-estimate,576px);margin:0 0 0 calc(-1 * var(--tl-pad));padding:0 0 0 var(--tl-pad);list-style-type:none}.stalux-archive-year-section{margin-bottom:var(--space-2xl);position:relative}.stalux-archive-container{max-width:1000px;padding:var(--space-xl) var(--space-md);margin:0 auto}.stalux-archives-archives-container{max-width:1000px;margin:0 auto;padding:2rem 1rem}.stalux-archive-year-count{background-color:var(--accent-20p);color:var(--white-90p);border-radius:1rem;margin-left:1rem;padding:.3rem .8rem;font-size:.9rem}.stalux-archive-year-header{align-items:center;margin-bottom:1.5rem;display:flex}.stalux-archive-no-posts{background-color:var(--black-10p);text-align:center;width:100%;color:var(--white-70p);border-radius:.5rem;padding:3rem 1rem;font-size:1.2rem}.stalux-archive-post-date{min-width:90px;color:var(--white-60p);font-size:.85rem}.stalux-archive-post-link{text-decoration:none}.stalux-archive-timeline-container{padding-left:var(--tl-pad);--tl-line:var(--radius-sm);--tl-pad:var(--space-xl);position:relative}.stalux-archive-timeline-container:before{height:100%;width:var(--tl-line);border-radius:var(--border-medium);content:"";background:linear-gradient(to bottom, var(--accent-80p), var(--accent-40p), var(--white-20p));position:absolute;top:0;left:0}.stalux-archive-year-title{--dot:16px;color:var(--accent-90p);margin:0;font-size:1.8rem;position:relative}.stalux-archive-year-title:before{box-sizing:border-box;width:var(--dot);height:var(--dot);left:calc(var(--tl-line) / 2 - var(--tl-pad) - var(--dot) / 2);z-index:2;content:"";background-color:var(--accent-80p);border:3px solid var(--white-30p);border-radius:9999px;position:absolute;top:50%;transform:translateY(-50%)}.stalux-archive-post-item{--dot:6px;align-items:center;gap:.75rem;margin-bottom:1rem;padding:.35rem 0;display:flex;position:relative}.stalux-archive-post-item:before{box-sizing:border-box;width:var(--dot);height:var(--dot);left:calc(var(--tl-line) / 2 - var(--tl-pad) - var(--dot) / 2);z-index:1;content:"";background-color:var(--white-60p);border-radius:9999px;position:absolute;top:50%;transform:translateY(-50%)}.stalux-archive-month-title{--dot:10px;margin:0 0 .25rem;font-size:1rem;position:relative}.stalux-archive-month-title:before{box-sizing:border-box;width:var(--dot);height:var(--dot);left:calc(var(--tl-line) / 2 - var(--tl-pad) - var(--dot) / 2);z-index:1;content:"";background-color:#fff9;border-radius:9999px;position:absolute;top:50%;transform:translateY(-50%)}@supports not (content-visibility:auto){.stalux-archive-month-section,.stalux-archive-post-list{contain-intrinsic-block-size:auto}}@media (width<=768px){.stalux-archive-container{padding:1.5rem .5rem 2rem 1.5rem}.stalux-archive-page-header,.stalux-archive-year-section{margin-bottom:2rem}.stalux-archive-timeline-container{--tl-pad:1.5rem}.stalux-archive-year-title{--dot:14px;font-size:1.6rem}.stalux-archive-month-title{font-size:1.2rem}}@media (width<=480px){.stalux-archive-container{padding:1.5rem .5rem 2rem 1.2rem}.stalux-archive-timeline-container{--tl-pad:1.2rem;--tl-line:3px}.stalux-archive-year-title{--dot:12px;font-size:1.4rem}.stalux-archive-month-title{font-size:1.1rem}}}@layer utilities,theme,base;
3
3
  /*$vite$:1*/
@@ -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-height:100vh;padding:clamp(1.25rem,3vw,2.5rem);display:flex}.stalux-byline-author-bio{font-size:var(--font-size-small);margin:var(--space-md) 0 0;padding-top:var(--space-md);border-top:var(--border-thin) solid var(--white-10p);text-align:center;width:100%;color:var(--white-70p);line-height:1.6}.stalux-byline-author-card{background:var(--black-05p);border-radius:var(--radius-lg);box-shadow:var(--card-box-shadow);padding:var(--space-md);flex-direction:column;display:flex}.stalux-byline-sidebar-container,.stalux-post-footer-content{gap:var(--space-lg);flex-direction:column;display:flex}.stalux-license-box{background-color:var(--black-10p);border-radius:var(--radius-md);border:var(--border-thin) solid var(--white-20p);max-width:80%;margin:var(--space-lg) auto;padding:var(--space-lg);position:relative;overflow:hidden}.stalux-license-content{z-index:2;position:relative}.stalux-license-icon{justify-content:center;align-items:center;width:120px;height:120px;display:flex}.stalux-license-title{margin-top:0;margin-bottom:var(--space-sm);font-size:var(--font-size-subtitle);color:var(--white-90p)}.stalux-license-watermark{opacity:.15;z-index:1;transition:opacity var(--transition-normal);pointer-events:none;position:absolute;bottom:.5rem;right:.5rem}.stalux-pagination{margin:var(--space-lg) 0;border-top:var(--border-thin) solid var(--white-20p);border-bottom:var(--border-thin) solid var(--white-20p);padding-top:var(--space-lg);padding-bottom:var(--space-lg);width:100%}.stalux-pagination-arrow{transition:color var(--transition-normal);color:var(--white-70p);flex-shrink:0;justify-content:center;align-items:center;display:flex}.stalux-pagination-inner{gap:var(--space-md);justify-content:space-between;display:flex}.stalux-pagination-label{font-size:var(--font-size-small);color:var(--accent-90p);margin-bottom:var(--space-xs);font-weight:500}.stalux-pagination-link{gap:var(--space-sm);background:var(--black-10p);border-radius:var(--radius-md);transition:background-color var(--transition-normal), transform var(--transition-normal), box-shadow var(--transition-normal), color var(--transition-normal);box-shadow:var(--shadow-sidebar);box-sizing:border-box;min-width:0;padding:var(--space-md);color:var(--white-90p);flex:1 1 0;align-items:center;text-decoration:none;display:flex;position:relative}.stalux-pagination-title{font-size:var(--font-size-base);text-overflow:ellipsis;white-space:nowrap;max-width:100%;color:var(--white-90p);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(900px,100%);max-width:100%;margin:0 auto;padding:0 1rem 2rem;animation:.22s .36s both stalux-post-content-reveal}.stalux-post-layout{box-sizing:border-box;flex:1;grid-template-columns:minmax(220px,250px) minmax(0,1fr) minmax(220px,250px);gap:clamp(1.5rem,3vw,3.5rem);width:100%;max-width:1680px;margin:0 auto;padding:1.5rem 1rem;display:grid}.stalux-post-meta-item{transition:color var(--transition-fast) ease;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);border-radius:var(--radius-full,999px);transition:background var(--transition-fast) ease, transform var(--transition-fast) ease;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-source-link-row{justify-content:center;margin-top:1.2rem;display:flex}.stalux-post-taxonomy-container{gap:var(--space-xs);flex-direction:column;display:flex}.stalux-post-taxonomy-empty{font-size:var(--font-size-small);padding:var(--space-md) 0;text-align:center;color:var(--white-50p)}.stalux-post-taxonomy-item-column{padding:var(--space-sm) var(--space-xs);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;font-size:var(--font-size-small);color:var(--white-80p);text-decoration:none;display:inline-flex;transform:translate(0)}.stalux-post-taxonomy-item-pill{background:var(--white-10p);border-radius:var(--radius-full);font-size:var(--font-size-smaller);transition:color var(--transition-medium), transform var(--transition-medium);white-space:nowrap;color:var(--white-85p);border:none;padding:.4rem .8rem;text-decoration:none;display:inline-block;transform:translateY(0)}.stalux-post-taxonomy-title{font-size:var(--font-size-base);padding-bottom:var(--space-sm);border-bottom:var(--border-thin) solid var(--white-20p);color:var(--white-90p);margin:0;font-weight:600}.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-error{color:var(--accent-60p,#e74c3c)}.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{width:2em;height:2em;color:var(--foreground-60p,#333);cursor:pointer;background:0 0;border:none;border-radius:.375em;justify-content:center;align-items:center;padding:0;transition:color .2s;display:flex}.stalux-random-title{color:var(--foreground-60p,#333);margin:0;font-size:1.1em;font-weight:600}.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-empty{font-size:var(--font-size-small);color:var(--white-60p)}.stalux-toc-item{padding:var(--space-sm) var(--space-xs);font-size:var(--font-size-small);border-left:var(--border-thick) solid transparent;border-radius:0 var(--radius-sm) var(--radius-sm) 0;transition:color var(--transition-medium), background-color var(--transition-medium), border-left-color var(--transition-medium), transform var(--transition-medium);word-break:break-word;color:var(--white-70p);line-height:1.4;text-decoration:none;display:block}.stalux-toc-list{gap:var(--space-sm);flex-direction:column;margin:0;padding:0;list-style-type:none;display:flex}.stalux-toc-title{margin:0 0 var(--space-xs);font-size:var(--font-size-base);padding-bottom:var(--space-sm);border-bottom:var(--border-thin) solid var(--white-20p);color:var(--white-90p);font-weight:600}.stalux-byline-author-section{width:100%}.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-post-taxonomy-list-column{flex-direction:column}.stalux-post-taxonomy-list-wrap{flex-wrap:wrap}.stalux-random-refresh:hover{color:var(--accent-60p,#06c)}.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}@keyframes stalux-random-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.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:hover{transform:translate(.25em)}.stalux-random-list>li>a:active{transform:translate(.125em)}@media (prefers-color-scheme:dark){.stalux-random-header{border-bottom-color:#ffffff1a}.stalux-random-title,.stalux-random-refresh{color:var(--foreground-60p,#e0e0e0)}.stalux-random-loading,.stalux-random-error,.stalux-random-no-more{color:var(--foreground-60p,#b0b0b0)}.stalux-random-list>li>a{color:var(--foreground-60p,#e0e0e0)}}.stalux-toc-item:hover{transform:translateX(calc(-1 * var(--space-sm)))}.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}.stalux-post-taxonomy-item-column:hover{transform:translate(4px)}.stalux-post-taxonomy-item-column:active{transform:translate(2px)}.stalux-post-taxonomy-item-pill:hover{transform:translateY(-2px)}.stalux-post-taxonomy-item-pill:active{transform:translateY(-1px)}:is(.stalux-sidebar,.stalux-sidebar-right){gap:var(--space-lg);width:100%;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}:is(.stalux-sidebar,.stalux-sidebar-right)::-webkit-scrollbar{display:none}@media (width<=1400px){.stalux-sidebar-right{width:240px}}@media (width<=1200px){:is(.stalux-sidebar,.stalux-sidebar-right){display:none}}@media (width<=768px){:is(.stalux-sidebar,.stalux-sidebar-right),.stalux-sidebar-right{display:none}}.stalux-pagination-link:before{pointer-events:none;content:"";background:linear-gradient(120deg, transparent, var(--accent-20p), transparent);width:100%;height:100%;transition:transform var(--transition-slow);transform-origin:0;position:absolute;top:0;left:0;transform:scaleX(0)}.stalux-pagination-link:hover{box-shadow:var(--shadow-raised-hover);transform:translateY(-3px)}.stalux-pagination-link:hover:before{transform:scaleX(1)}.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}@media (width<=768px){.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}}@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>:first-child{margin:0}.stalux-post-layout>:nth-child(2){min-width:0;margin:0}.stalux-post-layout>:nth-child(3){margin:0}@media (width>=1600px){.stalux-post-layout{grid-template-columns:minmax(240px,280px) minmax(0,1fr) minmax(240px,280px);gap:4rem;padding:2rem 1.5rem}}@media (width<=1400px){.stalux-post-layout{grid-template-columns:260px 1fr 260px;gap:3.5rem;padding:1.5rem 1rem}}@media (width<=1200px){.stalux-post-layout{grid-template-columns:1fr;gap:2rem;padding:1rem .75rem}}@media (width<=768px){.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}}@media (width<=480px){.stalux-post-layout{gap:1.25rem;padding:0}}@media print{.stalux-post-layout{grid-template-columns:1fr;gap:2rem}.stalux-post-layout>:first-child,.stalux-post-layout>:nth-child(3){display:none}}@media (prefers-reduced-motion:reduce){.stalux-post-page *{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (prefers-contrast:more){.stalux-post-layout{gap:2rem}}.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:hover,.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;transform:translateY(-1px)}.stalux-post-source-link:after{display:none!important}@keyframes stalux-post-content-reveal{0%{opacity:0}to{opacity:1}}@media (width<=1024px){.stalux-post-title{font-size:2rem}.stalux-post-metadata{gap:1rem}}@media (width<=768px){.stalux-article{box-sizing:border-box;width:100%;box-shadow:none;background:0 0;margin:0;padding:0}.stalux-post-body{width:100%;margin:0;padding:0 .75rem}.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}}@keyframes stalux-post-fade-in-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.stalux-license-author,.stalux-license-url,.stalux-license-license{margin:var(--space-sm) 0;font-size:var(--font-size-small);color:var(--white-80p);line-height:1.6}.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:hover{color:var(--stalux-accent-color);border-bottom-color:var(--accent-80p)}.stalux-license-box a:active{color:var(--accent-70p)}.stalux-license-box:hover .stalux-license-watermark{opacity:.25}.stalux-license-icon svg{width:100%;height:100%;display:block}.stalux-license-icon path{fill:currentColor;color:var(--white-full)}@media (width<=768px){.stalux-license-box{max-width:95%;padding:var(--space-md);margin:var(--space-md) auto}.stalux-license-title{font-size:var(--font-size-base);margin-bottom:var(--space-xs)}.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-license-box{max-width:100%;padding:var(--space-sm);margin:var(--space-md) 0}.stalux-license-title{font-size:var(--font-size-small);margin-bottom:var(--space-2xs)}.stalux-license-author,.stalux-license-url,.stalux-license-license{margin:var(--space-2xs) 0;font-size:.8rem}.stalux-license-icon{width:60px;height:60px}}}@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-height:100vh;padding:clamp(1.25rem,3vw,2.5rem);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(900px,100%);max-width:100%;margin:0 auto;padding:0 1rem 2rem;animation:.22s .36s both stalux-post-content-reveal}.stalux-post-layout{box-sizing:border-box;flex:1;grid-template-columns:minmax(220px,250px) minmax(0,1fr) minmax(220px,250px);gap:clamp(1.5rem,3vw,3.5rem);width:100%;max-width:1680px;margin:0 auto;padding:1.5rem 1rem;display:grid}.stalux-post-meta-item{transition:color var(--transition-fast) ease;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) ease, transform var(--transition-fast) ease;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-random-refresh:hover{color:var(--accent-60p,#06c)}.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:hover{transform:translate(.25em)}.stalux-random-list>li>a:active{transform:translate(.125em)}.stalux-toc-item:hover{transform:translateX(calc(-1 * var(--space-sm)))}.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}.stalux-post-taxonomy-item-column:hover{transform:translate(4px)}.stalux-post-taxonomy-item-column:active{transform:translate(2px)}.stalux-post-taxonomy-item-pill:hover{transform:translateY(-2px)}.stalux-post-taxonomy-item-pill:active{transform:translateY(-1px)}:is(.stalux-sidebar,.stalux-sidebar-right){gap:var(--space-lg);width:100%;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:is(:hover,:focus-visible){background:var(--white-05p);outline-color:var(--accent-50p)}a.stalux-pagination-link:focus-visible{outline:2px solid var(--stalux-accent-color);outline-offset:3px}a.stalux-pagination-prev-post:is(:hover,:focus-visible) .stalux-pagination-arrow{translate:-2px}a.stalux-pagination-next-post:is(:hover,: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>:first-child,.stalux-post-layout>:nth-child(3){margin:0}.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:hover,.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;transform:translateY(-1px)}.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:hover{color:var(--stalux-accent-color);border-bottom-color:var(--accent-80p)}.stalux-license-box a:active{color:var(--accent-70p)}.stalux-license-box:hover .stalux-license-watermark{opacity:.25}.stalux-license-icon svg{width:100%;height:100%;display:block}.stalux-license-icon path{color:var(--white-full);fill:currentColor}@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>=1600px){.stalux-post-layout{grid-template-columns:minmax(240px,280px) minmax(0,1fr) minmax(240px,280px);gap:4rem;padding:2rem 1.5rem}}@media (width<=1400px){.stalux-sidebar-right{width:240px}.stalux-post-layout{grid-template-columns:260px 1fr 260px;gap:3.5rem;padding:1.5rem 1rem}}@media (width<=1200px){:is(.stalux-sidebar,.stalux-sidebar-right){display:none}.stalux-post-layout{grid-template-columns:1fr;gap:2rem;padding:1rem .75rem}}@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:0}.stalux-post-body{width:100%;margin:0;padding:0 .75rem}.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,3 +1,3 @@
1
1
  @layer theme, base, components, utilities;
2
- @layer components{.stalux-categories{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;max-width:1200px;margin:30px auto;padding:0;list-style-type:none;display:grid}.stalux-category-card{background-color:var(--surface-glass);box-shadow:var(--card-box-shadow);height:fit-content;padding:var(--space-lg);color:var(--white-full);border-radius:.8rem;flex-direction:column;transition:transform .22s,background-color .22s;display:flex;position:relative;overflow:hidden}.stalux-category-content{flex:1;padding-right:40px}.stalux-category-icon{z-index:2;transform-origin:50%;background:var(--black-15p);border-radius:var(--radius-md);width:28px;height:28px;box-shadow:var(--shadow-sm);opacity:.8;color:var(--white-50p);padding:5px;transition:transform .24s,background-color .24s,color .24s;position:absolute;top:10px;right:10px}.stalux-categoryheader{width:100%;height:100%;color:var(--white-full);align-items:center;text-decoration:none;display:flex;position:relative}.stalux-categories>li{content-visibility:auto;contain-intrinsic-block-size:auto 180px;overflow-clip-margin:30px}@supports not (content-visibility:auto){.stalux-categories>li{contain-intrinsic-block-size:auto}}.stalux-category-card:before{content:"";z-index:1;background:linear-gradient(120deg,#fff0,#ffffff0d,#fff0);transition:transform .36s;position:absolute;inset:0;transform:translate(-100%)}.stalux-category-card:hover{background-color:var(--white-05p);box-shadow:var(--card-box-shadow-hover);transform:translateY(-3px)}.stalux-category-card:hover:before{transform:translate(100%)}.stalux-category-card:hover .stalux-category-icon{background:var(--accent-30p);color:var(--white-90p);box-shadow:0 3px 8px var(--accent-30p);opacity:1;transform:rotate(-15deg)translateY(-3px)}.stalux-category-icon svg{width:100%;height:100%}}@layer utilities,theme,base;
2
+ @layer components{.stalux-categories{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;max-width:1200px;margin:30px auto;padding:0;list-style-type:none;display:grid}.stalux-category-card{background-color:var(--surface-glass);height:fit-content;padding:var(--space-lg);color:var(--white-full);box-shadow:var(--card-box-shadow);border-radius:.8rem;flex-direction:column;transition:transform .22s,background-color .22s;display:flex;position:relative;overflow:hidden}.stalux-category-content{flex:1;padding-right:40px}.stalux-category-icon{transform-origin:50%;background:var(--black-15p);box-shadow:var(--shadow-sm);opacity:.8;z-index:2;border-radius:var(--radius-md);width:28px;height:28px;color:var(--white-50p);padding:5px;transition:transform .24s,background-color .24s,color .24s;position:absolute;top:10px;right:10px}.stalux-categoryheader{width:100%;height:100%;color:var(--white-full);align-items:center;text-decoration:none;display:flex;position:relative}.stalux-categories>li{content-visibility:auto;contain-intrinsic-block-size:auto 180px;overflow-clip-margin:30px}.stalux-category-card:before{z-index:1;content:"";background:linear-gradient(120deg,#fff0,#ffffff0d,#fff0);transition:transform .36s;position:absolute;inset:0;transform:translate(-100%)}.stalux-category-card:hover{background-color:var(--white-05p);box-shadow:var(--card-box-shadow-hover);transform:translateY(-3px)}.stalux-category-card:hover:before{transform:translate(100%)}.stalux-category-card:hover .stalux-category-icon{opacity:1;color:var(--white-90p);background:var(--accent-30p);box-shadow:0 3px 8px var(--accent-30p);transform:rotate(-15deg)translateY(-3px)}.stalux-category-icon svg{width:100%;height:100%}@supports not (content-visibility:auto){.stalux-categories>li{contain-intrinsic-block-size:auto}}}@layer utilities,theme,base;
3
3
  /*$vite$:1*/
@@ -1,3 +1,3 @@
1
1
  @layer theme, base, components, utilities;
2
- @layer components{.stalux-link-card{color:#fff;width:180px;min-height:200px;box-shadow:var(--card-box-shadow);background:var(--surface-glass);border-radius:10px;flex-direction:column;padding:16px;text-decoration:none;transition:transform .22s,background-color .22s,border-color .22s;display:flex;overflow:visible}.stalux-link-card-avatar{justify-content:center;margin-bottom:12px;display:flex}.stalux-link-card-content{text-align:center;flex-direction:column;flex:1;display:flex}.stalux-links{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));justify-items:center;gap:20px;max-width:1200px;margin:30px auto;padding:0;list-style-type:none;display:grid}.stalux-link-list-item{display:flex}@media (width>=1400px){.stalux-links{grid-template-columns:repeat(5,1fr)}}@media (1100px<=width<=1399px){.stalux-links{grid-template-columns:repeat(4,1fr)}}@media (768px<=width<=1099px){.stalux-links{grid-template-columns:repeat(3,1fr)}}@media (480px<=width<=767px){.stalux-links{grid-template-columns:repeat(2,1fr);gap:16px}}@media (width<=479px){.stalux-links{grid-template-columns:1fr;gap:14px;margin:20px auto}}.stalux-link-card:hover{background:var(--white-05p);box-shadow:var(--card-box-shadow-hover);transform:translateY(-3px)}.stalux-link-card-avatar img{object-fit:cover;border:2px solid var(--accent-60p);transform-origin:50%;border-radius:9999px;width:80px;height:80px;transition:transform .22s,border-color .22s}.stalux-link-card:hover .stalux-link-card-avatar img{box-shadow:0 0 20px var(--accent-50p);border-color:var(--accent-85p);animation:.7s ease-in-out stalux-link-avatar-spin;transform:scale(1.04)}@keyframes stalux-link-avatar-spin{0%{transform:rotate(0)scale(1.04)}to{transform:rotate(360deg)scale(1.04)}}.stalux-link-card-title{white-space:nowrap;background:linear-gradient(90deg, var(--white-95p), var(--accent-90p));-webkit-text-fill-color:transparent;text-overflow:ellipsis;-webkit-background-clip:text;background-clip:text;margin:0 0 8px;font-size:1.1rem;overflow:hidden}.stalux-link-card-description{color:var(--white-78p);-webkit-line-clamp:3;text-overflow:ellipsis;-webkit-box-orient:vertical;margin:0;font-size:.95rem;line-height:1.45;display:-webkit-box;overflow:hidden}@media (width<=480px){.stalux-link-card{padding:14px}.stalux-link-card-avatar img{width:70px;height:70px}.stalux-link-card-title{font-size:1rem}.stalux-link-card-description{font-size:.9rem}}@media (prefers-reduced-motion:reduce){.stalux-link-card:hover .stalux-link-card-avatar img{transition:none;animation:none;transform:none}}}@layer utilities,theme,base;
2
+ @layer components{.stalux-link-card{color:#fff;background:var(--surface-glass);width:180px;min-height:200px;box-shadow:var(--card-box-shadow);border-radius:10px;flex-direction:column;padding:16px;text-decoration:none;transition:transform .22s,background-color .22s,border-color .22s;display:flex;overflow:visible}.stalux-link-card-content{text-align:center;flex-direction:column;flex:1;display:flex}.stalux-links{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));justify-items:center;gap:20px;max-width:1200px;margin:30px auto;padding:0;list-style-type:none;display:grid}.stalux-link-card-avatar{justify-content:center;margin-bottom:12px;display:flex}.stalux-link-list-item{display:flex}.stalux-link-card:hover{background:var(--white-05p);box-shadow:var(--card-box-shadow-hover);transform:translateY(-3px)}.stalux-link-card-avatar img{object-fit:cover;border:2px solid var(--accent-60p);transform-origin:50%;border-radius:9999px;width:80px;height:80px;transition:transform .22s,border-color .22s}.stalux-link-card:hover .stalux-link-card-avatar img{box-shadow:0 0 20px var(--accent-50p);border-color:var(--accent-85p);animation:.7s ease-in-out stalux-link-avatar-spin;transform:scale(1.04)}.stalux-link-card-title{white-space:nowrap;background:linear-gradient(90deg, var(--white-95p), var(--accent-90p));-webkit-text-fill-color:transparent;text-overflow:ellipsis;-webkit-background-clip:text;background-clip:text;margin:0 0 8px;font-size:1.1rem;overflow:hidden}.stalux-link-card-description{color:var(--white-78p);-webkit-line-clamp:3;text-overflow:ellipsis;-webkit-box-orient:vertical;margin:0;font-size:.95rem;line-height:1.45;display:-webkit-box;overflow:hidden}@media (1100px<=width<=1399px){.stalux-links{grid-template-columns:repeat(4,1fr)}}@media (480px<=width<=767px){.stalux-links{grid-template-columns:repeat(2,1fr);gap:16px}}@media (768px<=width<=1099px){.stalux-links{grid-template-columns:repeat(3,1fr)}}@media (width>=1400px){.stalux-links{grid-template-columns:repeat(5,1fr)}}@media (width<=480px){.stalux-link-card{padding:14px}.stalux-link-card-avatar img{width:70px;height:70px}.stalux-link-card-title{font-size:1rem}.stalux-link-card-description{font-size:.9rem}}@media (width<=479px){.stalux-links{grid-template-columns:1fr;gap:14px;margin:20px auto}}@media (prefers-reduced-motion:reduce){.stalux-link-card:hover .stalux-link-card-avatar img{transition:none;animation:none;transform:none}}}@layer utilities,theme,base;
3
3
  /*$vite$:1*/