diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000000..84f01be72c
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,3 @@
+# Generated by `npm run tokens` from @octopusdeploy/design-system-tokens.
+# Excluded so prettier and the generator don't rewrite each other on every dev run.
+public/docs/css/design-tokens.css
diff --git a/package.json b/package.json
index 7fb50e08dc..e5f8700d7f 100644
--- a/package.json
+++ b/package.json
@@ -9,13 +9,16 @@
"pnpm": ">=9.10.0"
},
"scripts": {
- "dev": "npm-run-all --parallel dev:img dev:dictionary dev:astro dev:watch",
+ "dev": "npm-run-all dev:tokens --parallel dev:img dev:dictionary dev:astro dev:watch",
"dev:dictionary": "node ./dictionary-sorter.mjs",
"dev:img": "node ./src/themes/octopus/utilities/img.mjs",
+ "dev:tokens": "npm run tokens",
"dev:astro": "astro dev --mode staging",
+ "tokens": "node ./src/themes/octopus/utilities/design-tokens.mjs",
"dev:watch": "onchange 'src/**/*.{js,mjs,ts,astro,css}' 'public/docs/js/**/*.js' 'public/docs/css/**/*.css' -- prettier --write --plugin=prettier-plugin-astro {{changed}}",
"astro": "astro",
"snapshot": "node --env-file=.env.production ./scripts/snapshot-shared.mjs",
+ "prebuild": "npm run tokens",
"build": "astro build",
"crawl": "linkinator ./dist --skip \"^(?!http://localhost)\" --recurse --verbosity error",
"format": "prettier --write --plugin=prettier-plugin-astro 'src/**/*.{js,mjs,ts,astro,css}' 'public/docs/js/**/*.js' 'public/docs/css/**/*.css'",
@@ -30,6 +33,7 @@
"dependencies": {
"@astrojs/markdown-remark": "7.2.1",
"@astrojs/mdx": "^7.0.3",
+ "@octopusdeploy/design-system-tokens": "^2026.3.7935",
"astro": "^7.0.9",
"astro-accelerator-utils": "^0.3.84",
"glob": "^13.0.6",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d90cff0c41..8bd7cb0ffc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -24,6 +24,9 @@ importers:
'@astrojs/mdx':
specifier: ^7.0.3
version: 7.0.3(@astrojs/markdown-satteri@0.3.4)(astro@7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.10.1)(rollup@4.60.3)(yaml@2.8.4))
+ '@octopusdeploy/design-system-tokens':
+ specifier: ^2026.3.7935
+ version: 2026.3.7935
astro:
specifier: ^7.0.9
version: 7.0.9(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@24.10.1)(rollup@4.60.3)(yaml@2.8.4)
@@ -814,6 +817,9 @@ packages:
'@emnapi/core': ^1.7.1
'@emnapi/runtime': ^1.7.1
+ '@octopusdeploy/design-system-tokens@2026.3.7935':
+ resolution: {integrity: sha512-JAn1i5rYWyZdKSLBccVz/gwzJAVsi7PsG6/YR73kHLlx+tmNqYHT3l0SkGDwzblW1Fu4Qm2rQuEhsjlIEWv/SQ==}
+
'@oslojs/encoding@1.1.0':
resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==}
@@ -3929,6 +3935,8 @@ snapshots:
'@tybys/wasm-util': 0.10.3
optional: true
+ '@octopusdeploy/design-system-tokens@2026.3.7935': {}
+
'@oslojs/encoding@1.1.0': {}
'@oxc-project/types@0.139.0': {}
diff --git a/public/docs/css/design-tokens.css b/public/docs/css/design-tokens.css
new file mode 100644
index 0000000000..e511361610
--- /dev/null
+++ b/public/docs/css/design-tokens.css
@@ -0,0 +1,997 @@
+/*
+ * GENERATED FILE - DO NOT EDIT.
+ *
+ * Source: @octopusdeploy/design-system-tokens@2026.3.7935
+ * Regenerate with: npm run tokens
+ *
+ * Site-specific variables live in vars.css, which is loaded after this
+ * file and therefore wins on any name it also defines.
+ */
+
+:root {
+ /* Typography composites and font families (textTheme) */
+ --fontFamilyCode: ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", "Oxygen Mono", "Ubuntu Mono", monospace;
+ --fontFamilyDefault: BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen Sans", Ubuntu, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
+ --textBodyBoldLarge: 600 1rem/1.5rem var(--fontFamilyDefault, 'BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen Sans", Ubuntu, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol');
+ --textBodyBoldMedium: 600 0.875rem/1.25rem var(--fontFamilyDefault, 'BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen Sans", Ubuntu, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol');
+ --textBodyBoldSmall: 600 0.8125rem/1.25rem var(--fontFamilyDefault, 'BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen Sans", Ubuntu, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol');
+ --textBodyBoldXSmall: 600 0.75rem/1.25rem var(--fontFamilyDefault, 'BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen Sans", Ubuntu, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol');
+ --textBodyRegularLarge: 400 1rem/1.5rem var(--fontFamilyDefault, 'BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen Sans", Ubuntu, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol');
+ --textBodyRegularMedium: 400 0.875rem/1.25rem var(--fontFamilyDefault, 'BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen Sans", Ubuntu, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol');
+ --textBodyRegularSmall: 400 0.8125rem/1.25rem var(--fontFamilyDefault, 'BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen Sans", Ubuntu, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol');
+ --textBodyRegularXSmall: 400 0.75rem/1.25rem var(--fontFamilyDefault, 'BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen Sans", Ubuntu, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol');
+ --textCodeBoldLarge: 600 1rem/1.5rem var(--fontFamilyCode, 'ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", "Oxygen Mono", "Ubuntu Mono", monospace');
+ --textCodeBoldMedium: 600 0.875rem/1.25rem var(--fontFamilyCode, 'ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", "Oxygen Mono", "Ubuntu Mono", monospace');
+ --textCodeBoldSmall: 600 0.8125rem/1.25rem var(--fontFamilyCode, 'ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", "Oxygen Mono", "Ubuntu Mono", monospace');
+ --textCodeBoldXSmall: 600 0.75rem/1.25rem var(--fontFamilyCode, 'ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", "Oxygen Mono", "Ubuntu Mono", monospace');
+ --textCodeRegularLarge: 400 1rem/1.5rem var(--fontFamilyCode, 'ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", "Oxygen Mono", "Ubuntu Mono", monospace');
+ --textCodeRegularMedium: 400 0.875rem/1.25rem var(--fontFamilyCode, 'ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", "Oxygen Mono", "Ubuntu Mono", monospace');
+ --textCodeRegularSmall: 400 0.8125rem/1.25rem var(--fontFamilyCode, 'ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", "Oxygen Mono", "Ubuntu Mono", monospace');
+ --textCodeRegularXSmall: 400 0.75rem/1.25rem var(--fontFamilyCode, 'ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", "Oxygen Mono", "Ubuntu Mono", monospace');
+ --textHeading2xLarge: 600 3rem/3.5rem var(--fontFamilyDefault, 'BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen Sans", Ubuntu, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol');
+ --textHeadingLarge: 600 1.5rem/2rem var(--fontFamilyDefault, 'BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen Sans", Ubuntu, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol');
+ --textHeadingMedium: 600 1.25rem/1.75rem var(--fontFamilyDefault, 'BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen Sans", Ubuntu, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol');
+ --textHeadingSmall: 600 1rem/1.5rem var(--fontFamilyDefault, 'BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen Sans", Ubuntu, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol');
+ --textHeadingXLarge: 600 2rem/2.75rem var(--fontFamilyDefault, 'BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen Sans", Ubuntu, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol');
+ --textHeadingXSmall: 600 0.75rem/1.25rem var(--fontFamilyDefault, 'BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen Sans", Ubuntu, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol');
+
+ /* Theme-invariant scales */
+ --space-0: 0;
+ --space-1: 0.063rem;
+ --space-2: 0.125rem;
+ --space-4: 0.25rem;
+ --space-6: 0.375rem;
+ --space-8: 0.5rem;
+ --space-12: 0.75rem;
+ --space-16: 1rem;
+ --space-24: 1.5rem;
+ --space-32: 2rem;
+ --space-40: 2.5rem;
+ --space-48: 3rem;
+ --space-56: 3.5rem;
+ --space-64: 4rem;
+ --space-72: 4.5rem;
+ --space-80: 5rem;
+ --borderRadius-circle: 9999px;
+ --borderRadius-extraLarge: 16px;
+ --borderRadius-extraSmall: 2px;
+ --borderRadius-large: 8px;
+ --borderRadius-medium: 6px;
+ --borderRadius-none: 0px;
+ --borderRadius-small: 4px;
+ --borderWidth-1: 1px;
+ --borderWidth-2: 2px;
+ --borderWidth-3: 3px;
+ --borderWidth-4: 4px;
+ --borderWidth-none: 0px;
+ --fontSize-2xLarge: 2rem;
+ --fontSize-3xLarge: 3rem;
+ --fontSize-base: 1rem;
+ --fontSize-large: 1.25rem;
+ --fontSize-medium: 0.875rem;
+ --fontSize-small: 0.8125rem;
+ --fontSize-xLarge: 1.5rem;
+ --fontSize-xSmall: 0.75rem;
+ --fontWeight-400: 400;
+ --fontWeight-500: 500;
+ --fontWeight-600: 600;
+ --fontWeight-700: 700;
+ --lineHeight-2xLarge: 2.75rem;
+ --lineHeight-3xLarge: 3.5rem;
+ --lineHeight-large: 2rem;
+ --lineHeight-medium: 1.75rem;
+ --lineHeight-small: 1.5rem;
+ --lineHeight-xLarge: 2.5rem;
+ --lineHeight-xSmall: 1.25rem;
+ --letterSpacing-none: 0;
+ --letterSpacing-tight: -0.006rem;
+ --letterSpacing-wide: 0.006rem;
+ --letterSpacing-wider: 0.013rem;
+
+ /* Colors and shadows (lightTheme) */
+ --colorAvatarBackgroundImageDefault: #DAE2E9;
+ --colorAvatarBackgroundImageHover: #A9BBCB;
+ --colorAvatarBackgroundProjectDefault: #557999;
+ --colorAvatarBackgroundProjectHover: #3E607D;
+ --colorAvatarBackgroundSpaceDefault: #1A77CA;
+ --colorAvatarBackgroundSpaceHover: #155EA0;
+ --colorAvatarBackgroundTemplateDefault: #F4F6F8;
+ --colorAvatarBackgroundTemplateHover: #DAE2E9;
+ --colorAvatarBackgroundTenantDefault: #FFFFFF;
+ --colorAvatarBackgroundTenantHover: #F4F6F8;
+ --colorAvatarBackgroundUserDefault: #1A77CA;
+ --colorAvatarBackgroundUserHover: #155EA0;
+ --colorAvatarIconPrimary: #FFFFFF;
+ --colorAvatarIconSecondary: #1F303F;
+ --colorAvatarStackBackgroundHover: #CDE4F7;
+ --colorAvatarStackBorder: #FFFFFF;
+ --colorAvatarText: #FFFFFF;
+ --colorBackgroundBold: #FFFFFF;
+ --colorBackgroundDanger: #FFF3F3;
+ --colorBackgroundDisabled: #DEE1E6;
+ --colorBackgroundFeature: #F8F5FD;
+ --colorBackgroundInfo: #F2F8FD;
+ --colorBackgroundInverseNeutral: #515D70;
+ --colorBackgroundInversePrimary: #16191F;
+ --colorBackgroundInverseSecondary: #3D4653;
+ --colorBackgroundInverseSuccess: #00874D;
+ --colorBackgroundPrimaryDefault: #FFFFFF;
+ --colorBackgroundPrimaryHover: #F5F6F8;
+ --colorBackgroundPrimaryPressed: #DEE1E6;
+ --colorBackgroundPrimaryTransparent: rgb(from #FFFFFF r g b / 0.72);
+ --colorBackgroundQuartaryDefault: #FFFFFF;
+ --colorBackgroundQuartaryHover: #F5F6F8;
+ --colorBackgroundQuartaryPressed: #DEE1E6;
+ --colorBackgroundSecondaryDefault: #F5F6F8;
+ --colorBackgroundSecondaryHover: #FFFFFF;
+ --colorBackgroundSecondaryPressed: #B2B9C5;
+ --colorBackgroundSecondaryTransparent: rgb(from #F5F6F8 r g b / 0.72);
+ --colorBackgroundSelected: #1A77CA;
+ --colorBackgroundSuccess: #EEFAF5;
+ --colorBackgroundTertiary: #DEE1E6;
+ --colorBackgroundWarning: #FFF7D9;
+ --colorBadgeBackgroundDanger: #D63D3D;
+ --colorBadgeBackgroundFeature: #E7DEF8;
+ --colorBadgeBackgroundInfo: #1A77CA;
+ --colorBadgeBackgroundInverseNeutral: #515D70;
+ --colorBadgeBackgroundNeutral: #DEE1E6;
+ --colorBadgeBackgroundSuccess: #00874D;
+ --colorBadgeBackgroundUpsell: #E7DEF8;
+ --colorBadgeBackgroundWarning: #927002;
+ --colorBadgeBorderDanger: #FFD8D8;
+ --colorBadgeBorderSuccess: #B8E7D3;
+ --colorBadgeIconFeature: #572B97;
+ --colorBadgeIconPrimary: #FFFFFF;
+ --colorBadgeIconSecondary: #000000;
+ --colorBadgeIconUpsell: #572B97;
+ --colorBadgeTextDanger: #AA3030;
+ --colorBadgeTextFeature: #572B97;
+ --colorBadgeTextPrimary: #FFFFFF;
+ --colorBadgeTextSecondary: #000000;
+ --colorBadgeTextSuccess: #006A3D;
+ --colorBadgeTextUpsell: #572B97;
+ --colorBorderBold: #68778D;
+ --colorBorderDanger: #D63D3D;
+ --colorBorderDefault: #515D70;
+ --colorBorderDisabled: #B2B9C5;
+ --colorBorderFeature: #895ED3;
+ --colorBorderInfo: #1A77CA;
+ --colorBorderInversePrimary: #3D4653;
+ --colorBorderInverseSecondary: #3D4653;
+ --colorBorderLinkDefault: #1A77CA;
+ --colorBorderLinkHover: #155EA0;
+ --colorBorderPrimary: #DEE1E6;
+ --colorBorderSecondary: #F5F6F8;
+ --colorBorderSelected: #1A77CA;
+ --colorBorderSuccess: #00874D;
+ --colorBorderTertiary: #B2B9C5;
+ --colorBorderWarning: #B98F02;
+ --colorButtonBackgroundDestructiveDefault: #D63D3D;
+ --colorButtonBackgroundDestructiveHover: #AA3030;
+ --colorButtonBackgroundDestructivePressed: #802424;
+ --colorButtonBackgroundDisabled: rgb(from #DEE1E6 r g b / 0.56);
+ --colorButtonBackgroundLoudDefault: #1A77CA;
+ --colorButtonBackgroundLoudHover: #155EA0;
+ --colorButtonBackgroundLoudPressed: #0F4778;
+ --colorButtonBackgroundNeutralDefault: #F5F6F8;
+ --colorButtonBackgroundNeutralHover: #DEE1E6;
+ --colorButtonBackgroundNeutralPressed: #B2B9C5;
+ --colorButtonBackgroundPrimaryDefault: #00874D;
+ --colorButtonBackgroundPrimaryHover: #006A3D;
+ --colorButtonBackgroundPrimaryPressed: #00502E;
+ --colorButtonBackgroundQuietDefault: rgb(from #1A77CA r g b / 0);
+ --colorButtonBackgroundQuietHover: rgb(from #1A77CA r g b / 0.08);
+ --colorButtonBackgroundQuietPressed: rgb(from #1A77CA r g b / 0.24);
+ --colorButtonBackgroundSecondaryDefault: rgb(from #1A77CA r g b / 0);
+ --colorButtonBackgroundSecondaryHover: rgb(from #1A77CA r g b / 0.08);
+ --colorButtonBackgroundSecondaryPressed: rgb(from #1A77CA r g b / 0.24);
+ --colorButtonBackgroundTertiaryDefault: rgb(from #1A77CA r g b / 0.06);
+ --colorButtonBackgroundTertiaryHover: rgb(from #1A77CA r g b / 0.16);
+ --colorButtonBackgroundTertiaryPressed: rgb(from #1A77CA r g b / 0.24);
+ --colorButtonBorderDisabled: #DEE1E6;
+ --colorButtonBorderSecondary: #449BE1;
+ --colorButtonIconDestructive: #FFFFFF;
+ --colorButtonIconDisabled: #B2B9C5;
+ --colorButtonIconLoud: #FFFFFF;
+ --colorButtonIconNeutral: #282F38;
+ --colorButtonIconPrimary: #FFFFFF;
+ --colorButtonIconQuiet: #1A77CA;
+ --colorButtonIconSecondary: #1A77CA;
+ --colorButtonIconTertiary: #1A77CA;
+ --colorButtonTextDestructive: #FFFFFF;
+ --colorButtonTextDisabled: #8A96A7;
+ --colorButtonTextLoud: #FFFFFF;
+ --colorButtonTextNeutral: #282F38;
+ --colorButtonTextPrimary: #FFFFFF;
+ --colorButtonTextQuiet: #1A77CA;
+ --colorButtonTextSecondary: #1A77CA;
+ --colorButtonTextTertiary: #1A77CA;
+ --colorCalloutBackgroundDangerDefault: rgb(from #FFD8D8 r g b / 0.5);
+ --colorCalloutBackgroundDangerHover: rgb(from #FF9F9F r g b / 0.4);
+ --colorCalloutBackgroundDangerPressed: rgb(from #FF9F9F r g b / 0.64);
+ --colorCalloutBackgroundFeatureDefault: rgb(from #E7DEF8 r g b / 0.5);
+ --colorCalloutBackgroundFeatureHover: rgb(from #C5AEEE r g b / 0.4);
+ --colorCalloutBackgroundFeaturePressed: rgb(from #C5AEEE r g b / 0.64);
+ --colorCalloutBackgroundInfoDefault: rgb(from #CDE4F7 r g b / 0.5);
+ --colorCalloutBackgroundInfoHover: rgb(from #87BFEC r g b / 0.4);
+ --colorCalloutBackgroundInfoPressed: rgb(from #87BFEC r g b / 0.64);
+ --colorCalloutBackgroundSuccessDefault: rgb(from #B8E7D3 r g b / 0.45);
+ --colorCalloutBackgroundSuccessHover: rgb(from #5ECD9E r g b / 0.4);
+ --colorCalloutBackgroundSuccessPressed: rgb(from #5ECD9E r g b / 0.64);
+ --colorCalloutBackgroundUpsell: linear-gradient(95deg, rgb(from #CDE4F7 r g b / 0.5) 0%, rgb(from #E7DEF8 r g b / 0.5) 100%);
+ --colorCalloutBackgroundWarningDefault: rgb(from #FFDF62 r g b / 0.32);
+ --colorCalloutBackgroundWarningHover: rgb(from #FFDF62 r g b / 0.4);
+ --colorCalloutBackgroundWarningPressed: rgb(from #FFDF62 r g b / 0.64);
+ --colorCalloutBorderDanger: #D63D3D;
+ --colorCalloutBorderDefault: #68778D;
+ --colorCalloutBorderFeature: #895ED3;
+ --colorCalloutBorderInfo: #1A77CA;
+ --colorCalloutBorderSuccess: #00874D;
+ --colorCalloutBorderUpsell: linear-gradient(180deg, #87BFEC 0%, #C5AEEE 100%);
+ --colorCalloutBorderWarning: #B98F02;
+ --colorCalloutCodeBackground: #557999;
+ --colorCalloutIconDanger: #AA3030;
+ --colorCalloutIconFeature: #7043B7;
+ --colorCalloutIconInfo: #155EA0;
+ --colorCalloutIconSuccess: #006A3D;
+ --colorCalloutIconWarning: #745801;
+ --colorCalloutTextBody: #454545;
+ --colorCalloutTextDanger: #571818;
+ --colorCalloutTextFeature: #3B1D66;
+ --colorCalloutTextInfo: #093051;
+ --colorCalloutTextSuccess: #00361F;
+ --colorCalloutTextWarning: #3B2C00;
+ --colorCardBackgroundPrimaryDefault: #FFFFFF;
+ --colorCardBackgroundSecondaryDefault: rgb(from #FFFFFF r g b / 0);
+ --colorCardBackgroundSecondaryHover: rgb(from #F5F6F8 r g b / 0.64);
+ --colorCardChartBackgroundDefault: rgb(from #F4F6F8 r g b / 0.3);
+ --colorCardChartBackgroundHover: rgb(from #F4F6F8 r g b / 0.5);
+ --colorCarouselBackgroundPrimary: #16191F;
+ --colorCarouselIconDefault: rgb(from #B2B9C5 r g b / 0.32);
+ --colorCarouselIconHover: rgb(from #B2B9C5 r g b / 0.72);
+ --colorCarouselIconSelected: #449BE1;
+ --colorCarouselTextPrimary: #FFFFFF;
+ --colorCategorySelectListBackgroundActive: rgb(from #1A77CA r g b / 0.06);
+ --colorCategorySelectListBackgroundDefault: #F5F6F8;
+ --colorCategorySelectListBackgroundHover: #1A77CA;
+ --colorCategorySelectListIconActive: #1A77CA;
+ --colorCategorySelectListIconDefault: #515D70;
+ --colorCategorySelectListIconHover: #FFFFFF;
+ --colorCategorySelectListTextActive: #1A77CA;
+ --colorCategorySelectListTextHover: #FFFFFF;
+ --colorChipBackgroundDanger: #D63D3D;
+ --colorChipBackgroundPrimary: #DEE1E6;
+ --colorChipBackgroundSecondary: #B2B9C5;
+ --colorChipBackgroundSuccessful: #00874D;
+ --colorChipBorderPrimary: #B2B9C5;
+ --colorChipFilledBackgroundDanger: #FFD8D8;
+ --colorChipFilledBackgroundInfo: #CDE4F7;
+ --colorChipFilledBackgroundPrimary: #DAE2E9;
+ --colorChipFilledBackgroundSecondary: #E7DEF8;
+ --colorChipFilledBackgroundSuccess: #B8E7D3;
+ --colorChipFilledBackgroundWarning: #FFDF62;
+ --colorChipFilledIconDanger: #AA3030;
+ --colorChipFilledIconInfo: #155EA0;
+ --colorChipFilledIconPrimary: #3E607D;
+ --colorChipFilledIconSecondary: #7043B7;
+ --colorChipFilledIconSuccess: #006A3D;
+ --colorChipFilledIconWarning: #745801;
+ --colorChipFilledTextDanger: #AA3030;
+ --colorChipFilledTextInfo: #155EA0;
+ --colorChipFilledTextPrimary: #3E607D;
+ --colorChipFilledTextSecondary: #7043B7;
+ --colorChipFilledTextSuccess: #006A3D;
+ --colorChipFilledTextWarning: #745801;
+ --colorChipIconInverse: #FFFFFF;
+ --colorChipIconPrimary: #282F38;
+ --colorChipIconWarning: #C45317;
+ --colorChipOutlinedBorderDanger: #D63D3D;
+ --colorChipOutlinedBorderInfo: #1A77CA;
+ --colorChipOutlinedBorderPrimary: #557999;
+ --colorChipOutlinedBorderSecondary: #895ED3;
+ --colorChipOutlinedBorderSuccess: #00874D;
+ --colorChipOutlinedBorderWarning: #927002;
+ --colorChipOutlinedIconDanger: #D63D3D;
+ --colorChipOutlinedIconInfo: #1A77CA;
+ --colorChipOutlinedIconPrimary: #557999;
+ --colorChipOutlinedIconSecondary: #895ED3;
+ --colorChipOutlinedIconSuccess: #00874D;
+ --colorChipOutlinedIconWarning: #927002;
+ --colorChipOutlinedTextDanger: #D63D3D;
+ --colorChipOutlinedTextInfo: #1A77CA;
+ --colorChipOutlinedTextPrimary: #557999;
+ --colorChipOutlinedTextSecondary: #895ED3;
+ --colorChipOutlinedTextSuccess: #00874D;
+ --colorChipOutlinedTextWarning: #927002;
+ --colorChipTextInverse: #FFFFFF;
+ --colorChipTextPrimary: #282F38;
+ --colorCodeEditorBackground: #F5F6F8;
+ --colorCodeEditorCodeActivelineBackground: rgb(from #68778D r g b / 0.15);
+ --colorCodeEditorCodeAtomNumberKeywordVariableAttributeQuoteColor: #093051;
+ --colorCodeEditorCodeBracketCommentColor: #8A96A7;
+ --colorCodeEditorCodeCursorBorderLeft: #1F303F;
+ --colorCodeEditorCodeCursorBorderRight: #A9BBCB;
+ --colorCodeEditorCodeDefTagBuiltinQualifierHeaderEmColor: #AA3030;
+ --colorCodeEditorCodeErrorInvalidcharColor: #802424;
+ --colorCodeEditorCodeFatCursorBackground: #A9BBCB;
+ --colorCodeEditorCodeHint: #282F38;
+ --colorCodeEditorCodeHintActiveBackground: #DEE1E6;
+ --colorCodeEditorCodeHintsBackground: #DEE1E6;
+ --colorCodeEditorCodeIndentationMarkerActiveColor: #B2B9C5;
+ --colorCodeEditorCodeIndentationMarkerColor: #DEE1E6;
+ --colorCodeEditorCodeLinenumberColor: #8A96A7;
+ --colorCodeEditorCodeMatchingbracketColor: #16191F;
+ --colorCodeEditorCodePositiveColor: #00361F;
+ --colorCodeEditorCodePropertyColor: #59170D;
+ --colorCodeEditorCodePunctuationUnitNegativeColor: #AA3030;
+ --colorCodeEditorCodeSelectedBackground: #DEE1E6;
+ --colorCodeEditorCodeStringOperatorColor: #00502E;
+ --colorCodeEditorCodeSyntaxAtom: #A13C14;
+ --colorCodeEditorCodeSyntaxAttributeName: #155EA0;
+ --colorCodeEditorCodeSyntaxBool: #A13C14;
+ --colorCodeEditorCodeSyntaxBracket: #515D70;
+ --colorCodeEditorCodeSyntaxClassName: #7043B7;
+ --colorCodeEditorCodeSyntaxComment: #515D70;
+ --colorCodeEditorCodeSyntaxDeleted: #AA3030;
+ --colorCodeEditorCodeSyntaxDeletedBackground: #FFF3F3;
+ --colorCodeEditorCodeSyntaxEmphasis: #2E2E2E;
+ --colorCodeEditorCodeSyntaxEscape: #093051;
+ --colorCodeEditorCodeSyntaxHeading: #2E2E2E;
+ --colorCodeEditorCodeSyntaxInvalid: #AA3030;
+ --colorCodeEditorCodeSyntaxKeyword: #AA3030;
+ --colorCodeEditorCodeSyntaxLink: #093051;
+ --colorCodeEditorCodeSyntaxMeta: #093051;
+ --colorCodeEditorCodeSyntaxName: #006A3D;
+ --colorCodeEditorCodeSyntaxNumber: #155EA0;
+ --colorCodeEditorCodeSyntaxOperator: #155EA0;
+ --colorCodeEditorCodeSyntaxPropertyName: #7043B7;
+ --colorCodeEditorCodeSyntaxQuote: #006A3D;
+ --colorCodeEditorCodeSyntaxRegexp: #093051;
+ --colorCodeEditorCodeSyntaxSpecialVariableName: #A13C14;
+ --colorCodeEditorCodeSyntaxString: #093051;
+ --colorCodeEditorCodeSyntaxStrong: #2E2E2E;
+ --colorCodeEditorCodeSyntaxTagName: #006A3D;
+ --colorCodeEditorCodeSyntaxTypeName: #AA3030;
+ --colorCodeEditorCodeSyntaxTypeOperator: #AA3030;
+ --colorCodeEditorCodeSyntaxUrl: #093051;
+ --colorCodeEditorCodeSyntaxVariableName: #155EA0;
+ --colorCodeEditorCodeVariable2Variable3String2UrlColor: #155EA0;
+ --colorCodeEditorCodeVariableColor: #7043B7;
+ --colorCodeEditorForeground: #282F38;
+ --colorCodeEditorSelection: #DEE1E6;
+ --colorCodeEditorSelectionMatch: #DEE1E6;
+ --colorCodeEditorTextDefault: #282F38;
+ --colorCodeEditorTextGutter: #8A96A7;
+ --colorCodeEditorTextHighlight: #59170D;
+ --colorCodeEditorTextHintHighlight: #00874D;
+ --colorCodeEditorToolbarBackground: #DEE1E6;
+ --colorCodeEditorToolbarButtonHover: #B2B9C5;
+ --colorCodeReviewBackgroundDangerDefault: #FFD8D8;
+ --colorCodeReviewBackgroundDangerMuted: #FF9F9F;
+ --colorCodeReviewBackgroundPrimaryDefault: #F5F6F8;
+ --colorCodeReviewBackgroundPrimaryMuted: #FFFFFF;
+ --colorCodeReviewBackgroundSuccessDefault: #B8E7D3;
+ --colorCodeReviewBackgroundSuccessMuted: #5ECD9E;
+ --colorCodeReviewTextDanger: #802424;
+ --colorCodeReviewTextPrimary: #282F38;
+ --colorCodeReviewTextSuccess: #00502E;
+ --colorDeprecatedBackgroundWarning: #FFF5ED;
+ --colorDeprecatedBorderWarning: #C45317;
+ --colorDeprecatedIconWarning: #EA7325;
+ --colorDeprecatedTextWarning: #C45317;
+ --colorDialogBackgroundPrimary: #FFFFFF;
+ --colorDialogBackgroundSecondaryDefault: #F5F6F8;
+ --colorDialogBackgroundSecondaryUpsell: linear-gradient(95deg, rgb(from #1A77CA r g b / 0.6) 0%, rgb(from #895ED3 r g b / 0.6) 100%);
+ --colorDialogHelpPanelText: #FFFFFF;
+ --colorFormLegendBackgroundHover: #CDE4F7;
+ --colorFormLegendBackgroundRest: #F2F8FD;
+ --colorHealthStatusBackgroundExecuting: #1A77CA;
+ --colorHealthStatusBackgroundFailure: #D63D3D;
+ --colorHealthStatusBackgroundNeutral: #DEE1E6;
+ --colorHealthStatusBackgroundSuccess: #00874D;
+ --colorHealthStatusBackgroundWarning: #927002;
+ --colorHealthStatusIconDefault: #FFFFFF;
+ --colorHealthStatusIconInverse: #3D4653;
+ --colorIconDanger: #D63D3D;
+ --colorIconDisabled: #B2B9C5;
+ --colorIconFeature: #A683E5;
+ --colorIconInfo: #1A77CA;
+ --colorIconInversePrimary: #FFFFFF;
+ --colorIconInverseSecondary: #DEE1E6;
+ --colorIconLinkDefault: #1A77CA;
+ --colorIconLinkHover: #155EA0;
+ --colorIconPrimary: #282F38;
+ --colorIconSecondary: #515D70;
+ --colorIconSelected: #155EA0;
+ --colorIconSuccess: #00874D;
+ --colorIconTertiary: #8A96A7;
+ --colorIconWarning: #B98F02;
+ --colorLifecycleBackgroundPrimary: #8A96A7;
+ --colorLifecycleBorderDefault: #515D70;
+ --colorLifecycleIconPrimary: #FFFFFF;
+ --colorLifecycleTextPrimary: #282F38;
+ --colorMenuListBackgroundActive: #DEE1E6;
+ --colorMenuListBackgroundDefault: #FFFFFF;
+ --colorMenuListBackgroundHover: #F5F6F8;
+ --colorMenuListBorderPrimary: #DEE1E6;
+ --colorMenuListIconPrimary: #515D70;
+ --colorMenuListTextHighlight: #1A77CA;
+ --colorMenuListTextPrimary: #282F38;
+ --colorMenuListTextSecondary: #515D70;
+ --colorNavButtonBackgroundActive: #1A77CA;
+ --colorNavButtonBackgroundDefault: rgb(from #1A77CA r g b / 0);
+ --colorNavButtonBackgroundHover: #1A77CA;
+ --colorNavButtonBackgroundPressed: #155EA0;
+ --colorNavButtonIconActive: #FFFFFF;
+ --colorNavButtonIconDefault: #282F38;
+ --colorNavButtonIconHover: #FFFFFF;
+ --colorNavButtonIconPressed: #FFFFFF;
+ --colorNavListBackgroundActive: #F5F6F8;
+ --colorNavListBackgroundDefault: rgb(from #1A77CA r g b / 0);
+ --colorNavListBackgroundHover: #1A77CA;
+ --colorNavListIconActive: #1A77CA;
+ --colorNavListIconDefault: #282F38;
+ --colorNavListTextActive: #1A77CA;
+ --colorNavListTextDefault: #282F38;
+ --colorNavListTextHover: #FFFFFF;
+ --colorNavTabBackgroundActive: rgb(from #FFFFFF r g b / 0);
+ --colorNavTabBackgroundHover: #FFFFFF;
+ --colorNavTabBorderPrimary: #449BE1;
+ --colorNavTabIconActive: #1A77CA;
+ --colorNavTabIconDefault: #093051;
+ --colorNavTabIconHover: #1A77CA;
+ --colorNavTabTextActive: #1A77CA;
+ --colorNavTabTextDefault: #093051;
+ --colorNavTabTextHover: #1A77CA;
+ --colorOverlayPrimary: rgb(from #111A23 r g b / 0.56);
+ --colorOverlaySecondary: rgb(from #000000 r g b / 0.31);
+ --colorPaginationBackgroundActive: #1A77CA;
+ --colorPaginationBackgroundDefault: #FFFFFF;
+ --colorPaginationBackgroundDisabled: #FFFFFF;
+ --colorPaginationBackgroundHover: #8A96A7;
+ --colorPaginationIconActive: #FFFFFF;
+ --colorPaginationIconDefault: #282F38;
+ --colorPaginationIconDisabled: #959595;
+ --colorPaginationIconHover: #FFFFFF;
+ --colorPaginationTextActive: #FFFFFF;
+ --colorPaginationTextDefault: #282F38;
+ --colorPaginationTextDisabled: #959595;
+ --colorPaginationTextHover: #FFFFFF;
+ --colorParallelChipBackground: #1A77CA;
+ --colorParallelChipIcon: #FFFFFF;
+ --colorPopoverBackgroundPrimary: #FFFFFF;
+ --colorPopoverBackgroundSecondary: #F5F6F8;
+ --colorPopoverInfoCircleBackgroundDefault: #CDE4F7;
+ --colorPopoverInfoCircleBackgroundHover: #1A77CA;
+ --colorPopoverInfoCircleTextDefault: #155EA0;
+ --colorPopoverInfoCircleTextHover: #FFFFFF;
+ --colorPortalCardBackground: #FFFFFF;
+ --colorPortalCardContentDisabled: #757575;
+ --colorPortalCardContentText: #5C5C5C;
+ --colorPortalChipBackground: #E1E1E1;
+ --colorPortalLinkTextHover: #155EA0;
+ --colorPortalLogoBackground: transparent;
+ --colorPortalPopoverBackground: #FFFFFF;
+ --colorProcessContainerBackgroundSelected: #F2F8FD;
+ --colorProcessContainerBorderSelected: #449BE1;
+ --colorProcessStepBackgroundErrorPrimary: #FFF3F3;
+ --colorProcessStepBackgroundErrorSecondary: #FF9F9F;
+ --colorProcessStepBackgroundErrorSelected: #FFD8D8;
+ --colorProcessStepBackgroundHoverError: #FFD8D8;
+ --colorProcessStepBackgroundHoverPrimary: #F2F8FD;
+ --colorProcessStepBackgroundHoverSecondary: #CDE4F7;
+ --colorProcessStepBackgroundHoverTertiary: #F7F7F7;
+ --colorProcessStepBackgroundHoverWarning: #FFDABF;
+ --colorProcessStepBackgroundPrimaryDefault: #FFFFFF;
+ --colorProcessStepBackgroundPrimarySelected: #F2F8FD;
+ --colorProcessStepBackgroundSecondaryDefault: #F2F8FD;
+ --colorProcessStepBackgroundWarningDefault: #FFF5ED;
+ --colorProcessStepBackgroundWarningSecondary: #FFA461;
+ --colorProcessStepBackgroundWarningSelected: #FFDABF;
+ --colorProcessStepBorderDefault: #E1E1E1;
+ --colorProcessStepBorderDisabled: #E1E1E1;
+ --colorProcessStepBorderErrorDefault: #FF9F9F;
+ --colorProcessStepBorderErrorHover: #FF5D5D;
+ --colorProcessStepBorderErrorSelected: #D63D3D;
+ --colorProcessStepBorderHover: #87BFEC;
+ --colorProcessStepBorderSelected: #449BE1;
+ --colorProcessStepBorderWarningDefault: #FFA461;
+ --colorProcessStepBorderWarningHover: #EA7325;
+ --colorProcessStepBorderWarningSelected: #C45317;
+ --colorProcessStepIconDefault: #1A77CA;
+ --colorProcessStepIconErrorPrimary: #D63D3D;
+ --colorProcessStepIconErrorSecondary: #AA3030;
+ --colorProcessStepIconWarningPrimary: #EA7325;
+ --colorProcessStepIconWarningSecondary: #C45317;
+ --colorProcessStepTextDisabled: #757575;
+ --colorProcessWrapperBackgroundPrimary: #F2F8FD;
+ --colorProcessWrapperBackgroundSecondary: #CDE4F7;
+ --colorProgressBackgroundLinear: #CDE4F7;
+ --colorProgressBackgroundPrimary: #1A77CA;
+ --colorProgressBackgroundSecondary: #CDE4F7;
+ --colorProgressForegroundCircular: #1A77CA;
+ --colorProgressForegroundLinear: #1A77CA;
+ --colorProgressTextInfo: #1A77CA;
+ --colorScrollbarBackground: rgb(from #FFFFFF r g b / 0);
+ --colorScrollbarHandle: #959595;
+ --colorSpaceSwitcherBackgroundDefault: rgb(from #E1E1E1 r g b / 0.32);
+ --colorSpaceSwitcherBackgroundHover: #1A77CA;
+ --colorSpaceSwitcherBackgroundPressed: #1A77CA;
+ --colorSpaceSwitcherBorderPrimary: rgb(from #000000 r g b / 0.16);
+ --colorSpaceSwitcherIconDefault: #515D70;
+ --colorSpaceSwitcherTextDefault: #515D70;
+ --colorSpaceSwitcherTextHover: #FFFFFF;
+ --colorSpaceSwitcherTextPressed: #FFFFFF;
+ --colorStatusBadgeBackgroundHealthy: #00874D;
+ --colorStatusBadgeBackgroundNeutral: #DEE1E6;
+ --colorStatusBadgeBackgroundUnhealthy: #D63D3D;
+ --colorStatusBadgeBackgroundWarning: #927002;
+ --colorStatusBadgeIconDefault: #FFFFFF;
+ --colorStatusBadgeIconInverse: #3D4653;
+ --colorStatusBadgeTextInverse: #3D4653;
+ --colorStatusBadgeTextPrimary: #FFFFFF;
+ --colorSwitchBackgroundOffDefault: #B2B9C5;
+ --colorSwitchBackgroundOffDisabled: #DEE1E6;
+ --colorSwitchBackgroundOnDefault: #87BFEC;
+ --colorSwitchBackgroundOnDisabled: #CDE4F7;
+ --colorSwitchForegroundOffDefault: #F5F6F8;
+ --colorSwitchForegroundOffDisabled: #B2B9C5;
+ --colorSwitchForegroundOnDefault: #1A77CA;
+ --colorSwitchForegroundOnDisabled: #87BFEC;
+ --colorSwitchIconActive: #1A77CA;
+ --colorSwitchOverlayOff: rgb(from #B2B9C5 r g b / 0.16);
+ --colorSwitchOverlayOn: rgb(from #87BFEC r g b / 0.16);
+ --colorTableHeaderBackground: rgb(from #F4F6F8 r g b / 0.3);
+ --colorTagBackgroundDefault: #CDE4F7;
+ --colorTagBackgroundHover: #87BFEC;
+ --colorTextDanger: #D63D3D;
+ --colorTextDisabled: #B2B9C5;
+ --colorTextFeature: #895ED3;
+ --colorTextFieldBorderActive: #1A77CA;
+ --colorTextFieldBorderDanger: #D63D3D;
+ --colorTextFieldBorderDefault: #B2B9C5;
+ --colorTextFieldBorderDisabled: #B2B9C5;
+ --colorTextFieldBorderHover: #68778D;
+ --colorTextFieldIconDisabled: #B2B9C5;
+ --colorTextFieldIconPrimary: #3D4653;
+ --colorTextFieldTextDanger: #D63D3D;
+ --colorTextFieldTextDisabled: #B2B9C5;
+ --colorTextFieldTextPrimary: #282F38;
+ --colorTextFieldTextSecondary: #68778D;
+ --colorTextFieldTextSelected: #1A77CA;
+ --colorTextInfo: #1A77CA;
+ --colorTextInversePrimary: #FFFFFF;
+ --colorTextInverseSecondary: #DEE1E6;
+ --colorTextLinkDefault: #1A77CA;
+ --colorTextLinkHover: #155EA0;
+ --colorTextPrimary: #282F38;
+ --colorTextSecondary: #515D70;
+ --colorTextSelected: #1A77CA;
+ --colorTextSuccess: #00874D;
+ --colorTextTertiary: #68778D;
+ --colorTextWarning: #B98F02;
+ --shadowDrawer: -4px 0 16px 0 rgba(0,0,0,0.08), -12px 4px 24px -4px rgba(0,0,0,0.1);
+ --shadowExtraSmall: 0 1px 8px 0 rgba(0,0,0,0.02), 0 1px 2px 0 rgba(0,0,0,0.06);
+ --shadowFocused: 0 0 0 1px rgb(26,119,202), 0 0 0 5px rgba(26,119,202,0.32);
+ --shadowFocusedInset: inset 0 0 0 4px rgba(26,119,202,0.32);
+ --shadowLarge: 0 14px 32px -4px rgba(0,0,0,0.12), 0 2px 6px 0 rgba(0,0,0,0.10);
+ --shadowLayoutPrimary: -2px -2px 6px 0 rgba(0,0,0,0.06);
+ --shadowMedium: 0 6px 12px 0 rgba(0,0,0,0.1), 0 1px 4px 0 rgba(0,0,0,0.04);
+ --shadowSmall: 0 1px 1px 0 rgba(0,0,0,0.12), 0 1px 8px 0 rgba(0,0,0,0.06);
+}
+
+html[data-theme='dark'] {
+ --colorAvatarBackgroundImageDefault: #A9BBCB;
+ --colorAvatarBackgroundImageHover: #7C98B4;
+ --colorAvatarBackgroundProjectDefault: #3E607D;
+ --colorAvatarBackgroundProjectHover: #2E475D;
+ --colorAvatarBackgroundSpaceDefault: #155EA0;
+ --colorAvatarBackgroundSpaceHover: #0F4778;
+ --colorAvatarBackgroundTemplateDefault: #DAE2E9;
+ --colorAvatarBackgroundTemplateHover: #A9BBCB;
+ --colorAvatarBackgroundUserDefault: #155EA0;
+ --colorAvatarBackgroundUserHover: #0F4778;
+ --colorAvatarStackBackgroundHover: #093051;
+ --colorAvatarStackBorder: #111A23;
+ --colorBackgroundBold: #000000;
+ --colorBackgroundDanger: #802424;
+ --colorBackgroundDisabled: #2E475D;
+ --colorBackgroundFeature: #572B97;
+ --colorBackgroundInfo: #0F4778;
+ --colorBackgroundInverseNeutral: #8A96A7;
+ --colorBackgroundInversePrimary: #FFFFFF;
+ --colorBackgroundInverseSecondary: #A9BBCB;
+ --colorBackgroundInverseSuccess: #00AB62;
+ --colorBackgroundPrimaryDefault: #111A23;
+ --colorBackgroundPrimaryHover: #1F303F;
+ --colorBackgroundPrimaryPressed: #2E475D;
+ --colorBackgroundPrimaryTransparent: rgb(from #111A23 r g b / 0.52);
+ --colorBackgroundQuartaryDefault: #1F303F;
+ --colorBackgroundQuartaryHover: #2E475D;
+ --colorBackgroundQuartaryPressed: #111A23;
+ --colorBackgroundSecondaryDefault: #1F303F;
+ --colorBackgroundSecondaryHover: #2E475D;
+ --colorBackgroundSecondaryPressed: #111A23;
+ --colorBackgroundSecondaryTransparent: rgb(from #1F303F r g b / 0.52);
+ --colorBackgroundSelected: #449BE1;
+ --colorBackgroundSuccess: #00502E;
+ --colorBackgroundTertiary: #2E475D;
+ --colorBackgroundWarning: #745801;
+ --colorBadgeBackgroundFeature: #C5AEEE;
+ --colorBadgeBackgroundInverseNeutral: #3D4653;
+ --colorBadgeBackgroundNeutral: #8A96A7;
+ --colorBadgeBackgroundUpsell: #C5AEEE;
+ --colorBadgeBorderDanger: #AA3030;
+ --colorBadgeBorderSuccess: #006A3D;
+ --colorBadgeIconFeature: #3B1D66;
+ --colorBadgeIconUpsell: #3B1D66;
+ --colorBadgeTextDanger: #FFD8D8;
+ --colorBadgeTextFeature: #3B1D66;
+ --colorBadgeTextSuccess: #B8E7D3;
+ --colorBadgeTextUpsell: #3B1D66;
+ --colorBorderBold: #7C98B4;
+ --colorBorderDanger: #FF5D5D;
+ --colorBorderDefault: #557999;
+ --colorBorderDisabled: #3E607D;
+ --colorBorderFeature: #A683E5;
+ --colorBorderInfo: #449BE1;
+ --colorBorderInversePrimary: #DAE2E9;
+ --colorBorderInverseSecondary: #F4F6F8;
+ --colorBorderLinkDefault: #87BFEC;
+ --colorBorderLinkHover: #449BE1;
+ --colorBorderPrimary: #2E475D;
+ --colorBorderSecondary: #1F303F;
+ --colorBorderSelected: #449BE1;
+ --colorBorderSuccess: #00AB62;
+ --colorBorderTertiary: #3E607D;
+ --colorBorderWarning: #E5B203;
+ --colorButtonBackgroundDisabled: rgb(from #1F303F r g b / 0.56);
+ --colorButtonBackgroundNeutralDefault: #111A23;
+ --colorButtonBackgroundNeutralHover: #2E475D;
+ --colorButtonBackgroundNeutralPressed: #3E607D;
+ --colorButtonBackgroundQuietDefault: rgb(from #1A77CA r g b / 0.01);
+ --colorButtonBackgroundQuietHover: rgb(from #1A77CA r g b / 0.16);
+ --colorButtonBackgroundQuietPressed: rgb(from #1A77CA r g b / 0.32);
+ --colorButtonBackgroundSecondaryDefault: rgb(from #1A77CA r g b / 0.01);
+ --colorButtonBackgroundSecondaryHover: rgb(from #1A77CA r g b / 0.16);
+ --colorButtonBackgroundSecondaryPressed: rgb(from #1A77CA r g b / 0.32);
+ --colorButtonBackgroundTertiaryDefault: rgb(from #1A77CA r g b / 0.24);
+ --colorButtonBackgroundTertiaryHover: rgb(from #1A77CA r g b / 0.32);
+ --colorButtonBackgroundTertiaryPressed: rgb(from #1A77CA r g b / 0.4);
+ --colorButtonBorderDisabled: #2E475D;
+ --colorButtonBorderSecondary: #1A77CA;
+ --colorButtonIconDisabled: #3E607D;
+ --colorButtonIconNeutral: #F4F6F8;
+ --colorButtonIconQuiet: #449BE1;
+ --colorButtonIconSecondary: #449BE1;
+ --colorButtonIconTertiary: #449BE1;
+ --colorButtonTextDisabled: #3E607D;
+ --colorButtonTextNeutral: #F4F6F8;
+ --colorButtonTextQuiet: #449BE1;
+ --colorButtonTextSecondary: #449BE1;
+ --colorButtonTextTertiary: #449BE1;
+ --colorCalloutBackgroundDangerDefault: rgb(from #571818 r g b / 0.8);
+ --colorCalloutBackgroundDangerHover: rgb(from #AA3030 r g b / 0.48);
+ --colorCalloutBackgroundDangerPressed: rgb(from #AA3030 r g b / 0.32);
+ --colorCalloutBackgroundFeatureDefault: rgb(from #3B1D66 r g b / 0.75);
+ --colorCalloutBackgroundFeatureHover: rgb(from #7043B7 r g b / 0.48);
+ --colorCalloutBackgroundFeaturePressed: rgb(from #7043B7 r g b / 0.32);
+ --colorCalloutBackgroundInfoDefault: rgb(from #093051 r g b / 0.8);
+ --colorCalloutBackgroundInfoHover: rgb(from #155EA0 r g b / 0.48);
+ --colorCalloutBackgroundInfoPressed: rgb(from #155EA0 r g b / 0.32);
+ --colorCalloutBackgroundSuccessDefault: rgb(from #00361F r g b / 0.75);
+ --colorCalloutBackgroundSuccessHover: rgb(from #006A3D r g b / 0.48);
+ --colorCalloutBackgroundSuccessPressed: rgb(from #006A3D r g b / 0.32);
+ --colorCalloutBackgroundUpsell: linear-gradient(95deg, rgb(from #0F4778 r g b / 0.5) 0%, rgb(from #572B97 r g b / 0.5) 100%);
+ --colorCalloutBackgroundWarningDefault: rgb(from #584201 r g b / 0.90);
+ --colorCalloutBackgroundWarningHover: rgb(from #745801 r g b / 0.56);
+ --colorCalloutBackgroundWarningPressed: rgb(from #745801 r g b / 0.4);
+ --colorCalloutBorderDanger: #FF5D5D;
+ --colorCalloutBorderDefault: #557999;
+ --colorCalloutBorderFeature: #A683E5;
+ --colorCalloutBorderInfo: #449BE1;
+ --colorCalloutBorderSuccess: #00AB62;
+ --colorCalloutBorderUpsell: linear-gradient(180deg, #1A77CA 0%, #895ED3 100%);
+ --colorCalloutCodeBackground: #A9BBCB;
+ --colorCalloutIconDanger: #FF9F9F;
+ --colorCalloutIconFeature: #C5AEEE;
+ --colorCalloutIconInfo: #87BFEC;
+ --colorCalloutIconSuccess: #5ECD9E;
+ --colorCalloutIconWarning: #FFDF62;
+ --colorCalloutTextBody: #E1E1E1;
+ --colorCalloutTextDanger: #FFD8D8;
+ --colorCalloutTextFeature: #E7DEF8;
+ --colorCalloutTextInfo: #CDE4F7;
+ --colorCalloutTextSuccess: #B8E7D3;
+ --colorCalloutTextWarning: #FFF7D9;
+ --colorCardBackgroundPrimaryDefault: #1F303F;
+ --colorCardBackgroundSecondaryDefault: rgb(from #111A23 r g b / 0);
+ --colorCardBackgroundSecondaryHover: rgb(from #282F38 r g b / 0.64);
+ --colorCardChartBackgroundDefault: rgb(from #1F303F r g b / 0.3);
+ --colorCardChartBackgroundHover: rgb(from #1F303F r g b / 0.5);
+ --colorCarouselBackgroundPrimary: #111A23;
+ --colorCarouselIconDefault: rgb(from #A9BBCB r g b / 0.32);
+ --colorCarouselIconHover: rgb(from #A9BBCB r g b / 0.72);
+ --colorCategorySelectListBackgroundActive: rgb(from #1A77CA r g b / 0.24);
+ --colorCategorySelectListBackgroundDefault: #1F303F;
+ --colorCategorySelectListIconActive: #449BE1;
+ --colorCategorySelectListIconDefault: #B2B9C5;
+ --colorCategorySelectListTextActive: #449BE1;
+ --colorChipBackgroundPrimary: #2E475D;
+ --colorChipBackgroundSecondary: #155EA0;
+ --colorChipBorderPrimary: #515D70;
+ --colorChipFilledBackgroundDanger: #802424;
+ --colorChipFilledBackgroundInfo: #0F4778;
+ --colorChipFilledBackgroundPrimary: #2E475D;
+ --colorChipFilledBackgroundSecondary: #572B97;
+ --colorChipFilledBackgroundSuccess: #00502E;
+ --colorChipFilledBackgroundWarning: #584201;
+ --colorChipFilledIconDanger: #FFD8D8;
+ --colorChipFilledIconInfo: #CDE4F7;
+ --colorChipFilledIconPrimary: #DAE2E9;
+ --colorChipFilledIconSecondary: #E7DEF8;
+ --colorChipFilledIconSuccess: #B8E7D3;
+ --colorChipFilledIconWarning: #FFDF62;
+ --colorChipFilledTextDanger: #FFD8D8;
+ --colorChipFilledTextInfo: #CDE4F7;
+ --colorChipFilledTextPrimary: #DAE2E9;
+ --colorChipFilledTextSecondary: #E7DEF8;
+ --colorChipFilledTextSuccess: #B8E7D3;
+ --colorChipFilledTextWarning: #FFDF62;
+ --colorChipIconPrimary: #FFFFFF;
+ --colorChipOutlinedBorderDanger: #FF5D5D;
+ --colorChipOutlinedBorderInfo: #449BE1;
+ --colorChipOutlinedBorderPrimary: #7C98B4;
+ --colorChipOutlinedBorderSecondary: #A683E5;
+ --colorChipOutlinedBorderSuccess: #00AB62;
+ --colorChipOutlinedBorderWarning: #B98F02;
+ --colorChipOutlinedIconDanger: #FF5D5D;
+ --colorChipOutlinedIconInfo: #449BE1;
+ --colorChipOutlinedIconPrimary: #7C98B4;
+ --colorChipOutlinedIconSecondary: #A683E5;
+ --colorChipOutlinedIconSuccess: #00AB62;
+ --colorChipOutlinedIconWarning: #B98F02;
+ --colorChipOutlinedTextDanger: #FF5D5D;
+ --colorChipOutlinedTextInfo: #449BE1;
+ --colorChipOutlinedTextPrimary: #7C98B4;
+ --colorChipOutlinedTextSecondary: #A683E5;
+ --colorChipOutlinedTextSuccess: #00AB62;
+ --colorChipOutlinedTextWarning: #B98F02;
+ --colorChipTextInverse: #1F303F;
+ --colorChipTextPrimary: #FFFFFF;
+ --colorCodeEditorBackground: #111A23;
+ --colorCodeEditorCodeActivelineBackground: rgb(from #7C98B4 r g b / 0.15);
+ --colorCodeEditorCodeAtomNumberKeywordVariableAttributeQuoteColor: #449BE1;
+ --colorCodeEditorCodeBracketCommentColor: #959595;
+ --colorCodeEditorCodeCursorBorderLeft: #A9BBCB;
+ --colorCodeEditorCodeDefTagBuiltinQualifierHeaderEmColor: #FF9F9F;
+ --colorCodeEditorCodeErrorInvalidcharColor: #FF5D5D;
+ --colorCodeEditorCodeHint: #F4F6F8;
+ --colorCodeEditorCodeHintActiveBackground: #1F303F;
+ --colorCodeEditorCodeHintsBackground: #1F303F;
+ --colorCodeEditorCodeIndentationMarkerActiveColor: #3E607D;
+ --colorCodeEditorCodeIndentationMarkerColor: #1F303F;
+ --colorCodeEditorCodeMatchingbracketColor: #8A96A7;
+ --colorCodeEditorCodePositiveColor: #00AB62;
+ --colorCodeEditorCodePropertyColor: #FFA461;
+ --colorCodeEditorCodePunctuationUnitNegativeColor: #FFD8D8;
+ --colorCodeEditorCodeSelectedBackground: #1F303F;
+ --colorCodeEditorCodeStringOperatorColor: #5ECD9E;
+ --colorCodeEditorCodeSyntaxAtom: #FFA461;
+ --colorCodeEditorCodeSyntaxAttributeName: #87BFEC;
+ --colorCodeEditorCodeSyntaxBool: #FFA461;
+ --colorCodeEditorCodeSyntaxBracket: #8A96A7;
+ --colorCodeEditorCodeSyntaxClassName: #C5AEEE;
+ --colorCodeEditorCodeSyntaxComment: #8A96A7;
+ --colorCodeEditorCodeSyntaxDeleted: #FFD8D8;
+ --colorCodeEditorCodeSyntaxEmphasis: #C5AEEE;
+ --colorCodeEditorCodeSyntaxEscape: #CDE4F7;
+ --colorCodeEditorCodeSyntaxHeading: #C5AEEE;
+ --colorCodeEditorCodeSyntaxInvalid: #FF5D5D;
+ --colorCodeEditorCodeSyntaxKeyword: #FF9F9F;
+ --colorCodeEditorCodeSyntaxLink: #CDE4F7;
+ --colorCodeEditorCodeSyntaxMeta: #CDE4F7;
+ --colorCodeEditorCodeSyntaxName: #5ECD9E;
+ --colorCodeEditorCodeSyntaxNumber: #87BFEC;
+ --colorCodeEditorCodeSyntaxOperator: #87BFEC;
+ --colorCodeEditorCodeSyntaxPropertyName: #C5AEEE;
+ --colorCodeEditorCodeSyntaxQuote: #5ECD9E;
+ --colorCodeEditorCodeSyntaxRegexp: #CDE4F7;
+ --colorCodeEditorCodeSyntaxSpecialVariableName: #FFA461;
+ --colorCodeEditorCodeSyntaxString: #CDE4F7;
+ --colorCodeEditorCodeSyntaxStrong: #C5AEEE;
+ --colorCodeEditorCodeSyntaxTagName: #5ECD9E;
+ --colorCodeEditorCodeSyntaxTypeName: #FF9F9F;
+ --colorCodeEditorCodeSyntaxTypeOperator: #FF9F9F;
+ --colorCodeEditorCodeSyntaxUrl: #CDE4F7;
+ --colorCodeEditorCodeSyntaxVariableName: #87BFEC;
+ --colorCodeEditorCodeVariable2Variable3String2UrlColor: #87BFEC;
+ --colorCodeEditorCodeVariableColor: #C5AEEE;
+ --colorCodeEditorForeground: #DAE2E9;
+ --colorCodeEditorSelection: #0F4778;
+ --colorCodeEditorSelectionMatch: #0F4778;
+ --colorCodeEditorTextDefault: #DEE1E6;
+ --colorCodeEditorTextGutter: #7C98B4;
+ --colorCodeEditorTextHighlight: #FFDABF;
+ --colorCodeEditorTextHintHighlight: #B8E7D3;
+ --colorCodeEditorToolbarBackground: #1F303F;
+ --colorCodeEditorToolbarButtonHover: #111A23;
+ --colorCodeReviewBackgroundDangerDefault: #571818;
+ --colorCodeReviewBackgroundDangerMuted: #802424;
+ --colorCodeReviewBackgroundPrimaryDefault: #111A23;
+ --colorCodeReviewBackgroundPrimaryMuted: #1F303F;
+ --colorCodeReviewBackgroundSuccessDefault: #00361F;
+ --colorCodeReviewBackgroundSuccessMuted: #00502E;
+ --colorCodeReviewTextDanger: #FF9F9F;
+ --colorCodeReviewTextPrimary: #F4F6F8;
+ --colorCodeReviewTextSuccess: #5ECD9E;
+ --colorDeprecatedBackgroundWarning: #7E2812;
+ --colorDeprecatedBorderWarning: #EA7325;
+ --colorDeprecatedTextWarning: #FFA461;
+ --colorDialogBackgroundPrimary: #1F303F;
+ --colorDialogBackgroundSecondaryDefault: #2E475D;
+ --colorFormLegendBackgroundHover: #2E475D;
+ --colorFormLegendBackgroundRest: #1F303F;
+ --colorHealthStatusBackgroundExecuting: #155EA0;
+ --colorHealthStatusBackgroundFailure: #AA3030;
+ --colorHealthStatusBackgroundNeutral: #515D70;
+ --colorHealthStatusBackgroundSuccess: #006A3D;
+ --colorHealthStatusBackgroundWarning: #745801;
+ --colorHealthStatusIconInverse: #F5F6F8;
+ --colorIconDanger: #FF5D5D;
+ --colorIconDisabled: #3E607D;
+ --colorIconInfo: #449BE1;
+ --colorIconInversePrimary: #111A23;
+ --colorIconInverseSecondary: #1F303F;
+ --colorIconLinkDefault: #87BFEC;
+ --colorIconLinkHover: #449BE1;
+ --colorIconPrimary: #F4F6F8;
+ --colorIconSecondary: #A9BBCB;
+ --colorIconSelected: #87BFEC;
+ --colorIconSuccess: #00AB62;
+ --colorIconTertiary: #7C98B4;
+ --colorIconWarning: #E5B203;
+ --colorLifecycleBackgroundPrimary: #557999;
+ --colorLifecycleBorderDefault: #A9BBCB;
+ --colorLifecycleTextPrimary: #F4F6F8;
+ --colorMenuListBackgroundActive: #3E607D;
+ --colorMenuListBackgroundDefault: #1F303F;
+ --colorMenuListBackgroundHover: #2E475D;
+ --colorMenuListBorderPrimary: #3E607D;
+ --colorMenuListIconPrimary: #7C98B4;
+ --colorMenuListTextHighlight: #449BE1;
+ --colorMenuListTextPrimary: #F4F6F8;
+ --colorMenuListTextSecondary: #DAE2E9;
+ --colorNavButtonBackgroundDefault: rgb(from #1A77CA r g b / 0.01);
+ --colorNavButtonIconDefault: #FFFFFF;
+ --colorNavListBackgroundActive: rgb(from #2E475D r g b / 0.7);
+ --colorNavListIconActive: #449BE1;
+ --colorNavListIconDefault: #557999;
+ --colorNavListTextActive: #449BE1;
+ --colorNavListTextDefault: #F4F6F8;
+ --colorNavTabBackgroundHover: #2E475D;
+ --colorNavTabIconActive: #87BFEC;
+ --colorNavTabIconDefault: #FFFFFF;
+ --colorNavTabIconHover: #FFFFFF;
+ --colorNavTabTextActive: #87BFEC;
+ --colorNavTabTextDefault: #FFFFFF;
+ --colorNavTabTextHover: #FFFFFF;
+ --colorPaginationBackgroundActive: #449BE1;
+ --colorPaginationBackgroundDefault: #111A23;
+ --colorPaginationBackgroundDisabled: #111A23;
+ --colorPaginationBackgroundHover: #557999;
+ --colorPaginationIconActive: #111A23;
+ --colorPaginationIconDefault: #F4F6F8;
+ --colorPaginationIconDisabled: #3E607D;
+ --colorPaginationTextActive: #111A23;
+ --colorPaginationTextDefault: #F4F6F8;
+ --colorPaginationTextDisabled: #3E607D;
+ --colorPopoverBackgroundPrimary: #111A23;
+ --colorPopoverBackgroundSecondary: #1F303F;
+ --colorPopoverInfoCircleBackgroundDefault: #87BFEC;
+ --colorPopoverInfoCircleTextDefault: #0F4778;
+ --colorPortalCardBackground: #2E475D;
+ --colorPortalCardContentDisabled: #A9BBCB;
+ --colorPortalCardContentText: #DAE2E9;
+ --colorPortalChipBackground: #2E475D;
+ --colorPortalLinkTextHover: #FFFFFF;
+ --colorPortalLogoBackground: #F2F8FD;
+ --colorPortalPopoverBackground: #2E475D;
+ --colorProcessContainerBackgroundSelected: #2E475D;
+ --colorProcessContainerBorderSelected: #3E607D;
+ --colorProcessStepBackgroundErrorPrimary: #571818;
+ --colorProcessStepBackgroundErrorSecondary: #AA3030;
+ --colorProcessStepBackgroundErrorSelected: #802424;
+ --colorProcessStepBackgroundHoverError: #802424;
+ --colorProcessStepBackgroundHoverPrimary: #1F303F;
+ --colorProcessStepBackgroundHoverSecondary: #2E475D;
+ --colorProcessStepBackgroundHoverTertiary: #1F303F;
+ --colorProcessStepBackgroundHoverWarning: #C45317;
+ --colorProcessStepBackgroundPrimaryDefault: #111A23;
+ --colorProcessStepBackgroundPrimarySelected: #3E607D;
+ --colorProcessStepBackgroundSecondaryDefault: #1F303F;
+ --colorProcessStepBackgroundWarningDefault: #A13C14;
+ --colorProcessStepBackgroundWarningSecondary: #EA7325;
+ --colorProcessStepBackgroundWarningSelected: #C45317;
+ --colorProcessStepBorderDefault: #2E475D;
+ --colorProcessStepBorderDisabled: #2E475D;
+ --colorProcessStepBorderErrorDefault: #802424;
+ --colorProcessStepBorderErrorHover: #AA3030;
+ --colorProcessStepBorderHover: #3E607D;
+ --colorProcessStepBorderSelected: #557999;
+ --colorProcessStepBorderWarningDefault: #C45317;
+ --colorProcessStepBorderWarningSelected: #FFA461;
+ --colorProcessStepIconDefault: #CDE4F7;
+ --colorProcessStepIconErrorPrimary: #FF5D5D;
+ --colorProcessStepIconErrorSecondary: #FF9F9F;
+ --colorProcessStepIconWarningPrimary: #FFA461;
+ --colorProcessStepIconWarningSecondary: #FFDABF;
+ --colorProcessStepTextDisabled: #7C98B4;
+ --colorProcessWrapperBackgroundPrimary: #111A23;
+ --colorProcessWrapperBackgroundSecondary: #1F303F;
+ --colorProgressBackgroundLinear: #87BFEC;
+ --colorProgressBackgroundPrimary: #87BFEC;
+ --colorProgressBackgroundSecondary: #155EA0;
+ --colorProgressForegroundLinear: #155EA0;
+ --colorProgressTextInfo: #449BE1;
+ --colorScrollbarBackground: rgb(from #111A23 r g b / 0);
+ --colorScrollbarHandle: #557999;
+ --colorSpaceSwitcherBackgroundDefault: rgb(from #2E475D r g b / 0.64);
+ --colorSpaceSwitcherIconDefault: #A9BBCB;
+ --colorSpaceSwitcherTextDefault: #A9BBCB;
+ --colorStatusBadgeBackgroundHealthy: #006A3D;
+ --colorStatusBadgeBackgroundNeutral: #515D70;
+ --colorStatusBadgeBackgroundUnhealthy: #AA3030;
+ --colorStatusBadgeBackgroundWarning: #745801;
+ --colorStatusBadgeIconInverse: #F5F6F8;
+ --colorStatusBadgeTextInverse: #F5F6F8;
+ --colorStatusBadgeTextPrimary: #F4F6F8;
+ --colorSwitchBackgroundOffDefault: #557999;
+ --colorSwitchBackgroundOffDisabled: #2E475D;
+ --colorSwitchBackgroundOnDefault: #CDE4F7;
+ --colorSwitchBackgroundOnDisabled: #155EA0;
+ --colorSwitchForegroundOffDefault: #A9BBCB;
+ --colorSwitchForegroundOffDisabled: #3E607D;
+ --colorSwitchForegroundOnDefault: #449BE1;
+ --colorSwitchForegroundOnDisabled: #0F4778;
+ --colorSwitchIconActive: #449BE1;
+ --colorSwitchOverlayOff: rgb(from #557999 r g b / 0.16);
+ --colorSwitchOverlayOn: rgb(from #CDE4F7 r g b / 0.16);
+ --colorTableHeaderBackground: rgb(from #1F303F r g b / 0.3);
+ --colorTagBackgroundDefault: #2E475D;
+ --colorTagBackgroundHover: #1F303F;
+ --colorTextDanger: #FF9F9F;
+ --colorTextDisabled: #3E607D;
+ --colorTextFeature: #C5AEEE;
+ --colorTextFieldBorderActive: #449BE1;
+ --colorTextFieldBorderDanger: #FF5D5D;
+ --colorTextFieldBorderDefault: #2E475D;
+ --colorTextFieldBorderDisabled: #2E475D;
+ --colorTextFieldBorderHover: #557999;
+ --colorTextFieldIconDisabled: #3E607D;
+ --colorTextFieldIconPrimary: #DAE2E9;
+ --colorTextFieldTextDanger: #FF5D5D;
+ --colorTextFieldTextDisabled: #3E607D;
+ --colorTextFieldTextPrimary: #F4F6F8;
+ --colorTextFieldTextSecondary: #A9BBCB;
+ --colorTextFieldTextSelected: #449BE1;
+ --colorTextInfo: #87BFEC;
+ --colorTextInversePrimary: #111A23;
+ --colorTextInverseSecondary: #1F303F;
+ --colorTextLinkDefault: #87BFEC;
+ --colorTextLinkHover: #449BE1;
+ --colorTextPrimary: #F4F6F8;
+ --colorTextSecondary: #A9BBCB;
+ --colorTextSelected: #449BE1;
+ --colorTextSuccess: #5ECD9E;
+ --colorTextTertiary: #7C98B4;
+ --colorTextWarning: #FFDF62;
+ --shadowDrawer: -4px 0 16px 0 rgba(0,0,0,0.16), -12px 4px 24px -4px rgba(0,0,0,0.32);
+ --shadowExtraSmall: 0 1px 8px 0 rgba(0,0,0,0.12), 0 1px 2px 0 rgba(0,0,0,0.06);
+ --shadowFocused: 0 0 0 1px rgb(68,155,225), 0 0 0 5px rgba(68,155,225,0.4);
+ --shadowFocusedInset: inset 0 0 0 4px rgba(68,155,225,0.4);
+ --shadowLarge: 0 2px 6px 0 rgba(0,0,0,0.26), 0 24px 32px -4px rgba(0,0,0,0.42);
+ --shadowLayoutPrimary: -2px -2px 16px 0 rgba(0,0,0,0.06);
+ --shadowMedium: 0 0 4px 0 rgba(0,0,0,0.24), 0 6px 12px 0 rgba(0,0,0,0.30);
+ --shadowSmall: 0 1px 1px 0 rgba(0,0,0,0.16), 0 1px 8px 0 rgba(0,0,0,0.16);
+}
diff --git a/src/themes/octopus/components/HtmlHead.astro b/src/themes/octopus/components/HtmlHead.astro
index a43ae28e60..15378aa46d 100644
--- a/src/themes/octopus/components/HtmlHead.astro
+++ b/src/themes/octopus/components/HtmlHead.astro
@@ -64,6 +64,7 @@ stats.stop();
+
{
diff --git a/src/themes/octopus/utilities/design-tokens.mjs b/src/themes/octopus/utilities/design-tokens.mjs
new file mode 100644
index 0000000000..2b5fde1a39
--- /dev/null
+++ b/src/themes/octopus/utilities/design-tokens.mjs
@@ -0,0 +1,157 @@
+/**
+ * Generates public/docs/css/design-tokens.css from
+ * @octopusdeploy/design-system-tokens.
+ *
+ * The tokens package ships no CSS of its own. Its ergonomic exports
+ * (themeTokens, text, fontFamily) resolve to `var(--name)` strings, while
+ * lightTheme / darkTheme / textTheme are the matching name -> value maps that a
+ * consumer is expected to paint into a :root block. In the Octopus app that job
+ * belongs to the Theme component in @octopusdeploy/design-system-components.
+ * This docs site has no React runtime, so we emit the same custom properties as
+ * a static stylesheet instead.
+ *
+ * Run via `npm run tokens`. Do not edit the generated CSS by hand.
+ *
+ * @format
+ */
+
+import fs from 'fs/promises';
+import path from 'path';
+import { createRequire } from 'module';
+
+// The tokens package is CommonJS and re-exports lightTheme / darkTheme through
+// tslib's __exportStar, which Node's ESM-CJS interop cannot statically detect -
+// named ESM imports of those come back undefined. createRequire sidesteps it.
+const require = createRequire(import.meta.url);
+const tokens = require('@octopusdeploy/design-system-tokens');
+
+// "exports" is a bare string, so no subpath - including ./package.json - is
+// exported. Resolve the entry point and walk back up to the package root to
+// read the version we generated from.
+const entryPoint = require.resolve('@octopusdeploy/design-system-tokens');
+const packageRoot = path.resolve(entryPoint, '..', '..', '..');
+const { version } = JSON.parse(
+ await fs.readFile(path.join(packageRoot, 'package.json'), 'utf8')
+);
+
+const workingDirectory = process.cwd();
+const outputFile = path.join(
+ workingDirectory,
+ 'public',
+ 'docs',
+ 'css',
+ 'design-tokens.css'
+);
+
+// The dark theme is applied with the same selector vars.css already uses, so
+// both stylesheets switch off the existing theme toggle.
+const darkSelector = "html[data-theme='dark']";
+
+// Theme-invariant scales. The package exposes these as plain literals rather
+// than var() references, so it defines no custom property names for them -
+// these ones are ours, kept in the package's camelCase style for consistency.
+const scales = {
+ space: tokens.space,
+ borderRadius: tokens.borderRadius,
+ borderWidth: tokens.borderWidth,
+ fontSize: tokens.fontSize,
+ fontWeight: tokens.fontWeight,
+ lineHeight: tokens.lineHeight,
+ letterSpacing: tokens.letterSpacing,
+};
+
+function declaration(name, value) {
+ return ` --${name}: ${value};`;
+}
+
+function block(selector, lines) {
+ return `${selector} {\n${lines.join('\n')}\n}`;
+}
+
+// Several scales are keyed by number (space, borderWidth, fontWeight), where a
+// plain lexicographic sort would read 1, 12, 16, 2, 24.
+function sortKeys(keys) {
+ return [...keys].sort((a, b) =>
+ /^\d+$/.test(a) && /^\d+$/.test(b)
+ ? Number(a) - Number(b)
+ : a.localeCompare(b)
+ );
+}
+
+function scaleDeclarations() {
+ const lines = [];
+
+ for (const [group, values] of Object.entries(scales)) {
+ for (const key of sortKeys(Object.keys(values))) {
+ lines.push(declaration(`${group}-${key}`, values[key]));
+ }
+ }
+
+ return lines;
+}
+
+function themeDeclarations(theme) {
+ return Object.keys(theme)
+ .sort()
+ .map((key) => declaration(key, theme[key]));
+}
+
+// Only the keys that actually differ need repeating in the dark block.
+function darkOverrides(light, dark) {
+ return Object.keys(dark)
+ .sort()
+ .filter((key) => light[key] !== dark[key])
+ .map((key) => declaration(key, dark[key]));
+}
+
+const { lightTheme, darkTheme, textTheme } = tokens;
+
+const rootLines = [
+ ' /* Typography composites and font families (textTheme) */',
+ ...themeDeclarations(textTheme),
+ '',
+ ' /* Theme-invariant scales */',
+ ...scaleDeclarations(),
+ '',
+ ' /* Colors and shadows (lightTheme) */',
+ ...themeDeclarations(lightTheme),
+];
+
+const darkLines = darkOverrides(lightTheme, darkTheme);
+
+const header = [
+ '/*',
+ ' * GENERATED FILE - DO NOT EDIT.',
+ ' *',
+ ' * Source: @octopusdeploy/design-system-tokens@' + version,
+ ' * Regenerate with: npm run tokens',
+ ' *',
+ ' * Site-specific variables live in vars.css, which is loaded after this',
+ ' * file and therefore wins on any name it also defines.',
+ ' */',
+].join('\n');
+
+const css =
+ [header, block(':root', rootLines), block(darkSelector, darkLines)].join(
+ '\n\n'
+ ) + '\n';
+
+await fs.mkdir(path.dirname(outputFile), { recursive: true });
+await fs.writeFile(outputFile, css, 'utf8');
+
+const counts = {
+ 'text/font': Object.keys(textTheme).length,
+ scales: scaleDeclarations().length,
+ 'light colors/shadows': Object.keys(lightTheme).length,
+ 'dark overrides': darkLines.length,
+};
+
+console.log(
+ `Generated ${path.relative(workingDirectory, outputFile)} from @octopusdeploy/design-system-tokens@${version}`
+);
+console.log(
+ ' ' +
+ Object.entries(counts)
+ .map(([label, count]) => `${label}: ${count}`)
+ .join(', ')
+);