@rathnasgala/theme 2.0.10 → 2.0.12
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 +13 -0
- package/package.json +2 -2
- package/payload/.gala/managed-files.json +9 -7
- package/payload/eleventy.config.js +5 -2
- package/payload/src/_includes/layouts/base.njk +2 -1
- package/payload/src/assets/theme.css +1 -1
- package/payload/src/assets/version.js +74 -0
- package/payload/src/styles/theme.css +13 -1
- package/payload/src/version.njk +33 -0
package/README.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# @rathnasgala/theme
|
|
2
|
+
|
|
3
|
+
This package contains the versioned, integrity-checked site framework that Gala uses to turn an
|
|
4
|
+
author's repository into a fast static publication. Gala installs and updates it automatically; it
|
|
5
|
+
is published separately so every generated site can identify the exact framework it runs.
|
|
6
|
+
|
|
7
|
+
It is not intended as a standalone theme API. To see the complete writing and publishing experience,
|
|
8
|
+
visit [gala67.com](https://gala67.com) or create a publication:
|
|
9
|
+
|
|
10
|
+
```console
|
|
11
|
+
npx --yes @rathnasgala/cli@latest init field-notes
|
|
12
|
+
```
|
|
13
|
+
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rathnasgala/theme",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.12",
|
|
4
4
|
"description": "Managed Gala static-site theme payload",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"url": "git+https://github.com/rathnasgala/site-template.git"
|
|
9
9
|
},
|
|
10
10
|
"gala": {
|
|
11
|
-
"sourceCommit": "
|
|
11
|
+
"sourceCommit": "288c88e981fc57ab267a3ab7a1c22757a9a2649b"
|
|
12
12
|
},
|
|
13
13
|
"files": [
|
|
14
14
|
"payload"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"themePackage": {
|
|
4
4
|
"name": "@rathnasgala/theme",
|
|
5
|
-
"version": "2.0.
|
|
5
|
+
"version": "2.0.12",
|
|
6
6
|
"availableDesignThemes": [
|
|
7
7
|
"editorial",
|
|
8
8
|
"modern",
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
"securityAdvisories": []
|
|
12
12
|
},
|
|
13
13
|
"requiredBudgets": {
|
|
14
|
-
"managedJavaScriptBytes":
|
|
15
|
-
"managedCssBytes":
|
|
14
|
+
"managedJavaScriptBytes": 67584,
|
|
15
|
+
"managedCssBytes": 34816
|
|
16
16
|
},
|
|
17
17
|
"files": {
|
|
18
18
|
".gala/publish.yml.template": "d93da94c10378693cdd927cd6623a003ff57c15d8b8aeba3644c914f2753d824",
|
|
19
19
|
".gitignore": "b5fa24e10155097a0d372926fd2e59e6072e7cc2cb6399bbfb4beb8b33ea315b",
|
|
20
|
-
"eleventy.config.js": "
|
|
20
|
+
"eleventy.config.js": "7772953f8c55673d9e11fb803c75470f8a61747de9e1cec0d03bbbedb7fae246",
|
|
21
21
|
"lib/accent.js": "e6c921e0a3afe094b18709e3e40baa06692017fa6576d84b1ec6b7d788da8dd0",
|
|
22
22
|
"lib/build-manifest.js": "240dd6900e1277986fa935449ad1757641c47a325599b8b847a4e8dfcb50181c",
|
|
23
23
|
"lib/engagement-snapshot.js": "298c11b1ab135a3a98a4e31b6320ab60dfd7fda6a9d9053df37d86282a5a6687",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"src/_data/languages.js": "1358748f7fa2f74406d3295a030827d6229a53e94da72cf712e719d7a356aeac",
|
|
42
42
|
"src/_data/site.js": "432be73b49c20f088c304a2f7d7cd85906a747e0f3b381a4b395c5c44d68bb57",
|
|
43
43
|
"src/_includes/components/ui.njk": "0634c206c2db0507f77686635e3b406e1d8878011fd7eac64563df8499fe8f60",
|
|
44
|
-
"src/_includes/layouts/base.njk": "
|
|
44
|
+
"src/_includes/layouts/base.njk": "054460a1293e55a5abc5902899ef2f7a6e256b50aa51375e8d209e2cf2ec2aeb",
|
|
45
45
|
"src/_includes/layouts/post.njk": "46fd004846aed6c7d0668bad4ed0239f001038c33feb66a71638ee811c44f0ba",
|
|
46
46
|
"src/_includes/layouts/prism-configuration.njk": "c984441ac50465eb6ee0e050c68c054e3a0bca98960fb92fb2f5795443301594",
|
|
47
47
|
"src/404.njk": "be0d44370ac5402156aaf3d32ea581057bc61ec94c1a5f92bb809733af7a8a20",
|
|
@@ -59,7 +59,8 @@
|
|
|
59
59
|
"src/assets/reader.js": "0be5a7f7bae2c274f65e34421d74d7abcc228112fbbf49ec52e69980dad86ecd",
|
|
60
60
|
"src/assets/search.js": "df425f0239277792ad39f2138bc89cb66cc4ecda5ed59042d46abc2f05372088",
|
|
61
61
|
"src/assets/theme-mode.js": "944b29db11a577961a60ddcfa52f07ef2411f3f3631bea85bd79be16428c08be",
|
|
62
|
-
"src/assets/theme.css": "
|
|
62
|
+
"src/assets/theme.css": "342bf3219520c791340fd56fabc02e005fdc61d18500f1cb959643620695d97c",
|
|
63
|
+
"src/assets/version.js": "fd555379eb050da48d4bcd25a8ee64dcd607d758c4f838c8d3e89fad90b59dfd",
|
|
63
64
|
"src/client/reader.js": "643aec955c5beb6f902c737313dbc1a8232150fcb5d800350aa7fb1fb69f1760",
|
|
64
65
|
"src/cname.11ty.js": "206fc224df91c569e18312158e7f69803061f2952513f501ada54bd06c4f8006",
|
|
65
66
|
"src/contact.njk": "f4d74d038781e15af0acef571901c91e7753a2e21b6bef617429585698839a34",
|
|
@@ -72,7 +73,8 @@
|
|
|
72
73
|
"src/search-index.11ty.js": "700dc2a2be0ef20de3a828a4612fcf7a082691eade29c6e1d75f09c24b6c6024",
|
|
73
74
|
"src/search.njk": "63f2e8aeebb63c90da2e375eece639ce096cad1eff7f28628cafc46faf7ceee6",
|
|
74
75
|
"src/sitemap.11ty.js": "4f233e94fb4a913ad5659116518432ed264984a7b622eba3558c77b4ec6435dc",
|
|
75
|
-
"src/styles/theme.css": "
|
|
76
|
+
"src/styles/theme.css": "6fc1e8b8776a8ef52000e2f8a6afa082c9bf19ac5aed166377b5a4c7717267f1",
|
|
77
|
+
"src/version.njk": "c0833dcf14a246c069903d35f8be92d410935b968a26346af237bc1392c88340",
|
|
76
78
|
"static/favicon.ico": "ad3cb0b02f0164f3af6280d0bfe712879d55cec0e9a7a567f658aaddca5a55a2",
|
|
77
79
|
"static/robots.txt": "16ceb5ee3e0dc13aa9adf31a3ebbe45a1d965b8c2b9f72eaf84e5911e140ed95"
|
|
78
80
|
},
|
|
@@ -33,13 +33,15 @@ export default async function (eleventyConfig) {
|
|
|
33
33
|
throw new TypeError('GALA_BUILD_COMMIT must be a lowercase commit SHA');
|
|
34
34
|
}
|
|
35
35
|
const repository = site.site.repository;
|
|
36
|
+
const publicationPathPrefix = site.hosting.pathPrefix === ''
|
|
37
|
+
? ''
|
|
38
|
+
: site.hosting.pathPrefix.replace(/\/$/, '');
|
|
36
39
|
const buildIdentity = buildCommit != null
|
|
37
40
|
&& /^[A-Za-z0-9](?:[A-Za-z0-9-]{0,37}[A-Za-z0-9])?\/[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/.test(repository ?? '')
|
|
38
41
|
? Object.freeze({
|
|
39
42
|
commit: buildCommit,
|
|
40
43
|
shortCommit: buildCommit.slice(0, 8),
|
|
41
|
-
versionUrl:
|
|
42
|
-
+ `&commit=${buildCommit}`
|
|
44
|
+
versionUrl: `${publicationPathPrefix}/s/version/`
|
|
43
45
|
})
|
|
44
46
|
: null;
|
|
45
47
|
eleventyConfig.addGlobalData('attributionTier', attributionTier);
|
|
@@ -52,6 +54,7 @@ export default async function (eleventyConfig) {
|
|
|
52
54
|
eleventyConfig.addPassthroughCopy({
|
|
53
55
|
'src/assets/theme.css': 'assets/theme.css',
|
|
54
56
|
'src/assets/reader.js': 'assets/reader.js',
|
|
57
|
+
'src/assets/version.js': 'assets/version.js',
|
|
55
58
|
'src/assets/favicon.svg': 'assets/favicon.svg',
|
|
56
59
|
'src/assets/embed-codepen.svg': 'assets/embed-codepen.svg',
|
|
57
60
|
'src/assets/embed-gist.svg': 'assets/embed-gist.svg',
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
-
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; base-uri 'self'; object-src 'none'; script-src 'self' 'sha256-{{ themeBootstrap | sha256Csp }}'{% if prismBootstrap %} 'sha256-{{ prismBootstrap | sha256Csp }}'{% endif %}{% if seo %} 'sha256-{{ seo.structuredDataJson | sha256Csp }}'{% endif %}; style-src 'self'; img-src 'self' data: https:; connect-src 'self' {{ site.platform.apiBaseUrl or 'https://api.gala67.com' }}; frame-src {{ site.platform.apiBaseUrl or 'https://api.gala67.com' }} https://www.youtube-nocookie.com https://codepen.io; form-action 'self'; upgrade-insecure-requests">
|
|
6
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; base-uri 'self'; object-src 'none'; script-src 'self' 'sha256-{{ themeBootstrap | sha256Csp }}'{% if prismBootstrap %} 'sha256-{{ prismBootstrap | sha256Csp }}'{% endif %}{% if seo %} 'sha256-{{ seo.structuredDataJson | sha256Csp }}'{% endif %}; style-src 'self'; img-src 'self' data: https:; connect-src 'self' {{ site.platform.apiBaseUrl or 'https://api.gala67.com' }}{% if versionPage %} https://registry.npmjs.org https://app.gala67.com{% endif %}; frame-src {{ site.platform.apiBaseUrl or 'https://api.gala67.com' }} https://www.youtube-nocookie.com https://codepen.io; form-action 'self'; upgrade-insecure-requests">
|
|
7
7
|
<script>{{ themeBootstrap | safe }}</script>
|
|
8
8
|
{% if prismBootstrap %}<script>{{ prismBootstrap | safe }}</script>{% endif %}
|
|
9
9
|
<title>{{ post.frontmatter.title or title }} · {{ site.site.name }}</title>
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
<link rel="stylesheet" href="{{ '/custom.css' | url }}">
|
|
30
30
|
<link rel="icon" href="{{ '/assets/favicon.svg' | url }}" type="image/svg+xml">
|
|
31
31
|
<script src="{{ '/assets/reader.js' | url }}" defer></script>
|
|
32
|
+
{% if versionPage %}<script src="{{ '/assets/version.js' | url }}" defer></script>{% endif %}
|
|
32
33
|
</head>
|
|
33
34
|
<body{% if post %} class="gala-page--article"{% endif %}>
|
|
34
35
|
<a class="gala-skip-link" href="#main-content">Skip to content</a>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{color-scheme:light dark;--gala-color-background: light-dark(#fdfcfb, #131211);--gala-color-surface: light-dark(#f6f4f1, #1c1a18);--gala-color-raised: light-dark(#fffffe, #24211f);--gala-color-text: light-dark(#1a1817, #f2efec);--gala-color-muted: light-dark(#6b645e, #a8a099);--gala-color-border: light-dark(#968e86, #6b645e);--gala-color-hairline: light-dark(#e8e3dd, #2a2724);--gala-color-border-strong: light-dark(#c9c2ba, #46413d);--gala-color-accent: light-dark( var(--gala-accent-light, #8a4b2a), var(--gala-accent-dark, #e8a87c));--gala-font-body: ui-sans-serif, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--gala-font-display: var(--gala-font-body);--gala-font-mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, monospace;--gala-text-xs: .78rem;--gala-text-sm: .875rem;--gala-text-base: clamp(1rem, .97rem + .15vw, 1.0625rem);--gala-text-lg: clamp(1.15rem, 1.09rem + .3vw, 1.3rem);--gala-text-xl: clamp(1.4rem, 1.28rem + .6vw, 1.75rem);--gala-text-2xl: clamp(1.75rem, 1.5rem + 1.2vw, 2.4rem);--gala-text-3xl: clamp(2.2rem, 1.7rem + 2.4vw, 3.4rem);--gala-leading-tight: 1.15;--gala-leading-body: 1.65;--gala-tracking-tight: -.018em;--gala-tracking-wide: .08em;--gala-weight-display: 640;--gala-step: 1rem;--gala-space-2xs: calc(var(--gala-step) * .25);--gala-space-xs: calc(var(--gala-step) * .5);--gala-space-sm: calc(var(--gala-step) * .75);--gala-space-md: var(--gala-step);--gala-space-lg: calc(var(--gala-step) * 1.75);--gala-space-xl: calc(var(--gala-step) * 3);--gala-space-page: clamp(1.25rem, 5vw, 4.5rem);--gala-radius-control: .625rem;--gala-radius-surface: 1rem;--gala-shadow-high: 0 1px 2px light-dark(rgb(26 24 23 / 5%), rgb(0 0 0 / 35%)), 0 12px 28px -12px light-dark(rgb(26 24 23 / 18%), rgb(0 0 0 / 60%));--gala-motion-fast: .12s;--gala-motion-base: .22s;--gala-ease: cubic-bezier(.2, 0, 0, 1);--gala-content-width: 72rem;--gala-measure: 68ch;--gala-widget-min-block-size: 8rem}:root[data-mode=light]{color-scheme:light;--gala-color-background: #fdfcfb;--gala-color-surface: #f6f4f1;--gala-color-raised: #fffffe;--gala-color-text: #1a1817;--gala-color-muted: #6b645e;--gala-color-border: #968e86;--gala-color-hairline: #e8e3dd;--gala-color-border-strong: #c9c2ba;--gala-color-accent: var(--gala-accent-light, #8a4b2a)}:root[data-mode=dark]{color-scheme:dark;--gala-color-background: #131211;--gala-color-surface: #1c1a18;--gala-color-raised: #24211f;--gala-color-text: #f2efec;--gala-color-muted: #a8a099;--gala-color-border: #6b645e;--gala-color-hairline: #2a2724;--gala-color-border-strong: #46413d;--gala-color-accent: var(--gala-accent-dark, #e8a87c)}:root[data-palette=ocean]{--gala-color-background: light-dark(#f8fbfd, #0b1a24);--gala-color-surface: light-dark(#eef4f9, #12252f);--gala-color-raised: light-dark(#ffffff, #172d39);--gala-color-text: light-dark(#12242f, #eaf3f8);--gala-color-muted: light-dark(#5a6f7d, #98aebb);--gala-color-border: light-dark(#7d8d99, #5f7d8c);--gala-color-hairline: light-dark(#dde7ee, #1d3644);--gala-color-border-strong: light-dark(#bdccd7, #33505f);--gala-color-accent: light-dark(#0f5f7a, #7fd0e8)}:root[data-palette=ocean][data-mode=light]{color-scheme:light;--gala-color-background: #f8fbfd;--gala-color-surface: #eef4f9;--gala-color-raised: #ffffff;--gala-color-text: #12242f;--gala-color-muted: #5a6f7d;--gala-color-border: #7d8d99;--gala-color-hairline: #dde7ee;--gala-color-border-strong: #bdccd7;--gala-color-accent: var(--gala-accent-light, #0f5f7a)}:root[data-palette=ocean][data-mode=dark]{color-scheme:dark;--gala-color-background: #0b1a24;--gala-color-surface: #12252f;--gala-color-raised: #172d39;--gala-color-text: #eaf3f8;--gala-color-muted: #98aebb;--gala-color-border: #5f7d8c;--gala-color-hairline: #1d3644;--gala-color-border-strong: #33505f;--gala-color-accent: var(--gala-accent-dark, #7fd0e8)}:root[data-palette=forest]{--gala-color-background: light-dark(#fbfcfa, #101410);--gala-color-surface: light-dark(#f0f4ee, #182018);--gala-color-raised: light-dark(#ffffff, #1f271f);--gala-color-text: light-dark(#18201a, #eef3ec);--gala-color-muted: light-dark(#5b665d, #9aa89b);--gala-color-border: light-dark(#849084, #5e685f);--gala-color-hairline: light-dark(#e2e9df, #232b23);--gala-color-border-strong: light-dark(#5b665d, #7d897e);--gala-color-accent: light-dark(#2f6b3f, #8fd3a1)}:root[data-palette=forest][data-mode=light]{color-scheme:light;--gala-color-background: #fbfcfa;--gala-color-surface: #f0f4ee;--gala-color-raised: #ffffff;--gala-color-text: #18201a;--gala-color-muted: #5b665d;--gala-color-border: #849084;--gala-color-hairline: #e2e9df;--gala-color-border-strong: #5b665d;--gala-color-accent: var(--gala-accent-light, #2f6b3f)}:root[data-palette=forest][data-mode=dark]{color-scheme:dark;--gala-color-background: #101410;--gala-color-surface: #182018;--gala-color-raised: #1f271f;--gala-color-text: #eef3ec;--gala-color-muted: #9aa89b;--gala-color-border: #5e685f;--gala-color-hairline: #232b23;--gala-color-border-strong: #7d897e;--gala-color-accent: var(--gala-accent-dark, #8fd3a1)}:root[data-palette=plum]{--gala-color-background: light-dark(#fdfbfd, #141016);--gala-color-surface: light-dark(#f5eff5, #1d1720);--gala-color-raised: light-dark(#ffffff, #241d28);--gala-color-text: light-dark(#1f1820, #f2ecf3);--gala-color-muted: light-dark(#665c69, #a99dac);--gala-color-border: light-dark(#948a95, #6b606d);--gala-color-hairline: light-dark(#ebe2ec, #281f2b);--gala-color-border-strong: light-dark(#665c69, #8b7f8d);--gala-color-accent: light-dark(#7a3d76, #dda6d8)}:root[data-palette=plum][data-mode=light]{color-scheme:light;--gala-color-background: #fdfbfd;--gala-color-surface: #f5eff5;--gala-color-raised: #ffffff;--gala-color-text: #1f1820;--gala-color-muted: #665c69;--gala-color-border: #948a95;--gala-color-hairline: #ebe2ec;--gala-color-border-strong: #665c69;--gala-color-accent: var(--gala-accent-light, #7a3d76)}:root[data-palette=plum][data-mode=dark]{color-scheme:dark;--gala-color-background: #141016;--gala-color-surface: #1d1720;--gala-color-raised: #241d28;--gala-color-text: #f2ecf3;--gala-color-muted: #a99dac;--gala-color-border: #6b606d;--gala-color-hairline: #281f2b;--gala-color-border-strong: #8b7f8d;--gala-color-accent: var(--gala-accent-dark, #dda6d8)}:root[data-theme=editorial]{--gala-font-body: ui-serif, "Iowan Old Style", Charter, "Source Serif 4", Georgia, serif;--gala-font-display: var(--gala-font-body);--gala-weight-display: 600;--gala-step: 1.1rem;--gala-leading-body: 1.7;--gala-radius-control: .5rem;--gala-radius-surface: .75rem;--gala-measure: 66ch;--gala-surface-border: var(--gala-color-hairline);--gala-surface-shadow: none}:root[data-theme=modern]{--gala-font-body: ui-sans-serif, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--gala-font-display: var(--gala-font-body);--gala-weight-display: 640;--gala-step: 1rem;--gala-leading-body: 1.65;--gala-radius-control: .625rem;--gala-radius-surface: 1rem;--gala-measure: 70ch;--gala-surface-border: transparent;--gala-surface-shadow: var(--gala-shadow-high)}:root[data-theme=technical]{--gala-font-body: ui-sans-serif, -apple-system, "Segoe UI", Roboto, sans-serif;--gala-font-display: var(--gala-font-body);--gala-weight-display: 660;--gala-tracking-tight: -.022em;--gala-step: .9rem;--gala-leading-body: 1.6;--gala-radius-control: .375rem;--gala-radius-surface: .5rem;--gala-measure: 74ch;--gala-surface-border: var(--gala-color-border-strong);--gala-surface-shadow: none}:root[data-theme=technical] .gala-eyebrow,:root[data-theme=technical] .gala-engagement dt,:root[data-theme=technical] .gala-comment__meta time{font-family:var(--gala-font-mono)}@media(prefers-reduced-motion:reduce){:root{--gala-motion-fast: 0ms;--gala-motion-base: 0ms;scroll-behavior:auto}*,*:before,*:after{animation-duration:1ms!important;transition-duration:1ms!important}}:root[data-layout=portfolio]{--gala-content-width: 82rem}html{scroll-behavior:smooth}body{box-sizing:border-box;display:flex;flex-direction:column;min-block-size:100vh;min-block-size:100svh;margin:0;padding:var(--gala-space-page);color:var(--gala-color-text);background:var(--gala-color-background);font-family:var(--gala-font-body);font-size:var(--gala-text-base);line-height:var(--gala-leading-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.gala-skip-link{position:fixed;inset-block-start:1rem;inset-inline-start:1rem;z-index:100;padding:.75rem 1rem;color:#fff;background:var(--gala-color-accent);border-radius:999px;transform:translateY(-200%)}.gala-skip-link:focus{transform:translateY(0)}.gala-site-name{color:var(--gala-color-text);font-family:var(--gala-font-display);font-size:var(--gala-text-lg);font-weight:var(--gala-weight-display);letter-spacing:var(--gala-tracking-tight);text-decoration:none;min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gala-header-link{color:var(--gala-color-text);font-size:var(--gala-text-sm);text-decoration:none}.gala-account-control{display:inline-flex;align-items:center;gap:.5rem;min-block-size:2.75rem;padding-inline:.9rem;border-radius:999px}.gala-account-control svg{inline-size:1rem;block-size:1rem}.gala-article{max-inline-size:76rem;margin-inline:auto}.gala-page--article .gala-site-header,.gala-page--article main,.gala-page--article .gala-page-footer{max-inline-size:112rem}.gala-page--article .gala-article,.gala-page--article .gala-engagement{max-inline-size:none}.gala-article-header{padding-block:clamp(2.5rem,5vw,5rem)}.gala-article-header h1{max-inline-size:12ch;font-size:clamp(2.5rem,7vw,5.25rem);line-height:.96;letter-spacing:-.055em}.gala-byline{color:var(--gala-color-muted);font-size:var(--gala-text-sm)}.gala-markdown{max-inline-size:42rem;margin-inline:auto;font-size:clamp(1.1rem,1rem + .35vw,1.3rem)}.gala-markdown :where(h2){margin-block-start:clamp(3rem,7vw,5rem);font-size:clamp(2.2rem,5vw,3.8rem)}.gala-markdown :where(h2,h3,h4,h5,h6){scroll-margin-block-start:7rem}.gala-markdown :where(img,video){max-inline-size:100%;block-size:auto}.gala-markdown :where(pre){box-sizing:border-box;max-inline-size:100%;overflow-x:auto;scrollbar-color:var(--gala-color-border-strong) var(--gala-color-surface)}:where(h1,h2,h3,h4){font-family:var(--gala-font-display);font-weight:var(--gala-weight-display);line-height:var(--gala-leading-tight);letter-spacing:var(--gala-tracking-tight);text-wrap:balance;margin-block:0 var(--gala-space-sm)}:where(h1){font-size:var(--gala-text-3xl)}:where(h2){font-size:var(--gala-text-2xl)}:where(h3){font-size:var(--gala-text-xl)}:where(h4){font-size:var(--gala-text-lg)}:where(p,ul,ol,blockquote){margin-block:0 var(--gala-space-md)}:where(p){text-wrap:pretty}blockquote{margin-inline:0;padding-inline-start:var(--gala-space-md);border-inline-start:2px solid var(--gala-color-accent);color:var(--gala-color-muted)}:where(code,kbd,samp){font-family:var(--gala-font-mono);font-size:.9em}:where(pre){padding:var(--gala-space-md);overflow-x:auto;background:var(--gala-color-surface);border-radius:var(--gala-radius-control)}:where(hr){border:0;border-block-start:1px solid var(--gala-color-hairline);margin-block:var(--gala-space-xl)}:where(table){border-collapse:collapse;inline-size:100%}:where(th,td){padding:var(--gala-space-xs) var(--gala-space-sm);border-block-end:1px solid var(--gala-color-hairline);text-align:start}.gala-eyebrow,.gala-comment__meta time,.gala-comment__edited{font-size:var(--gala-text-xs);letter-spacing:var(--gala-tracking-wide);text-transform:uppercase;color:var(--gala-color-muted)}.gala-site-header{position:sticky;inset-block-start:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:var(--gala-space-md);max-inline-size:var(--gala-content-width);margin-inline:auto;margin-block-end:var(--gala-space-xl);padding-block:var(--gala-space-xs);background:color-mix(in srgb,var(--gala-color-background) 88%,transparent);backdrop-filter:blur(8px);border-block-end:1px solid var(--gala-color-hairline)}@supports not (backdrop-filter: blur(8px)){.gala-site-header{background:var(--gala-color-background)}}.gala-site-header__actions{display:flex;align-items:center;gap:.5rem}.gala-header-link{display:inline-flex;align-items:center;min-block-size:2.75rem}.gala-icon-control{display:inline-grid;inline-size:2.75rem;block-size:2.75rem;box-sizing:border-box;padding:.6rem;place-items:center;color:inherit;border:.125rem solid transparent;border-radius:50%}.gala-icon-control{transition:background var(--gala-motion-fast) var(--gala-ease),color var(--gala-motion-fast) var(--gala-ease);color:var(--gala-color-muted)}.gala-icon-control:hover{background:var(--gala-color-surface);color:var(--gala-color-text)}.gala-icon-control:focus-visible{outline:.1875rem solid currentcolor;outline-offset:.1875rem}.gala-icon-control svg{inline-size:100%;block-size:100%;fill:none;stroke:currentcolor}.gala-dialog{inline-size:min(42rem,calc(100% - 2rem));max-block-size:calc(100% - 2rem);box-sizing:border-box;padding:1.5rem;color:var(--gala-color-text);background:var(--gala-color-background);border:1px solid var(--gala-surface-border);border-radius:var(--gala-radius-surface);box-shadow:var(--gala-shadow-high)}.gala-dialog::backdrop{background:#000000a6}.gala-account-dialog{inline-size:min(26rem,calc(100% - 2rem))}.gala-account-dialog iframe{display:block;inline-size:100%;block-size:7rem;border:0;overflow:hidden}.gala-dialog{display:grid;gap:var(--gala-space-sm)}.gala-dialog:not([open]){display:none}.gala-dialog__close{justify-self:end;margin:0}.gala-dialog__header{display:flex;align-items:center;justify-content:space-between;gap:var(--gala-space-md)}.gala-dialog__header h2{margin:0}main,.gala-page-footer{max-inline-size:var(--gala-content-width);margin-inline:auto}main{flex:1 0 auto;inline-size:100%}a{color:var(--gala-color-accent)}button{min-block-size:2.75rem;padding-inline:var(--gala-space-md);color:inherit;background:var(--gala-color-surface);border:1px solid var(--gala-color-border);border-radius:var(--gala-radius-control);font:inherit;font-size:var(--gala-text-sm);cursor:pointer;transition:background var(--gala-motion-fast) var(--gala-ease),border-color var(--gala-motion-fast) var(--gala-ease)}button:hover{border-color:var(--gala-color-border-strong);background:var(--gala-color-raised)}button[disabled]{opacity:.55;cursor:not-allowed}button:focus-visible{outline:.1875rem solid currentcolor;outline-offset:.1875rem}.gala-button,.gala-badge,.gala-tag-chip{display:inline-flex;align-items:center;min-block-size:2.75rem;border:1px solid var(--gala-color-border);border-radius:var(--gala-radius-control);font-size:var(--gala-text-sm)}.gala-badge,.gala-tag-chip{padding-inline:.75rem}.gala-tag-chip{text-decoration:none}.gala-section-heading{margin-block:3rem 1rem}.gala-section-heading>:where(h2,p){margin-block:0 .5rem}.gala-hero{display:grid;gap:1.5rem;align-items:center}.gala-hero__image{inline-size:100%;block-size:auto;border-radius:var(--gala-radius-control)}.gala-page-content{max-inline-size:var(--gala-measure)}.gala-page-content :where(img,video){max-inline-size:100%;block-size:auto}.gala-author-profile{display:flex;gap:1rem;padding:1rem;background:var(--gala-color-surface);border-radius:var(--gala-radius-control)}.gala-author-profile img{border-radius:50%;object-fit:cover}.gala-social-links,.gala-page-footer ul,.gala-share ul{display:flex;flex-wrap:wrap;gap:1rem;padding:0;list-style:none}.gala-card-index{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:1rem;padding:0;list-style:none}[data-layout=portfolio] .gala-card-index{grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr));gap:1.5rem}[data-layout=portfolio] .gala-card{padding:clamp(1.25rem,3vw,2rem)}.gala-card{block-size:100%;box-sizing:border-box;padding:var(--gala-space-lg);background:var(--gala-color-surface);border:1px solid var(--gala-surface-border);border-radius:var(--gala-radius-surface);box-shadow:var(--gala-surface-shadow)}.gala-card{transition:transform var(--gala-motion-base) var(--gala-ease),box-shadow var(--gala-motion-base) var(--gala-ease)}.gala-card-index li:hover .gala-card{transform:translateY(-2px);box-shadow:var(--gala-shadow-high)}.gala-stats-graph{min-block-size:var(--gala-widget-min-block-size);margin-inline:0}.gala-stats-graph svg{inline-size:100%;block-size:8rem}.gala-stats-graph polyline{fill:none;stroke:var(--gala-color-accent);stroke-width:2}.gala-loading{display:grid;min-block-size:var(--gala-widget-min-block-size);place-items:center}.gala-loading__indicator{inline-size:2rem;block-size:2rem;border:.25rem solid var(--gala-color-border);border-block-start-color:var(--gala-color-accent);border-radius:50%;animation:gala-spin .8s linear infinite}.gala-pagination{display:flex;justify-content:space-between;gap:1rem}.gala-search{display:grid;grid-template-columns:1fr auto;gap:.5rem}.gala-search label{grid-column:1 / -1}.gala-search input{min-block-size:2.75rem;font:inherit}.gala-search-results{display:grid;gap:1rem;padding:0;list-style:none}.gala-search-results article{padding:1rem;background:var(--gala-color-surface);border-radius:var(--gala-radius-control)}.gala-search-results h2{margin-block-start:0}.gala-toc{box-sizing:border-box;min-inline-size:0;max-inline-size:42rem;margin-inline:auto;padding:1rem;background:var(--gala-color-surface)}.gala-toc summary{color:var(--gala-color-text);font-weight:var(--gala-weight-display);cursor:pointer}.gala-toc nav{margin-block-start:var(--gala-space-sm);overscroll-behavior:contain}.gala-toc ol{margin:0;padding-inline-start:1.25rem}.gala-toc a[aria-current=location]{color:var(--gala-color-text);font-weight:700}.gala-share__fallback{inline-size:min(100%,36rem)}.gala-engagement__placeholder{display:grid;min-block-size:var(--gala-widget-min-block-size);align-content:center;margin:0}.gala-engagement-profile>*{margin-block:0 .5rem}.gala-engagement-actions{display:grid;gap:1rem;margin-block-start:1.5rem}.gala-engagement-actions[hidden]{display:none}.gala-account-dialog__invite{margin-block:0 1rem;max-inline-size:34rem}.gala-account-dialog__invite[hidden]{display:none}.gala-engagement-actions form,[data-comment-editor]{display:grid;gap:.5rem;max-inline-size:42rem}.gala-engagement-actions label{display:grid;gap:.5rem}.gala-engagement-actions textarea,[data-comment-editor] textarea{min-block-size:7rem;padding:.75rem;font:inherit}.gala-page-footer{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--gala-space-lg);margin-block-start:var(--gala-space-xl);padding-block-start:var(--gala-space-md);border-block-start:.125rem solid var(--gala-color-border)}.gala-page-footer__identity{display:flex;gap:var(--gala-space-sm);max-inline-size:56rem}.gala-page-footer__identity img{flex:0 0 auto;border-radius:50%;object-fit:cover}.gala-page-footer__identity p{margin:0;color:var(--gala-color-muted);font-size:var(--gala-text-sm)}.gala-page-footer__details{display:grid;gap:var(--gala-space-2xs);align-content:center}.gala-page-footer__line{display:grid;grid-template-columns:repeat(3,max-content);align-items:baseline;gap:0 var(--gala-space-sm)}.gala-page-footer__line>*+*:before{content:"\b7";margin-inline-end:var(--gala-space-sm);color:var(--gala-color-border)}.gala-page-footer__bio{line-height:1.4}.gala-page-footer__author{color:var(--gala-color-text);font-weight:var(--gala-weight-display)}.gala-page-footer nav{margin-inline-start:auto}.gala-page-footer ul{justify-content:flex-end;margin:0}.gala-error-page{min-block-size:60vh;display:grid;align-content:center;justify-items:start}.gala-code-block{position:relative;box-sizing:border-box;min-inline-size:0;max-inline-size:100%;inline-size:100%;overflow:hidden}.gala-code-block>button{position:absolute;inset-block-start:.5rem;inset-inline-end:.5rem;background:var(--gala-color-background)}.gala-code-block pre{box-sizing:border-box;min-inline-size:0;max-inline-size:100%;inline-size:100%;overflow-x:auto;overscroll-behavior-inline:contain;padding:3.5rem 1rem 1rem;background:var(--gala-color-surface);border-radius:var(--gala-radius-control)}.gala-code-block code{display:block;inline-size:max-content;min-inline-size:100%}.gala-embed{display:grid;place-items:center;gap:.75rem;box-sizing:border-box;inline-size:100%;margin-inline:0;padding:1rem;overflow:hidden;background:var(--gala-color-surface);border:.125rem solid var(--gala-color-border);border-radius:var(--gala-radius-control)}.gala-embed--youtube{aspect-ratio:16 / 9}.gala-embed--codepen{min-block-size:25rem}.gala-embed--gist,.gala-embed--x{min-block-size:8rem}.gala-embed iframe{inline-size:100%;block-size:100%;border:0}.gala-embed__icon{inline-size:2rem;block-size:2rem;background:center / contain no-repeat}.gala-embed--youtube .gala-embed__icon{background-image:url(../assets/embed-youtube.svg)}.gala-embed--codepen .gala-embed__icon{background-image:url(../assets/embed-codepen.svg)}.gala-embed--gist .gala-embed__icon{background-image:url(../assets/embed-gist.svg)}.gala-embed--x .gala-embed__icon{background-image:url(../assets/embed-x.svg)}.shiki,.shiki span{color:inherit;background-color:var(--gala-color-surface)}.gala-visually-hidden{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.gala-contact form{display:grid;gap:1rem;max-inline-size:42rem}.gala-contact label{display:grid;gap:.35rem}.gala-contact input,.gala-contact textarea{font:inherit;padding:.65rem}.gala-contact textarea{min-block-size:12rem;resize:vertical}@keyframes gala-spin{to{transform:rotate(1turn)}}@media(min-width:48rem){.gala-hero{grid-template-columns:minmax(0,1fr) minmax(18rem,1fr)}}@media(prefers-reduced-motion:no-preference){@view-transition{navigation:auto}}.gala-comments-island{margin-block-start:var(--gala-space-xl)}.gala-comments__heading{font-size:var(--gala-text-lg);margin-block-end:var(--gala-space-md)}.gala-comments,.gala-comment-replies{list-style:none;margin:0;padding:0}.gala-comment-replies{margin-block-start:var(--gala-space-sm);margin-inline-start:var(--gala-space-xs);padding-inline-start:var(--gala-space-md);border-inline-start:1px solid var(--gala-color-hairline)}.gala-comment{padding-block:var(--gala-space-sm)}.gala-comment+.gala-comment{border-block-start:1px solid var(--gala-color-hairline)}.gala-comment-replies .gala-comment+.gala-comment{border-block-start:0}.gala-comment__meta{display:flex;align-items:baseline;gap:var(--gala-space-xs);margin-block-end:var(--gala-space-2xs);font-size:var(--gala-text-sm)}.gala-comment__meta strong{font-weight:600}.gala-comment__pending{font-size:var(--gala-text-xs);color:var(--gala-color-muted)}.gala-comment__body{margin-block:0;overflow-wrap:anywhere}.gala-comment-actions{display:flex;gap:var(--gala-space-2xs);margin-block-start:var(--gala-space-2xs);opacity:.72;transition:opacity var(--gala-motion-fast) var(--gala-ease)}.gala-comment:hover>.gala-comment-actions,.gala-comment:focus-within>.gala-comment-actions{opacity:1}.gala-comment-actions button{min-block-size:2rem;padding-inline:var(--gala-space-xs);font-size:var(--gala-text-xs);background:transparent;border-color:transparent;color:var(--gala-color-muted)}.gala-comment-actions button:hover{color:var(--gala-color-text);background:var(--gala-color-surface)}.gala-comment__form{display:grid;gap:var(--gala-space-xs);margin-block:var(--gala-space-sm)}.gala-comment__form textarea{inline-size:100%;box-sizing:border-box;padding:var(--gala-space-sm);color:inherit;background:var(--gala-color-raised);border:1px solid var(--gala-color-border);border-radius:var(--gala-radius-control);font:inherit;font-size:var(--gala-text-sm);line-height:var(--gala-leading-body);resize:vertical}.gala-comment__form textarea:focus-visible{outline:2px solid var(--gala-color-accent);outline-offset:1px}.gala-comment__controls{display:flex;gap:var(--gala-space-xs)}.gala-comments__status,.gala-comments__empty,.gala-comments__prompt{color:var(--gala-color-muted);font-size:var(--gala-text-sm)}.gala-comments__more{margin-block-start:var(--gala-space-md)}.gala-engagement{min-block-size:var(--gala-widget-min-block-size);max-inline-size:var(--gala-content-width);margin-block-start:var(--gala-space-xl);padding-block-start:var(--gala-space-lg);border-block-start:1px solid var(--gala-color-border)}.gala-engagement-profile{display:flex;align-items:baseline;gap:var(--gala-space-sm);padding:0;background:none}.gala-engagement-profile h2{font-size:var(--gala-text-lg);margin:0}.gala-engagement-profile p{margin:0;color:var(--gala-color-muted);font-size:var(--gala-text-sm)}.gala-engagement>dl{display:flex;flex-wrap:wrap;gap:var(--gala-space-lg);margin-block:var(--gala-space-md)}.gala-engagement>dl>div{display:flex;flex-direction:column-reverse;gap:.1rem}.gala-engagement>dl dt{font-size:var(--gala-text-xs);letter-spacing:var(--gala-tracking-wide);text-transform:uppercase;color:var(--gala-color-muted)}.gala-engagement>dl dd{margin:0;font-size:var(--gala-text-lg);font-variant-numeric:tabular-nums}.gala-reaction-actions{display:flex;flex-wrap:wrap;gap:var(--gala-space-2xs)}.gala-engagement-actions{display:grid;gap:var(--gala-space-sm);justify-items:start}.gala-engagement-actions>[data-follow-article]{inline-size:auto}.gala-share{margin-block-start:var(--gala-space-lg)}.gala-engagement{position:relative}.gala-reading-progress{position:fixed;z-index:20;inset:0 0 auto;inline-size:100%;block-size:.2rem;appearance:none;border:0;background:transparent;pointer-events:none}.gala-reading-progress::-webkit-progress-bar{background:transparent}.gala-reading-progress::-webkit-progress-value{background:var(--gala-color-accent)}.gala-reading-progress::-moz-progress-bar{background:var(--gala-color-accent)}.gala-reading-layout{display:block}.gala-conversation{max-width:var(--gala-measure);margin-inline:auto;padding-block:clamp(3rem,7vw,6rem)}.gala-conversation__header{margin-block-end:var(--gala-space-xl)}.gala-conversation__header h2{margin:0;font:var(--gala-weight-display) var(--gala-text-2xl)/var(--gala-leading-tight) var(--gala-font-display);letter-spacing:var(--gala-tracking-tight)}.gala-conversation__status{display:block;min-block-size:1.5em;color:var(--gala-color-muted)}.gala-conversation__status:empty{display:none}.gala-action-rail{position:static;z-index:4;inset-block-start:6rem;box-sizing:border-box;width:min(100%,42rem);margin:var(--gala-space-xl) auto 0;display:grid;grid-template-columns:1fr auto 1fr;gap:var(--gala-space-md);align-items:center;padding:var(--gala-space-md);border:1px solid var(--gala-color-hairline);border-radius:var(--gala-radius-surface);background:color-mix(in srgb,var(--gala-color-background) 88%,transparent);box-shadow:var(--gala-shadow-high);backdrop-filter:blur(16px)}.gala-action-rail button,.gala-action-rail a{inline-size:2.5rem;min-block-size:2.5rem;display:grid;place-items:center;padding:0;border:0;border-radius:50%;color:var(--gala-color-muted);background:transparent;font:600 var(--gala-text-xs)/1 var(--gala-font-body);text-decoration:none;cursor:pointer}.gala-action-rail svg{inline-size:1.2rem;block-size:1.2rem}.gala-action-rail button:hover,.gala-action-rail a:hover,.gala-action-rail button[aria-pressed=true]{color:var(--gala-color-background);background:var(--gala-color-accent)}.gala-engagement .gala-action-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gala-space-xs);margin:0}.gala-action-stats>div{display:flex;min-block-size:2.5rem;align-items:center;justify-content:space-between;gap:.4rem;padding-inline:.25rem}.gala-action-stats>div+div{border-inline-start:1px solid var(--gala-color-hairline)}.gala-action-stats dt{display:grid;place-items:center;color:var(--gala-color-muted)}.gala-action-stats dt svg{inline-size:1.2rem;block-size:1.2rem}.gala-action-stats dd{margin:0;color:var(--gala-color-text);font:400 1.2rem/1 var(--gala-font-mono)}.gala-action-group{display:grid}.gala-reaction-actions,.gala-utility-actions,.gala-share{display:grid;grid-template-columns:repeat(6,2.5rem);gap:var(--gala-space-2xs);justify-content:center}.gala-utility-actions>.gala-share{display:contents}.gala-action-rail__separator{inline-size:1px;align-self:stretch;margin-block:.25rem;background:var(--gala-color-hairline)}.gala-action-rail .gala-share__fallback{position:fixed;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%)}.gala-action-rail .gala-share__fallback--visible{z-index:10;inset:auto 1rem 1rem;inline-size:min(32rem,calc(100vw - 2rem));block-size:auto;padding:.75rem;overflow:visible;clip-path:none}.gala-action-dock{display:block;min-block-size:4.25rem}.gala-article-boundary{width:100%;margin:clamp(4rem,8vw,7rem) auto var(--gala-space-lg);padding-block-start:var(--gala-space-md);display:flex;align-items:baseline;justify-content:space-between;gap:var(--gala-space-md);border-block-start:.25rem solid var(--gala-color-text);font-size:var(--gala-text-sm)}@media(min-width:75rem){.gala-reading-layout{display:grid;grid-template-columns:minmax(10rem,15rem) minmax(0,1fr) 8.5rem;align-items:start;justify-content:space-between;gap:clamp(2rem,4vw,5rem)}.gala-reading-layout .gala-toc{grid-column:1;grid-row:1;position:sticky;inset-block-start:6rem;max-inline-size:none;margin-inline:0;max-block-size:calc(100vh - 8rem);transition:box-shadow var(--gala-motion-fast) var(--gala-ease)}.gala-reading-layout .gala-toc--floating{box-shadow:var(--gala-shadow-high)}.gala-reading-layout .gala-toc>summary{display:none}.gala-reading-layout .gala-toc>nav{display:block;max-block-size:calc(100vh - 10rem);margin-block-start:0;overflow-y:auto;scrollbar-width:thin}.gala-reading-layout .gala-toc--overflowing ol{padding-block:max(1rem,calc((100vh - 11.5rem)/2))}.gala-reading-layout .gala-markdown{grid-column:2;grid-row:1;max-inline-size:56rem;inline-size:100%;margin:0}.gala-article-boundary{grid-column:1 / -1;grid-row:2;margin-inline:0}.gala-action-dock{grid-column:2;grid-row:3}.gala-action-rail{grid-column:3;grid-row:1;position:sticky;inset-block-start:6rem;width:8.5rem;margin:0;display:grid;grid-template-columns:1fr;gap:var(--gala-space-sm);padding:var(--gala-space-sm);border-radius:var(--gala-radius-surface)}.gala-action-rail .gala-action-stats{gap:var(--gala-space-2xs)}.gala-action-rail:not(.gala-action-rail--integrated) .gala-action-stats{grid-template-columns:1fr}.gala-action-rail:not(.gala-action-rail--integrated) .gala-action-stats>div+div{border-inline-start:0;border-block-start:1px solid var(--gala-color-hairline)}.gala-action-rail .gala-action-stats>div{min-block-size:2.5rem;display:grid;grid-template-columns:repeat(2,2.5rem);justify-content:center;gap:.25rem;padding-inline:0}.gala-action-rail .gala-action-stats dd{justify-self:center}.gala-action-rail .gala-reaction-actions,.gala-action-rail .gala-utility-actions,.gala-action-rail .gala-share{grid-template-columns:repeat(2,2.5rem)}.gala-action-rail__separator{inline-size:auto;block-size:1px;margin:.25rem}.gala-action-rail--integrated{grid-column:2;grid-row:3;position:static;align-self:start;width:100%;margin:0;display:grid;grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr);grid-template-rows:auto 1px auto;grid-template-areas:"reactions utility-separator utilities" "stats-separator stats-separator stats-separator" "stats stats stats";justify-content:stretch;gap:clamp(var(--gala-space-2xs),1vw,var(--gala-space-md));align-items:center;padding:var(--gala-space-md);border-radius:var(--gala-radius-surface)}.gala-action-rail--integrated .gala-action-rail__separator{grid-area:utility-separator;inline-size:1px;block-size:auto;margin:.25rem 0}.gala-action-rail--integrated .gala-action-rail__separator--stats{grid-area:stats-separator;inline-size:auto;block-size:1px;margin:0}.gala-action-rail--integrated .gala-action-group--reactions{grid-area:reactions}.gala-action-rail--integrated .gala-action-group--utilities{grid-area:utilities}.gala-action-rail--integrated .gala-reaction-actions{grid-template-columns:repeat(6,2.5rem)}.gala-action-rail--integrated .gala-utility-actions{grid-template-columns:repeat(4,2.5rem)}.gala-action-rail--integrated .gala-action-stats>div{min-block-size:2.5rem;display:flex;flex-direction:row;gap:.4rem;padding-inline:.25rem}.gala-action-rail--integrated .gala-action-stats{grid-area:stats;grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:74.99rem){.gala-action-rail{grid-template-columns:1fr;width:min(100%,42rem)}.gala-action-rail__separator{inline-size:auto;block-size:1px;margin:0}}@media(max-width:47.99rem){.gala-page-footer{flex-direction:column}.gala-page-footer__line{grid-template-columns:minmax(0,1fr);gap:var(--gala-space-2xs)}.gala-page-footer__line>*+*:before{content:none}.gala-page-footer nav{margin-inline-start:0}.gala-page-footer ul{justify-content:flex-start}.gala-site-name{flex:1 1 auto;min-inline-size:4rem;font-size:var(--gala-text-base)}.gala-header-link{display:none}.gala-site-header__actions{flex:0 0 auto;gap:.125rem}.gala-account-control{inline-size:2.75rem;padding:0;justify-content:center}.gala-account-control [data-user-label]{display:none}}
|
|
1
|
+
:root{color-scheme:light dark;--gala-color-background: light-dark(#fdfcfb, #131211);--gala-color-surface: light-dark(#f6f4f1, #1c1a18);--gala-color-raised: light-dark(#fffffe, #24211f);--gala-color-text: light-dark(#1a1817, #f2efec);--gala-color-muted: light-dark(#6b645e, #a8a099);--gala-color-border: light-dark(#968e86, #6b645e);--gala-color-hairline: light-dark(#e8e3dd, #2a2724);--gala-color-border-strong: light-dark(#c9c2ba, #46413d);--gala-color-accent: light-dark( var(--gala-accent-light, #8a4b2a), var(--gala-accent-dark, #e8a87c));--gala-font-body: ui-sans-serif, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--gala-font-display: var(--gala-font-body);--gala-font-mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, monospace;--gala-text-xs: .78rem;--gala-text-sm: .875rem;--gala-text-base: clamp(1rem, .97rem + .15vw, 1.0625rem);--gala-text-lg: clamp(1.15rem, 1.09rem + .3vw, 1.3rem);--gala-text-xl: clamp(1.4rem, 1.28rem + .6vw, 1.75rem);--gala-text-2xl: clamp(1.75rem, 1.5rem + 1.2vw, 2.4rem);--gala-text-3xl: clamp(2.2rem, 1.7rem + 2.4vw, 3.4rem);--gala-leading-tight: 1.15;--gala-leading-body: 1.65;--gala-tracking-tight: -.018em;--gala-tracking-wide: .08em;--gala-weight-display: 640;--gala-step: 1rem;--gala-space-2xs: calc(var(--gala-step) * .25);--gala-space-xs: calc(var(--gala-step) * .5);--gala-space-sm: calc(var(--gala-step) * .75);--gala-space-md: var(--gala-step);--gala-space-lg: calc(var(--gala-step) * 1.75);--gala-space-xl: calc(var(--gala-step) * 3);--gala-space-page: clamp(1.25rem, 5vw, 4.5rem);--gala-radius-control: .625rem;--gala-radius-surface: 1rem;--gala-shadow-high: 0 1px 2px light-dark(rgb(26 24 23 / 5%), rgb(0 0 0 / 35%)), 0 12px 28px -12px light-dark(rgb(26 24 23 / 18%), rgb(0 0 0 / 60%));--gala-motion-fast: .12s;--gala-motion-base: .22s;--gala-ease: cubic-bezier(.2, 0, 0, 1);--gala-content-width: 72rem;--gala-measure: 68ch;--gala-widget-min-block-size: 8rem}:root[data-mode=light]{color-scheme:light;--gala-color-background: #fdfcfb;--gala-color-surface: #f6f4f1;--gala-color-raised: #fffffe;--gala-color-text: #1a1817;--gala-color-muted: #6b645e;--gala-color-border: #968e86;--gala-color-hairline: #e8e3dd;--gala-color-border-strong: #c9c2ba;--gala-color-accent: var(--gala-accent-light, #8a4b2a)}:root[data-mode=dark]{color-scheme:dark;--gala-color-background: #131211;--gala-color-surface: #1c1a18;--gala-color-raised: #24211f;--gala-color-text: #f2efec;--gala-color-muted: #a8a099;--gala-color-border: #6b645e;--gala-color-hairline: #2a2724;--gala-color-border-strong: #46413d;--gala-color-accent: var(--gala-accent-dark, #e8a87c)}:root[data-palette=ocean]{--gala-color-background: light-dark(#f8fbfd, #0b1a24);--gala-color-surface: light-dark(#eef4f9, #12252f);--gala-color-raised: light-dark(#ffffff, #172d39);--gala-color-text: light-dark(#12242f, #eaf3f8);--gala-color-muted: light-dark(#5a6f7d, #98aebb);--gala-color-border: light-dark(#7d8d99, #5f7d8c);--gala-color-hairline: light-dark(#dde7ee, #1d3644);--gala-color-border-strong: light-dark(#bdccd7, #33505f);--gala-color-accent: light-dark(#0f5f7a, #7fd0e8)}:root[data-palette=ocean][data-mode=light]{color-scheme:light;--gala-color-background: #f8fbfd;--gala-color-surface: #eef4f9;--gala-color-raised: #ffffff;--gala-color-text: #12242f;--gala-color-muted: #5a6f7d;--gala-color-border: #7d8d99;--gala-color-hairline: #dde7ee;--gala-color-border-strong: #bdccd7;--gala-color-accent: var(--gala-accent-light, #0f5f7a)}:root[data-palette=ocean][data-mode=dark]{color-scheme:dark;--gala-color-background: #0b1a24;--gala-color-surface: #12252f;--gala-color-raised: #172d39;--gala-color-text: #eaf3f8;--gala-color-muted: #98aebb;--gala-color-border: #5f7d8c;--gala-color-hairline: #1d3644;--gala-color-border-strong: #33505f;--gala-color-accent: var(--gala-accent-dark, #7fd0e8)}:root[data-palette=forest]{--gala-color-background: light-dark(#fbfcfa, #101410);--gala-color-surface: light-dark(#f0f4ee, #182018);--gala-color-raised: light-dark(#ffffff, #1f271f);--gala-color-text: light-dark(#18201a, #eef3ec);--gala-color-muted: light-dark(#5b665d, #9aa89b);--gala-color-border: light-dark(#849084, #5e685f);--gala-color-hairline: light-dark(#e2e9df, #232b23);--gala-color-border-strong: light-dark(#5b665d, #7d897e);--gala-color-accent: light-dark(#2f6b3f, #8fd3a1)}:root[data-palette=forest][data-mode=light]{color-scheme:light;--gala-color-background: #fbfcfa;--gala-color-surface: #f0f4ee;--gala-color-raised: #ffffff;--gala-color-text: #18201a;--gala-color-muted: #5b665d;--gala-color-border: #849084;--gala-color-hairline: #e2e9df;--gala-color-border-strong: #5b665d;--gala-color-accent: var(--gala-accent-light, #2f6b3f)}:root[data-palette=forest][data-mode=dark]{color-scheme:dark;--gala-color-background: #101410;--gala-color-surface: #182018;--gala-color-raised: #1f271f;--gala-color-text: #eef3ec;--gala-color-muted: #9aa89b;--gala-color-border: #5e685f;--gala-color-hairline: #232b23;--gala-color-border-strong: #7d897e;--gala-color-accent: var(--gala-accent-dark, #8fd3a1)}:root[data-palette=plum]{--gala-color-background: light-dark(#fdfbfd, #141016);--gala-color-surface: light-dark(#f5eff5, #1d1720);--gala-color-raised: light-dark(#ffffff, #241d28);--gala-color-text: light-dark(#1f1820, #f2ecf3);--gala-color-muted: light-dark(#665c69, #a99dac);--gala-color-border: light-dark(#948a95, #6b606d);--gala-color-hairline: light-dark(#ebe2ec, #281f2b);--gala-color-border-strong: light-dark(#665c69, #8b7f8d);--gala-color-accent: light-dark(#7a3d76, #dda6d8)}:root[data-palette=plum][data-mode=light]{color-scheme:light;--gala-color-background: #fdfbfd;--gala-color-surface: #f5eff5;--gala-color-raised: #ffffff;--gala-color-text: #1f1820;--gala-color-muted: #665c69;--gala-color-border: #948a95;--gala-color-hairline: #ebe2ec;--gala-color-border-strong: #665c69;--gala-color-accent: var(--gala-accent-light, #7a3d76)}:root[data-palette=plum][data-mode=dark]{color-scheme:dark;--gala-color-background: #141016;--gala-color-surface: #1d1720;--gala-color-raised: #241d28;--gala-color-text: #f2ecf3;--gala-color-muted: #a99dac;--gala-color-border: #6b606d;--gala-color-hairline: #281f2b;--gala-color-border-strong: #8b7f8d;--gala-color-accent: var(--gala-accent-dark, #dda6d8)}:root[data-theme=editorial]{--gala-font-body: ui-serif, "Iowan Old Style", Charter, "Source Serif 4", Georgia, serif;--gala-font-display: var(--gala-font-body);--gala-weight-display: 600;--gala-step: 1.1rem;--gala-leading-body: 1.7;--gala-radius-control: .5rem;--gala-radius-surface: .75rem;--gala-measure: 66ch;--gala-surface-border: var(--gala-color-hairline);--gala-surface-shadow: none}:root[data-theme=modern]{--gala-font-body: ui-sans-serif, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--gala-font-display: var(--gala-font-body);--gala-weight-display: 640;--gala-step: 1rem;--gala-leading-body: 1.65;--gala-radius-control: .625rem;--gala-radius-surface: 1rem;--gala-measure: 70ch;--gala-surface-border: transparent;--gala-surface-shadow: var(--gala-shadow-high)}:root[data-theme=technical]{--gala-font-body: ui-sans-serif, -apple-system, "Segoe UI", Roboto, sans-serif;--gala-font-display: var(--gala-font-body);--gala-weight-display: 660;--gala-tracking-tight: -.022em;--gala-step: .9rem;--gala-leading-body: 1.6;--gala-radius-control: .375rem;--gala-radius-surface: .5rem;--gala-measure: 74ch;--gala-surface-border: var(--gala-color-border-strong);--gala-surface-shadow: none}:root[data-theme=technical] .gala-eyebrow,:root[data-theme=technical] .gala-engagement dt,:root[data-theme=technical] .gala-comment__meta time{font-family:var(--gala-font-mono)}@media(prefers-reduced-motion:reduce){:root{--gala-motion-fast: 0ms;--gala-motion-base: 0ms;scroll-behavior:auto}*,*:before,*:after{animation-duration:1ms!important;transition-duration:1ms!important}}:root[data-layout=portfolio]{--gala-content-width: 82rem}html{scroll-behavior:smooth}body{box-sizing:border-box;display:flex;flex-direction:column;min-block-size:100vh;min-block-size:100svh;margin:0;padding:var(--gala-space-page);color:var(--gala-color-text);background:var(--gala-color-background);font-family:var(--gala-font-body);font-size:var(--gala-text-base);line-height:var(--gala-leading-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.gala-skip-link{position:fixed;inset-block-start:1rem;inset-inline-start:1rem;z-index:100;padding:.75rem 1rem;color:#fff;background:var(--gala-color-accent);border-radius:999px;transform:translateY(-200%)}.gala-skip-link:focus{transform:translateY(0)}.gala-site-name{color:var(--gala-color-text);font-family:var(--gala-font-display);font-size:var(--gala-text-lg);font-weight:var(--gala-weight-display);letter-spacing:var(--gala-tracking-tight);text-decoration:none;min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gala-header-link{color:var(--gala-color-text);font-size:var(--gala-text-sm);text-decoration:none}.gala-account-control{display:inline-flex;align-items:center;gap:.5rem;min-block-size:2.75rem;padding-inline:.9rem;border-radius:999px}.gala-account-control svg{inline-size:1rem;block-size:1rem}.gala-article{max-inline-size:76rem;margin-inline:auto}.gala-page--article .gala-site-header,.gala-page--article main,.gala-page--article .gala-page-footer{max-inline-size:112rem}.gala-page--article .gala-article,.gala-page--article .gala-engagement{max-inline-size:none}.gala-article-header{padding-block:clamp(2.5rem,5vw,5rem)}.gala-article-header h1{max-inline-size:12ch;font-size:clamp(2.5rem,7vw,5.25rem);line-height:.96;letter-spacing:-.055em}.gala-byline{color:var(--gala-color-muted);font-size:var(--gala-text-sm)}.gala-markdown{max-inline-size:42rem;margin-inline:auto;font-size:clamp(1.1rem,1rem + .35vw,1.3rem)}.gala-markdown :where(h2){margin-block-start:clamp(3rem,7vw,5rem);font-size:clamp(2.2rem,5vw,3.8rem)}.gala-markdown :where(h2,h3,h4,h5,h6){scroll-margin-block-start:7rem}.gala-markdown :where(img,video){max-inline-size:100%;block-size:auto}.gala-markdown :where(pre){box-sizing:border-box;max-inline-size:100%;overflow-x:auto;scrollbar-color:var(--gala-color-border-strong) var(--gala-color-surface)}:where(h1,h2,h3,h4){font-family:var(--gala-font-display);font-weight:var(--gala-weight-display);line-height:var(--gala-leading-tight);letter-spacing:var(--gala-tracking-tight);text-wrap:balance;margin-block:0 var(--gala-space-sm)}:where(h1){font-size:var(--gala-text-3xl)}:where(h2){font-size:var(--gala-text-2xl)}:where(h3){font-size:var(--gala-text-xl)}:where(h4){font-size:var(--gala-text-lg)}:where(p,ul,ol,blockquote){margin-block:0 var(--gala-space-md)}:where(p){text-wrap:pretty}blockquote{margin-inline:0;padding-inline-start:var(--gala-space-md);border-inline-start:2px solid var(--gala-color-accent);color:var(--gala-color-muted)}:where(code,kbd,samp){font-family:var(--gala-font-mono);font-size:.9em}:where(pre){padding:var(--gala-space-md);overflow-x:auto;background:var(--gala-color-surface);border-radius:var(--gala-radius-control)}:where(hr){border:0;border-block-start:1px solid var(--gala-color-hairline);margin-block:var(--gala-space-xl)}:where(table){border-collapse:collapse;inline-size:100%}:where(th,td){padding:var(--gala-space-xs) var(--gala-space-sm);border-block-end:1px solid var(--gala-color-hairline);text-align:start}.gala-eyebrow,.gala-comment__meta time,.gala-comment__edited{font-size:var(--gala-text-xs);letter-spacing:var(--gala-tracking-wide);text-transform:uppercase;color:var(--gala-color-muted)}.gala-site-header{position:sticky;inset-block-start:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:var(--gala-space-md);max-inline-size:var(--gala-content-width);margin-inline:auto;margin-block-end:var(--gala-space-xl);padding-block:var(--gala-space-xs);background:color-mix(in srgb,var(--gala-color-background) 88%,transparent);backdrop-filter:blur(8px);border-block-end:1px solid var(--gala-color-hairline)}@supports not (backdrop-filter: blur(8px)){.gala-site-header{background:var(--gala-color-background)}}.gala-site-header__actions{display:flex;align-items:center;gap:.5rem}.gala-header-link{display:inline-flex;align-items:center;min-block-size:2.75rem}.gala-icon-control{display:inline-grid;inline-size:2.75rem;block-size:2.75rem;box-sizing:border-box;padding:.6rem;place-items:center;color:inherit;border:.125rem solid transparent;border-radius:50%}.gala-icon-control{transition:background var(--gala-motion-fast) var(--gala-ease),color var(--gala-motion-fast) var(--gala-ease);color:var(--gala-color-muted)}.gala-icon-control:hover{background:var(--gala-color-surface);color:var(--gala-color-text)}.gala-icon-control:focus-visible{outline:.1875rem solid currentcolor;outline-offset:.1875rem}.gala-icon-control svg{inline-size:100%;block-size:100%;fill:none;stroke:currentcolor}.gala-dialog{inline-size:min(42rem,calc(100% - 2rem));max-block-size:calc(100% - 2rem);box-sizing:border-box;padding:1.5rem;color:var(--gala-color-text);background:var(--gala-color-background);border:1px solid var(--gala-surface-border);border-radius:var(--gala-radius-surface);box-shadow:var(--gala-shadow-high)}.gala-dialog::backdrop{background:#000000a6}.gala-account-dialog{inline-size:min(26rem,calc(100% - 2rem))}.gala-account-dialog iframe{display:block;inline-size:100%;block-size:7rem;border:0;overflow:hidden}.gala-dialog{display:grid;gap:var(--gala-space-sm)}.gala-dialog:not([open]){display:none}.gala-dialog__close{justify-self:end;margin:0}.gala-dialog__header{display:flex;align-items:center;justify-content:space-between;gap:var(--gala-space-md)}.gala-dialog__header h2{margin:0}main,.gala-page-footer{max-inline-size:var(--gala-content-width);margin-inline:auto}.gala-page-footer{box-sizing:border-box;inline-size:100%}main{flex:1 0 auto;inline-size:100%}a{color:var(--gala-color-accent)}button{min-block-size:2.75rem;padding-inline:var(--gala-space-md);color:inherit;background:var(--gala-color-surface);border:1px solid var(--gala-color-border);border-radius:var(--gala-radius-control);font:inherit;font-size:var(--gala-text-sm);cursor:pointer;transition:background var(--gala-motion-fast) var(--gala-ease),border-color var(--gala-motion-fast) var(--gala-ease)}button:hover{border-color:var(--gala-color-border-strong);background:var(--gala-color-raised)}button[disabled]{opacity:.55;cursor:not-allowed}button:focus-visible{outline:.1875rem solid currentcolor;outline-offset:.1875rem}.gala-button,.gala-badge,.gala-tag-chip{display:inline-flex;align-items:center;min-block-size:2.75rem;border:1px solid var(--gala-color-border);border-radius:var(--gala-radius-control);font-size:var(--gala-text-sm)}.gala-badge,.gala-tag-chip{padding-inline:.75rem}.gala-tag-chip{text-decoration:none}.gala-section-heading{margin-block:3rem 1rem}.gala-section-heading>:where(h2,p){margin-block:0 .5rem}.gala-hero{display:grid;gap:1.5rem;align-items:center}.gala-hero__image{inline-size:100%;block-size:auto;border-radius:var(--gala-radius-control)}.gala-page-content{max-inline-size:var(--gala-measure)}.gala-page-content :where(img,video){max-inline-size:100%;block-size:auto}.gala-author-profile{display:flex;gap:1rem;padding:1rem;background:var(--gala-color-surface);border-radius:var(--gala-radius-control)}.gala-author-profile img{border-radius:50%;object-fit:cover}.gala-social-links,.gala-page-footer ul,.gala-share ul{display:flex;flex-wrap:wrap;gap:1rem;padding:0;list-style:none}.gala-card-index{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:1rem;padding:0;list-style:none}.gala-version-page{inline-size:min(100%,74rem);margin-inline:auto}.gala-version-page__header{max-inline-size:48rem}.gala-version-page__header>p{color:var(--gala-color-muted)}.gala-version-page__header .gala-button{margin-block-start:var(--gala-space-md)}.gala-version-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:var(--gala-space-md);margin-block-start:var(--gala-space-lg)}.gala-version-card{display:grid;align-content:start;gap:var(--gala-space-sm);min-block-size:10rem;margin-block-start:var(--gala-space-lg);padding:var(--gala-space-lg);border:1px solid var(--gala-color-border);border-radius:var(--gala-radius-surface);background:var(--gala-color-surface)}.gala-version-grid .gala-version-card{margin-block-start:0}.gala-version-card>*{margin:0}.gala-version-commit{font-family:var(--gala-font-mono);font-weight:700}.gala-version-status{color:var(--gala-color-muted)}.gala-version-status--error{color:var(--gala-color-accent)}[data-layout=portfolio] .gala-card-index{grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr));gap:1.5rem}[data-layout=portfolio] .gala-card{padding:clamp(1.25rem,3vw,2rem)}.gala-card{block-size:100%;box-sizing:border-box;padding:var(--gala-space-lg);background:var(--gala-color-surface);border:1px solid var(--gala-surface-border);border-radius:var(--gala-radius-surface);box-shadow:var(--gala-surface-shadow)}.gala-card{transition:transform var(--gala-motion-base) var(--gala-ease),box-shadow var(--gala-motion-base) var(--gala-ease)}.gala-card-index li:hover .gala-card{transform:translateY(-2px);box-shadow:var(--gala-shadow-high)}.gala-stats-graph{min-block-size:var(--gala-widget-min-block-size);margin-inline:0}.gala-stats-graph svg{inline-size:100%;block-size:8rem}.gala-stats-graph polyline{fill:none;stroke:var(--gala-color-accent);stroke-width:2}.gala-loading{display:grid;min-block-size:var(--gala-widget-min-block-size);place-items:center}.gala-loading__indicator{inline-size:2rem;block-size:2rem;border:.25rem solid var(--gala-color-border);border-block-start-color:var(--gala-color-accent);border-radius:50%;animation:gala-spin .8s linear infinite}.gala-pagination{display:flex;justify-content:space-between;gap:1rem}.gala-search{display:grid;grid-template-columns:1fr auto;gap:.5rem}.gala-search label{grid-column:1 / -1}.gala-search input{min-block-size:2.75rem;font:inherit}.gala-search-results{display:grid;gap:1rem;padding:0;list-style:none}.gala-search-results article{padding:1rem;background:var(--gala-color-surface);border-radius:var(--gala-radius-control)}.gala-search-results h2{margin-block-start:0}.gala-toc{box-sizing:border-box;min-inline-size:0;max-inline-size:42rem;margin-inline:auto;padding:1rem;background:var(--gala-color-surface)}.gala-toc summary{color:var(--gala-color-text);font-weight:var(--gala-weight-display);cursor:pointer}.gala-toc nav{margin-block-start:var(--gala-space-sm);overscroll-behavior:contain}.gala-toc ol{margin:0;padding-inline-start:1.25rem}.gala-toc a[aria-current=location]{color:var(--gala-color-text);font-weight:700}.gala-share__fallback{inline-size:min(100%,36rem)}.gala-engagement__placeholder{display:grid;min-block-size:var(--gala-widget-min-block-size);align-content:center;margin:0}.gala-engagement-profile>*{margin-block:0 .5rem}.gala-engagement-actions{display:grid;gap:1rem;margin-block-start:1.5rem}.gala-engagement-actions[hidden]{display:none}.gala-account-dialog__invite{margin-block:0 1rem;max-inline-size:34rem}.gala-account-dialog__invite[hidden]{display:none}.gala-engagement-actions form,[data-comment-editor]{display:grid;gap:.5rem;max-inline-size:42rem}.gala-engagement-actions label{display:grid;gap:.5rem}.gala-engagement-actions textarea,[data-comment-editor] textarea{min-block-size:7rem;padding:.75rem;font:inherit}.gala-page-footer{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--gala-space-lg);margin-block-start:var(--gala-space-xl);padding-block-start:var(--gala-space-md);border-block-start:.125rem solid var(--gala-color-border)}.gala-page-footer__identity{display:flex;gap:var(--gala-space-sm);max-inline-size:56rem}.gala-page-footer__identity img{flex:0 0 auto;border-radius:50%;object-fit:cover}.gala-page-footer__identity p{margin:0;color:var(--gala-color-muted);font-size:var(--gala-text-sm)}.gala-page-footer__details{display:grid;gap:var(--gala-space-2xs);align-content:center}.gala-page-footer__line{display:grid;grid-template-columns:repeat(4,max-content);align-items:baseline;gap:0 var(--gala-space-sm)}.gala-page-footer__line>*+*:before{content:"\b7";margin-inline-end:var(--gala-space-sm);color:var(--gala-color-border)}.gala-page-footer__bio{line-height:1.4}.gala-page-footer__author{color:var(--gala-color-text);font-weight:var(--gala-weight-display)}.gala-page-footer nav{margin-inline-start:auto}.gala-page-footer ul{justify-content:flex-end;margin:0}.gala-error-page{min-block-size:60vh;display:grid;align-content:center;justify-items:start}.gala-code-block{position:relative;box-sizing:border-box;min-inline-size:0;max-inline-size:100%;inline-size:100%;overflow:hidden}.gala-code-block>button{position:absolute;inset-block-start:.5rem;inset-inline-end:.5rem;background:var(--gala-color-background)}.gala-code-block pre{box-sizing:border-box;min-inline-size:0;max-inline-size:100%;inline-size:100%;overflow-x:auto;overscroll-behavior-inline:contain;padding:3.5rem 1rem 1rem;background:var(--gala-color-surface);border-radius:var(--gala-radius-control)}.gala-code-block code{display:block;inline-size:max-content;min-inline-size:100%}.gala-embed{display:grid;place-items:center;gap:.75rem;box-sizing:border-box;inline-size:100%;margin-inline:0;padding:1rem;overflow:hidden;background:var(--gala-color-surface);border:.125rem solid var(--gala-color-border);border-radius:var(--gala-radius-control)}.gala-embed--youtube{aspect-ratio:16 / 9}.gala-embed--codepen{min-block-size:25rem}.gala-embed--gist,.gala-embed--x{min-block-size:8rem}.gala-embed iframe{inline-size:100%;block-size:100%;border:0}.gala-embed__icon{inline-size:2rem;block-size:2rem;background:center / contain no-repeat}.gala-embed--youtube .gala-embed__icon{background-image:url(../assets/embed-youtube.svg)}.gala-embed--codepen .gala-embed__icon{background-image:url(../assets/embed-codepen.svg)}.gala-embed--gist .gala-embed__icon{background-image:url(../assets/embed-gist.svg)}.gala-embed--x .gala-embed__icon{background-image:url(../assets/embed-x.svg)}.shiki,.shiki span{color:inherit;background-color:var(--gala-color-surface)}.gala-visually-hidden{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.gala-contact form{display:grid;gap:1rem;max-inline-size:42rem}.gala-contact label{display:grid;gap:.35rem}.gala-contact input,.gala-contact textarea{font:inherit;padding:.65rem}.gala-contact textarea{min-block-size:12rem;resize:vertical}@keyframes gala-spin{to{transform:rotate(1turn)}}@media(min-width:48rem){.gala-hero{grid-template-columns:minmax(0,1fr) minmax(18rem,1fr)}}@media(prefers-reduced-motion:no-preference){@view-transition{navigation:auto}}.gala-comments-island{margin-block-start:var(--gala-space-xl)}.gala-comments__heading{font-size:var(--gala-text-lg);margin-block-end:var(--gala-space-md)}.gala-comments,.gala-comment-replies{list-style:none;margin:0;padding:0}.gala-comment-replies{margin-block-start:var(--gala-space-sm);margin-inline-start:var(--gala-space-xs);padding-inline-start:var(--gala-space-md);border-inline-start:1px solid var(--gala-color-hairline)}.gala-comment{padding-block:var(--gala-space-sm)}.gala-comment+.gala-comment{border-block-start:1px solid var(--gala-color-hairline)}.gala-comment-replies .gala-comment+.gala-comment{border-block-start:0}.gala-comment__meta{display:flex;align-items:baseline;gap:var(--gala-space-xs);margin-block-end:var(--gala-space-2xs);font-size:var(--gala-text-sm)}.gala-comment__meta strong{font-weight:600}.gala-comment__pending{font-size:var(--gala-text-xs);color:var(--gala-color-muted)}.gala-comment__body{margin-block:0;overflow-wrap:anywhere}.gala-comment-actions{display:flex;gap:var(--gala-space-2xs);margin-block-start:var(--gala-space-2xs);opacity:.72;transition:opacity var(--gala-motion-fast) var(--gala-ease)}.gala-comment:hover>.gala-comment-actions,.gala-comment:focus-within>.gala-comment-actions{opacity:1}.gala-comment-actions button{min-block-size:2rem;padding-inline:var(--gala-space-xs);font-size:var(--gala-text-xs);background:transparent;border-color:transparent;color:var(--gala-color-muted)}.gala-comment-actions button:hover{color:var(--gala-color-text);background:var(--gala-color-surface)}.gala-comment__form{display:grid;gap:var(--gala-space-xs);margin-block:var(--gala-space-sm)}.gala-comment__form textarea{inline-size:100%;box-sizing:border-box;padding:var(--gala-space-sm);color:inherit;background:var(--gala-color-raised);border:1px solid var(--gala-color-border);border-radius:var(--gala-radius-control);font:inherit;font-size:var(--gala-text-sm);line-height:var(--gala-leading-body);resize:vertical}.gala-comment__form textarea:focus-visible{outline:2px solid var(--gala-color-accent);outline-offset:1px}.gala-comment__controls{display:flex;gap:var(--gala-space-xs)}.gala-comments__status,.gala-comments__empty,.gala-comments__prompt{color:var(--gala-color-muted);font-size:var(--gala-text-sm)}.gala-comments__more{margin-block-start:var(--gala-space-md)}.gala-engagement{min-block-size:var(--gala-widget-min-block-size);max-inline-size:var(--gala-content-width);margin-block-start:var(--gala-space-xl);padding-block-start:var(--gala-space-lg);border-block-start:1px solid var(--gala-color-border)}.gala-engagement-profile{display:flex;align-items:baseline;gap:var(--gala-space-sm);padding:0;background:none}.gala-engagement-profile h2{font-size:var(--gala-text-lg);margin:0}.gala-engagement-profile p{margin:0;color:var(--gala-color-muted);font-size:var(--gala-text-sm)}.gala-engagement>dl{display:flex;flex-wrap:wrap;gap:var(--gala-space-lg);margin-block:var(--gala-space-md)}.gala-engagement>dl>div{display:flex;flex-direction:column-reverse;gap:.1rem}.gala-engagement>dl dt{font-size:var(--gala-text-xs);letter-spacing:var(--gala-tracking-wide);text-transform:uppercase;color:var(--gala-color-muted)}.gala-engagement>dl dd{margin:0;font-size:var(--gala-text-lg);font-variant-numeric:tabular-nums}.gala-reaction-actions{display:flex;flex-wrap:wrap;gap:var(--gala-space-2xs)}.gala-engagement-actions{display:grid;gap:var(--gala-space-sm);justify-items:start}.gala-engagement-actions>[data-follow-article]{inline-size:auto}.gala-share{margin-block-start:var(--gala-space-lg)}.gala-engagement{position:relative}.gala-reading-progress{position:fixed;z-index:20;inset:0 0 auto;inline-size:100%;block-size:.2rem;appearance:none;border:0;background:transparent;pointer-events:none}.gala-reading-progress::-webkit-progress-bar{background:transparent}.gala-reading-progress::-webkit-progress-value{background:var(--gala-color-accent)}.gala-reading-progress::-moz-progress-bar{background:var(--gala-color-accent)}.gala-reading-layout{display:block}.gala-conversation{max-width:var(--gala-measure);margin-inline:auto;padding-block:clamp(3rem,7vw,6rem)}.gala-conversation__header{margin-block-end:var(--gala-space-xl)}.gala-conversation__header h2{margin:0;font:var(--gala-weight-display) var(--gala-text-2xl)/var(--gala-leading-tight) var(--gala-font-display);letter-spacing:var(--gala-tracking-tight)}.gala-conversation__status{display:block;min-block-size:1.5em;color:var(--gala-color-muted)}.gala-conversation__status:empty{display:none}.gala-action-rail{position:static;z-index:4;inset-block-start:6rem;box-sizing:border-box;width:min(100%,42rem);margin:var(--gala-space-xl) auto 0;display:grid;grid-template-columns:1fr auto 1fr;gap:var(--gala-space-md);align-items:center;padding:var(--gala-space-md);border:1px solid var(--gala-color-hairline);border-radius:var(--gala-radius-surface);background:color-mix(in srgb,var(--gala-color-background) 88%,transparent);box-shadow:var(--gala-shadow-high);backdrop-filter:blur(16px)}.gala-action-rail button,.gala-action-rail a{inline-size:2.5rem;min-block-size:2.5rem;display:grid;place-items:center;padding:0;border:0;border-radius:50%;color:var(--gala-color-muted);background:transparent;font:600 var(--gala-text-xs)/1 var(--gala-font-body);text-decoration:none;cursor:pointer}.gala-action-rail svg{inline-size:1.2rem;block-size:1.2rem}.gala-action-rail button:hover,.gala-action-rail a:hover,.gala-action-rail button[aria-pressed=true]{color:var(--gala-color-background);background:var(--gala-color-accent)}.gala-engagement .gala-action-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gala-space-xs);margin:0}.gala-action-stats>div{display:flex;min-block-size:2.5rem;align-items:center;justify-content:space-between;gap:.4rem;padding-inline:.25rem}.gala-action-stats>div+div{border-inline-start:1px solid var(--gala-color-hairline)}.gala-action-stats dt{display:grid;place-items:center;color:var(--gala-color-muted)}.gala-action-stats dt svg{inline-size:1.2rem;block-size:1.2rem}.gala-action-stats dd{margin:0;color:var(--gala-color-text);font:400 1.2rem/1 var(--gala-font-mono)}.gala-action-group{display:grid}.gala-reaction-actions,.gala-utility-actions,.gala-share{display:grid;grid-template-columns:repeat(6,2.5rem);gap:var(--gala-space-2xs);justify-content:center}.gala-utility-actions>.gala-share{display:contents}.gala-action-rail__separator{inline-size:1px;align-self:stretch;margin-block:.25rem;background:var(--gala-color-hairline)}.gala-action-rail .gala-share__fallback{position:fixed;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%)}.gala-action-rail .gala-share__fallback--visible{z-index:10;inset:auto 1rem 1rem;inline-size:min(32rem,calc(100vw - 2rem));block-size:auto;padding:.75rem;overflow:visible;clip-path:none}.gala-action-dock{display:block;min-block-size:4.25rem}.gala-article-boundary{width:100%;margin:clamp(4rem,8vw,7rem) auto var(--gala-space-lg);padding-block-start:var(--gala-space-md);display:flex;align-items:baseline;justify-content:space-between;gap:var(--gala-space-md);border-block-start:.25rem solid var(--gala-color-text);font-size:var(--gala-text-sm)}@media(min-width:75rem){.gala-reading-layout{display:grid;grid-template-columns:minmax(10rem,15rem) minmax(0,1fr) 8.5rem;align-items:start;justify-content:space-between;gap:clamp(2rem,4vw,5rem)}.gala-reading-layout .gala-toc{grid-column:1;grid-row:1;position:sticky;inset-block-start:6rem;max-inline-size:none;margin-inline:0;max-block-size:calc(100vh - 8rem);transition:box-shadow var(--gala-motion-fast) var(--gala-ease)}.gala-reading-layout .gala-toc--floating{box-shadow:var(--gala-shadow-high)}.gala-reading-layout .gala-toc>summary{display:none}.gala-reading-layout .gala-toc>nav{display:block;max-block-size:calc(100vh - 10rem);margin-block-start:0;overflow-y:auto;scrollbar-width:thin}.gala-reading-layout .gala-toc--overflowing ol{padding-block:max(1rem,calc((100vh - 11.5rem)/2))}.gala-reading-layout .gala-markdown{grid-column:2;grid-row:1;max-inline-size:56rem;inline-size:100%;margin:0}.gala-article-boundary{grid-column:1 / -1;grid-row:2;margin-inline:0}.gala-action-dock{grid-column:2;grid-row:3}.gala-action-rail{grid-column:3;grid-row:1;position:sticky;inset-block-start:6rem;width:8.5rem;margin:0;display:grid;grid-template-columns:1fr;gap:var(--gala-space-sm);padding:var(--gala-space-sm);border-radius:var(--gala-radius-surface)}.gala-action-rail .gala-action-stats{gap:var(--gala-space-2xs)}.gala-action-rail:not(.gala-action-rail--integrated) .gala-action-stats{grid-template-columns:1fr}.gala-action-rail:not(.gala-action-rail--integrated) .gala-action-stats>div+div{border-inline-start:0;border-block-start:1px solid var(--gala-color-hairline)}.gala-action-rail .gala-action-stats>div{min-block-size:2.5rem;display:grid;grid-template-columns:repeat(2,2.5rem);justify-content:center;gap:.25rem;padding-inline:0}.gala-action-rail .gala-action-stats dd{justify-self:center}.gala-action-rail .gala-reaction-actions,.gala-action-rail .gala-utility-actions,.gala-action-rail .gala-share{grid-template-columns:repeat(2,2.5rem)}.gala-action-rail__separator{inline-size:auto;block-size:1px;margin:.25rem}.gala-action-rail--integrated{grid-column:2;grid-row:3;position:static;align-self:start;width:100%;margin:0;display:grid;grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr);grid-template-rows:auto 1px auto;grid-template-areas:"reactions utility-separator utilities" "stats-separator stats-separator stats-separator" "stats stats stats";justify-content:stretch;gap:clamp(var(--gala-space-2xs),1vw,var(--gala-space-md));align-items:center;padding:var(--gala-space-md);border-radius:var(--gala-radius-surface)}.gala-action-rail--integrated .gala-action-rail__separator{grid-area:utility-separator;inline-size:1px;block-size:auto;margin:.25rem 0}.gala-action-rail--integrated .gala-action-rail__separator--stats{grid-area:stats-separator;inline-size:auto;block-size:1px;margin:0}.gala-action-rail--integrated .gala-action-group--reactions{grid-area:reactions}.gala-action-rail--integrated .gala-action-group--utilities{grid-area:utilities}.gala-action-rail--integrated .gala-reaction-actions{grid-template-columns:repeat(6,2.5rem)}.gala-action-rail--integrated .gala-utility-actions{grid-template-columns:repeat(4,2.5rem)}.gala-action-rail--integrated .gala-action-stats>div{min-block-size:2.5rem;display:flex;flex-direction:row;gap:.4rem;padding-inline:.25rem}.gala-action-rail--integrated .gala-action-stats{grid-area:stats;grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:74.99rem){.gala-action-rail{grid-template-columns:1fr;width:min(100%,42rem)}.gala-action-rail__separator{inline-size:auto;block-size:1px;margin:0}}@media(max-width:47.99rem){.gala-page-footer{flex-direction:column}.gala-page-footer__line{grid-template-columns:minmax(0,1fr);gap:var(--gala-space-2xs)}.gala-page-footer__line>*+*:before{content:none}.gala-page-footer nav{margin-inline-start:0}.gala-page-footer ul{justify-content:flex-start}.gala-site-name{flex:1 1 auto;min-inline-size:4rem;font-size:var(--gala-text-base)}.gala-header-link{display:none}.gala-site-header__actions{flex:0 0 auto;gap:.125rem}.gala-account-control{inline-size:2.75rem;padding:0;justify-content:center}.gala-account-control [data-user-label]{display:none}}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
(() => {
|
|
2
|
+
const page = document.querySelector('[data-version-page]');
|
|
3
|
+
if (!(page instanceof HTMLElement)) return;
|
|
4
|
+
const modules = Object.freeze([
|
|
5
|
+
{ id: 'app', name: 'Gala App', url: 'https://app.gala67.com/version.json', repository: 'https://github.com/rathnasgala/app' },
|
|
6
|
+
{ id: 'api', name: 'Gala API', url: `${page.dataset.apiBaseUrl}/v1/version?siteId=${encodeURIComponent(page.dataset.siteId ?? '')}`, repository: 'https://github.com/rathnasgala/api' },
|
|
7
|
+
{ id: 'cli', name: 'Gala CLI', url: 'https://registry.npmjs.org/%40rathnasgala%2Fcli/latest', repository: 'https://github.com/rathnasgala/cli' },
|
|
8
|
+
{ id: 'theme', name: 'Gala Site Template', url: 'https://registry.npmjs.org/%40rathnasgala%2Ftheme/latest', repository: 'https://github.com/rathnasgala/site-template' },
|
|
9
|
+
{ id: 'content-validation', name: 'Gala Content Validation', url: 'https://registry.npmjs.org/%40rathnasgala%2Fcontent-validation/latest', repository: 'https://github.com/rathnasgala/publish' }
|
|
10
|
+
]);
|
|
11
|
+
const commitPattern = /^[0-9a-f]{40}$/;
|
|
12
|
+
function exactCommit(value) {
|
|
13
|
+
if (commitPattern.test(value?.commit)) return value.commit;
|
|
14
|
+
if (commitPattern.test(value?.gala?.sourceCommit)) return value.gala.sourceCommit;
|
|
15
|
+
if (commitPattern.test(value?.gitHead)) return value.gitHead;
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
function render(module, result) {
|
|
19
|
+
const card = page.querySelector(`[data-version-module="${module.id}"]`);
|
|
20
|
+
if (!(card instanceof HTMLElement)) return;
|
|
21
|
+
card.replaceChildren();
|
|
22
|
+
card.removeAttribute('aria-busy');
|
|
23
|
+
const heading = document.createElement('h2');
|
|
24
|
+
heading.textContent = module.name;
|
|
25
|
+
card.append(heading);
|
|
26
|
+
if (result.status === 'rejected') {
|
|
27
|
+
const status = document.createElement('p');
|
|
28
|
+
status.className = 'gala-version-status gala-version-status--error';
|
|
29
|
+
status.textContent = 'Live version unavailable. Refresh to retry this source.';
|
|
30
|
+
card.append(status);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const value = result.value;
|
|
34
|
+
const commit = exactCommit(value);
|
|
35
|
+
if (typeof value.version === 'string') {
|
|
36
|
+
const release = document.createElement('p');
|
|
37
|
+
release.textContent = `Release ${value.version}`;
|
|
38
|
+
card.append(release);
|
|
39
|
+
}
|
|
40
|
+
if (commit) {
|
|
41
|
+
const link = document.createElement('a');
|
|
42
|
+
link.href = `${module.repository}/commit/${commit}`;
|
|
43
|
+
link.className = 'gala-version-commit';
|
|
44
|
+
link.textContent = commit.slice(0, 8);
|
|
45
|
+
card.append(link);
|
|
46
|
+
} else {
|
|
47
|
+
const status = document.createElement('p');
|
|
48
|
+
status.className = 'gala-version-status gala-version-status--error';
|
|
49
|
+
status.textContent = 'The live source did not report an exact commit.';
|
|
50
|
+
card.append(status);
|
|
51
|
+
}
|
|
52
|
+
if (typeof value.builtAt === 'string') {
|
|
53
|
+
const built = document.createElement('time');
|
|
54
|
+
built.dateTime = value.builtAt;
|
|
55
|
+
built.textContent = `Built ${new Date(value.builtAt).toLocaleString()}`;
|
|
56
|
+
card.append(built);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async function load(module) {
|
|
60
|
+
const response = await fetch(module.url, { headers: { Accept: 'application/json' } });
|
|
61
|
+
if (!response.ok) throw new Error(`VERSION_${response.status}`);
|
|
62
|
+
return response.json();
|
|
63
|
+
}
|
|
64
|
+
async function refresh() {
|
|
65
|
+
for (const card of page.querySelectorAll('[data-version-module]')) {
|
|
66
|
+
card.setAttribute('aria-busy', 'true');
|
|
67
|
+
card.replaceChildren(Object.assign(document.createElement('p'), { textContent: 'Loading version…' }));
|
|
68
|
+
}
|
|
69
|
+
const results = await Promise.allSettled(modules.map(load));
|
|
70
|
+
modules.forEach((module, index) => render(module, results[index]));
|
|
71
|
+
}
|
|
72
|
+
page.querySelector('[data-version-retry]')?.addEventListener('click', refresh);
|
|
73
|
+
refresh();
|
|
74
|
+
})();
|
|
@@ -476,6 +476,7 @@ main,
|
|
|
476
476
|
max-inline-size: var(--gala-content-width);
|
|
477
477
|
margin-inline: auto;
|
|
478
478
|
}
|
|
479
|
+
.gala-page-footer { box-sizing: border-box; inline-size: 100%; }
|
|
479
480
|
main { flex: 1 0 auto; inline-size: 100%; }
|
|
480
481
|
|
|
481
482
|
a { color: var(--gala-color-accent); }
|
|
@@ -527,6 +528,17 @@ button:focus-visible {
|
|
|
527
528
|
.gala-page-footer ul,
|
|
528
529
|
.gala-share ul { display: flex; flex-wrap: wrap; gap: 1rem; padding: 0; list-style: none; }
|
|
529
530
|
.gala-card-index { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); gap: 1rem; padding: 0; list-style: none; }
|
|
531
|
+
.gala-version-page { inline-size: min(100%, 74rem); margin-inline: auto; }
|
|
532
|
+
.gala-version-page__header { max-inline-size: 48rem; }
|
|
533
|
+
.gala-version-page__header > p { color: var(--gala-color-muted); }
|
|
534
|
+
.gala-version-page__header .gala-button { margin-block-start: var(--gala-space-md); }
|
|
535
|
+
.gala-version-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); gap: var(--gala-space-md); margin-block-start: var(--gala-space-lg); }
|
|
536
|
+
.gala-version-card { display: grid; align-content: start; gap: var(--gala-space-sm); min-block-size: 10rem; margin-block-start: var(--gala-space-lg); padding: var(--gala-space-lg); border: 1px solid var(--gala-color-border); border-radius: var(--gala-radius-surface); background: var(--gala-color-surface); }
|
|
537
|
+
.gala-version-grid .gala-version-card { margin-block-start: 0; }
|
|
538
|
+
.gala-version-card > * { margin: 0; }
|
|
539
|
+
.gala-version-commit { font-family: var(--gala-font-mono); font-weight: 700; }
|
|
540
|
+
.gala-version-status { color: var(--gala-color-muted); }
|
|
541
|
+
.gala-version-status--error { color: var(--gala-color-accent); }
|
|
530
542
|
[data-layout='portfolio'] .gala-card-index { grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr)); gap: 1.5rem; }
|
|
531
543
|
[data-layout='portfolio'] .gala-card { padding: clamp(1.25rem, 3vw, 2rem); }
|
|
532
544
|
/* The surfaces are where `componentStyle` becomes visible: quiet sits on the page, outlined draws
|
|
@@ -596,7 +608,7 @@ button:focus-visible {
|
|
|
596
608
|
.gala-page-footer__identity img { flex: 0 0 auto; border-radius: 50%; object-fit: cover; }
|
|
597
609
|
.gala-page-footer__identity p { margin: 0; color: var(--gala-color-muted); font-size: var(--gala-text-sm); }
|
|
598
610
|
.gala-page-footer__details { display: grid; gap: var(--gala-space-2xs); align-content: center; }
|
|
599
|
-
.gala-page-footer__line { display: grid; grid-template-columns: repeat(
|
|
611
|
+
.gala-page-footer__line { display: grid; grid-template-columns: repeat(4, max-content); align-items: baseline; gap: 0 var(--gala-space-sm); }
|
|
600
612
|
.gala-page-footer__line > * + *::before { content: "·"; margin-inline-end: var(--gala-space-sm); color: var(--gala-color-border); }
|
|
601
613
|
.gala-page-footer__bio { line-height: 1.4; }
|
|
602
614
|
.gala-page-footer__author { color: var(--gala-color-text); font-weight: var(--gala-weight-display); }
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: layouts/base.njk
|
|
3
|
+
title: Versions
|
|
4
|
+
permalink: /s/version/index.html
|
|
5
|
+
versionPage: true
|
|
6
|
+
---
|
|
7
|
+
<section class="gala-version-page" data-version-page
|
|
8
|
+
data-api-base-url="{{ site.platform.apiBaseUrl or 'https://api.gala67.com' }}"
|
|
9
|
+
data-site-id="{{ site.site.id | escape }}"
|
|
10
|
+
data-repository="{{ site.site.repository | escape }}"
|
|
11
|
+
data-publication-commit="{{ buildIdentity.commit | escape }}">
|
|
12
|
+
<header class="gala-version-page__header">
|
|
13
|
+
<p class="gala-eyebrow">Live system</p>
|
|
14
|
+
<h1>What is running now</h1>
|
|
15
|
+
<p>Versions are read from the artifacts and package releases currently serving this publication.</p>
|
|
16
|
+
<button type="button" class="gala-button" data-version-retry>Refresh</button>
|
|
17
|
+
</header>
|
|
18
|
+
{% if buildIdentity %}
|
|
19
|
+
<article class="gala-version-card">
|
|
20
|
+
<p class="gala-eyebrow">This publication</p>
|
|
21
|
+
<h2>{{ site.site.name }}</h2>
|
|
22
|
+
<p><a href="https://github.com/{{ site.site.repository | escape }}">{{ site.site.repository }}</a></p>
|
|
23
|
+
<p><a href="https://github.com/{{ site.site.repository | escape }}/commit/{{ buildIdentity.commit }}" class="gala-version-commit">{{ buildIdentity.shortCommit }}</a></p>
|
|
24
|
+
</article>
|
|
25
|
+
{% endif %}
|
|
26
|
+
<div class="gala-version-grid" data-version-grid aria-live="polite">
|
|
27
|
+
{% for module in ['app', 'api', 'cli', 'theme', 'content-validation'] %}
|
|
28
|
+
<article class="gala-version-card" data-version-module="{{ module }}" aria-busy="true">
|
|
29
|
+
<p class="gala-version-status">Loading version…</p>
|
|
30
|
+
</article>
|
|
31
|
+
{% endfor %}
|
|
32
|
+
</div>
|
|
33
|
+
</section>
|