diff --git a/.forgejo/workflows/build_preview.yml b/.forgejo/workflows/build_preview.yml
index c0bdca4..5adfa81 100644
--- a/.forgejo/workflows/build_preview.yml
+++ b/.forgejo/workflows/build_preview.yml
@@ -40,13 +40,14 @@ jobs:
     runs-on: docker
     steps:
       - name: Release New Version
-        uses: actions/forgejo-release@v1
+        uses: https://code.forgejo.org/actions/forgejo-release@v1
         with:
           direction: upload
           url: https://forgejo.neshweb.net
           release-dir: release
           token: ${{ secrets.FORGEJO_TOKEN }}
           tag: ${{  github.ref_name }}
+          prerelease: true
 
   # doesn't work atm
   # unlighthouse:
diff --git a/.forgejo/workflows/build_release.yml b/.forgejo/workflows/build_release.yml
index 268e2ad..0d46014 100644
--- a/.forgejo/workflows/build_release.yml
+++ b/.forgejo/workflows/build_release.yml
@@ -2,9 +2,6 @@ on:
   push:
     tags:
       - '[0-9]+\.[0-9]+\.[0-9]+'
-      - '[0-9]+\.[0-9]+\.[0-9]+a[0-9]+'
-      - '[0-9]+\.[0-9]+\.[0-9]+b[0-9]+'
-      - '[0-9]+\.[0-9]+\.[0-9]+rc[0-9]+'
 
 jobs:
   checking:
@@ -43,7 +40,7 @@ jobs:
     runs-on: docker
     steps:
       - name: Release New Version
-        uses: actions/forgejo-release@v1
+        uses: https://code.forgejo.org/actions/forgejo-release@v1
         with:
           direction: upload
           url: https://forgejo.neshweb.net
diff --git a/.forgejo/workflows/unlighthouse.yml b/.forgejo/workflows/unlighthouse.yml
index 67ab823..3c45612 100644
--- a/.forgejo/workflows/unlighthouse.yml
+++ b/.forgejo/workflows/unlighthouse.yml
@@ -7,7 +7,7 @@ on:
 jobs:
   unlighthouse:
     runs-on: docker
-    container: forgejo.neshweb.net/firq/unlighthouse-docker:latest
+    container: forgejo.neshweb.net/ci-docker-images/unlighthouse:latest
     steps:
       - name: Checkout repository
         uses: https://code.forgejo.org/actions/checkout@v3 
@@ -23,6 +23,7 @@ jobs:
 
   deploy-unlighthouse-files:
     needs: [ unlighthouse ]
+    if: success()
     runs-on: docker
     env: 
       DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
@@ -67,6 +68,7 @@ jobs:
 
   deploy-unlighthouse-site:
     needs: [ deploy-unlighthouse-files ]
+    if: success()
     runs-on: docker
     env: 
       DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
@@ -91,5 +93,6 @@ jobs:
           key: ${{ secrets.SSH_PRIVATE_KEY }}
           script: |
             PATH="$HOME/.local/bin:$PATH"
+            screen -ls | grep 'firq_dev-unlighthouse' | awk '{print $1}' | xargs -I % -t screen -X -S % quit
             cd firq_dev
             screen -S firq_dev-unlighthouse -dm serve unlighthouse/ -p ${{ secrets.UNLIGHTHOUSE_DEPLOY_PORT }}   
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..ff5ea15
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,12 @@
+{
+    "files.exclude": {
+        "**/.git": true,
+        "**/.svn": true,
+        "**/.hg": true,
+        "**/CVS": true,
+        "**/.DS_Store": true,
+        "**/Thumbs.db": true,
+        "**/__pycache__": true
+    },
+    "hide-files.files": []
+}
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index 7b2943f..1d81c70 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -4,7 +4,7 @@ COPY . .
 RUN npm i
 RUN npm run build
 
-FROM forgejo.neshweb.net/firq/website-serve-docker:latest AS runtime
+FROM forgejo.neshweb.net/ci-docker-images/website-serve:latest AS runtime
 
 COPY --from=build /app/dist /public
 COPY --from=build /app/serve.json /public/serve.json
diff --git a/astro.config.mjs b/astro.config.mjs
index cf40f4f..4313843 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -1,7 +1,7 @@
 import { defineConfig } from 'astro/config';
 
-// https://astro.build/config
 import sitemap from "@astrojs/sitemap";
+import mdx from "@astrojs/mdx";
 
 // https://astro.build/config
 export default defineConfig({
@@ -10,5 +10,5 @@ export default defineConfig({
   outDir: 'dist',
   publicDir: 'static',
   site: 'https://firq.dev/',
-  integrations: [sitemap()]
+  integrations: [sitemap(), mdx()]
 });
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 331a458..ae02b32 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,17 +1,21 @@
 {
 	"name": "@firq/fgosite",
-	"version": "0.1.6",
+	"version": "0.1.27",
 	"lockfileVersion": 2,
 	"requires": true,
 	"packages": {
 		"": {
 			"name": "@firq/fgosite",
-			"version": "0.1.6",
+			"version": "0.1.27",
 			"dependencies": {
+				"@astro-community/astro-embed-youtube": "^0.4.3",
 				"@astrojs/check": "^0.3.3",
+				"@astrojs/mdx": "^2.0.3",
 				"@astrojs/sitemap": "^3.0.3",
-				"astro": "^4.0.7",
-				"iconoir": "^6.1.0",
+				"astro": "^4.2.1",
+				"autoprefixer": "^10.4.16",
+				"iconoir": "^7.2.0",
+				"postcss-preset-env": "^9.3.0",
 				"typescript": "^5.3.3"
 			}
 		},
@@ -27,6 +31,17 @@
 				"node": ">=6.0.0"
 			}
 		},
+		"node_modules/@astro-community/astro-embed-youtube": {
+			"version": "0.4.3",
+			"resolved": "https://registry.npmjs.org/@astro-community/astro-embed-youtube/-/astro-embed-youtube-0.4.3.tgz",
+			"integrity": "sha512-zXtPmR9yxrTo6cuLhH8v+r62bsXbsLJgsU2FiZalPr4bXJxAUQEIlG46S/qK0AEXi9uNShKqy4+zBaJ98xTVEg==",
+			"dependencies": {
+				"lite-youtube-embed": "^0.2.0"
+			},
+			"peerDependencies": {
+				"astro": "^2.0.0 || ^3.0.0-beta || ^4.0.0-beta"
+			}
+		},
 		"node_modules/@astrojs/check": {
 			"version": "0.3.3",
 			"resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.3.3.tgz",
@@ -121,6 +136,34 @@
 				"vfile": "^6.0.1"
 			}
 		},
+		"node_modules/@astrojs/mdx": {
+			"version": "2.0.3",
+			"resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-2.0.3.tgz",
+			"integrity": "sha512-wFjQX5CihU5B4UAQNwc2R48ph0flpc6/yvDCFANE0agtgI2+BaVcAjuW0EhGOQCZ65dQDqnFKE0lvGs7EADYpg==",
+			"dependencies": {
+				"@astrojs/markdown-remark": "4.0.1",
+				"@mdx-js/mdx": "^3.0.0",
+				"acorn": "^8.11.2",
+				"es-module-lexer": "^1.4.1",
+				"estree-util-visit": "^2.0.0",
+				"github-slugger": "^2.0.0",
+				"gray-matter": "^4.0.3",
+				"hast-util-to-html": "^9.0.0",
+				"kleur": "^4.1.4",
+				"rehype-raw": "^7.0.0",
+				"remark-gfm": "^4.0.0",
+				"remark-smartypants": "^2.0.0",
+				"source-map": "^0.7.4",
+				"unist-util-visit": "^5.0.0",
+				"vfile": "^6.0.1"
+			},
+			"engines": {
+				"node": ">=18.14.1"
+			},
+			"peerDependencies": {
+				"astro": "^4.0.0"
+			}
+		},
 		"node_modules/@astrojs/prism": {
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.0.0.tgz",
@@ -506,6 +549,867 @@
 				"node": ">=6.9.0"
 			}
 		},
+		"node_modules/@csstools/cascade-layer-name-parser": {
+			"version": "1.0.6",
+			"resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.6.tgz",
+			"integrity": "sha512-HkxRNs6ZIV0VjLFw6k5G8K35vd9r+O8B1Vr+QVD8M5Y44eQxyHtc42BdF74FQatXACPnitOR1+sRx2oWdnKTQw==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2"
+			}
+		},
+		"node_modules/@csstools/color-helpers": {
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-4.0.0.tgz",
+			"integrity": "sha512-wjyXB22/h2OvxAr3jldPB7R7kjTUEzopvjitS8jWtyd8fN6xJ8vy1HnHu0ZNfEkqpBJgQ76Q+sBDshWcMvTa/w==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			}
+		},
+		"node_modules/@csstools/css-calc": {
+			"version": "1.1.5",
+			"resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-1.1.5.tgz",
+			"integrity": "sha512-UhI5oSRAUtTHY3MyGahqn0ZzQOHVoPpfvUcOmYipAZ1rILAvCBoyiLSsa/clv1Xxct0SMKIq93KO5Bfl1cb6tQ==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2"
+			}
+		},
+		"node_modules/@csstools/css-color-parser": {
+			"version": "1.5.0",
+			"resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-1.5.0.tgz",
+			"integrity": "sha512-PUhSg1MgU2sjYhA6moOmxYesqVqYTJwcVw12boTNbDX7Af+VK02MkgvmBBY2Z2qU6UN5HOQ+wrF0qQJGsTFY7w==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/color-helpers": "^4.0.0",
+				"@csstools/css-calc": "^1.1.5"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2"
+			}
+		},
+		"node_modules/@csstools/css-parser-algorithms": {
+			"version": "2.4.0",
+			"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.4.0.tgz",
+			"integrity": "sha512-/PPLr2g5PAUCKAPEbfyk6/baZA+WJHQtUhPkoCQMpyRE8I0lXrG1QFRN8e5s3ZYxM8d/g5BZc6lH3s8Op7/VEg==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"@csstools/css-tokenizer": "^2.2.2"
+			}
+		},
+		"node_modules/@csstools/css-tokenizer": {
+			"version": "2.2.2",
+			"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.2.tgz",
+			"integrity": "sha512-wCDUe/MAw7npAHFLyW3QjSyLA66S5QFaV1jIXlNQvdJ8RzXDSgALa49eWcUO6P55ARQaz0TsDdAgdRgkXFYY8g==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			}
+		},
+		"node_modules/@csstools/media-query-list-parser": {
+			"version": "2.1.6",
+			"resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.6.tgz",
+			"integrity": "sha512-R6AKl9vaU0It7D7TR2lQn0pre5aQfdeqHRePlaRCY8rHL3l9eVlNRpsEVDKFi/zAjzv68CxH2M5kqbhPFPKjvw==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2"
+			}
+		},
+		"node_modules/@csstools/postcss-cascade-layers": {
+			"version": "4.0.2",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-4.0.2.tgz",
+			"integrity": "sha512-PqM+jvg5T2tB4FHX+akrMGNWAygLupD4FNUjcv4PSvtVuWZ6ISxuo37m4jFGU7Jg3rCfloGzKd0+xfr5Ec3vZQ==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/selector-specificity": "^3.0.1",
+				"postcss-selector-parser": "^6.0.13"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-color-function": {
+			"version": "3.0.8",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-3.0.8.tgz",
+			"integrity": "sha512-jvbF7eCRbIcxWqby0kk2Mt85QtGzRRpFFYdlJCJ80Tuiv43PY+auS/nBl8pDQQ4Ndm4vsm4IC/wCZDcJUmpJmg==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-color-mix-function": {
+			"version": "2.0.8",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-2.0.8.tgz",
+			"integrity": "sha512-sGhk+TdZ2TeXspc6LSYSYC8WgzLlxoknUaObKgB0mk+dNjRQgSSIeCU+qrCwvHmwM+uTNKtiS8mntDzyQLHTTA==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-exponential-functions": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-1.0.2.tgz",
+			"integrity": "sha512-VRIYrwNCkZRqzsGB4jGT+XcNXsoiwyqy0Vf7C3I/5OPcf7WcWK3G1sBYFqqgWLGtpwc7m1m8TcorGY1xdh5abg==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/css-calc": "^1.1.5",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-font-format-keywords": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-3.0.1.tgz",
+			"integrity": "sha512-D1lcG2sfotTq6yBEOMV3myFxJLT10F3DLYZJMbiny5YToqzHWodZen8WId3UTimm0mEHitXqAUNL5jdd6RzVdA==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-gamut-mapping": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-1.0.1.tgz",
+			"integrity": "sha512-GDVzfNbnc7x3GusFklvt0mYXIWVzxEtEtTFEW664NgZh/5V7Z89hZKBMl9piOAHXuxijfHtE+kul/ShfeLUvcA==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-gradients-interpolation-method": {
+			"version": "4.0.8",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-4.0.8.tgz",
+			"integrity": "sha512-bmvCNzuUvWPPdgASh0T14ffTay/FdzXsXfp0wXT1pYoUPmkH9M6yyxwPEkHq5djjzSb2jiLl4Ta3XM1uOREQ2w==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-hwb-function": {
+			"version": "3.0.7",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-3.0.7.tgz",
+			"integrity": "sha512-iXs1gxKtev8YNP5bOF26TAsnMfcxnCRLpKItQ067RphYECKEK/xWm4Z0r4ChmV1U1eq+lbdH5ZIb2cju4o5akA==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-ic-unit": {
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-3.0.3.tgz",
+			"integrity": "sha512-MpcmIL0/uMm/cFWh5V/9nbKKJ7jRr2qTYW5Q6zoE6HZ6uzOBJr2KRERv5/x8xzEBQ1MthDT7iP1EBp9luSQy7g==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3",
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-initial": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-1.0.1.tgz",
+			"integrity": "sha512-wtb+IbUIrIf8CrN6MLQuFR7nlU5C7PwuebfeEXfjthUha1+XZj2RVi+5k/lukToA24sZkYAiSJfHM8uG/UZIdg==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-is-pseudo-class": {
+			"version": "4.0.4",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-4.0.4.tgz",
+			"integrity": "sha512-vTVO/uZixpTVAOQt3qZRUFJ/K1L03OfNkeJ8sFNDVNdVy/zW0h1L5WT7HIPMDUkvSrxQkFaCCybTZkUP7UESlQ==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/selector-specificity": "^3.0.1",
+				"postcss-selector-parser": "^6.0.13"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-logical-float-and-clear": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-2.0.1.tgz",
+			"integrity": "sha512-SsrWUNaXKr+e/Uo4R/uIsqJYt3DaggIh/jyZdhy/q8fECoJSKsSMr7nObSLdvoULB69Zb6Bs+sefEIoMG/YfOA==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-logical-overflow": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-1.0.1.tgz",
+			"integrity": "sha512-Kl4lAbMg0iyztEzDhZuQw8Sj9r2uqFDcU1IPl+AAt2nue8K/f1i7ElvKtXkjhIAmKiy5h2EY8Gt/Cqg0pYFDCw==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-logical-overscroll-behavior": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-1.0.1.tgz",
+			"integrity": "sha512-+kHamNxAnX8ojPCtV8WPcUP3XcqMFBSDuBuvT6MHgq7oX4IQxLIXKx64t7g9LiuJzE7vd06Q9qUYR6bh4YnGpQ==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-logical-resize": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-2.0.1.tgz",
+			"integrity": "sha512-W5Gtwz7oIuFcKa5SmBjQ2uxr8ZoL7M2bkoIf0T1WeNqljMkBrfw1DDA8/J83k57NQ1kcweJEjkJ04pUkmyee3A==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-logical-viewport-units": {
+			"version": "2.0.4",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-2.0.4.tgz",
+			"integrity": "sha512-jetp/ArGAniWbjWBh5UQ07ztawfSbqCFd0QelX4R4pVIxrXahUEhz5VZHebMPVCg02J8GsQn0br6fdRpY6t7lw==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/css-tokenizer": "^2.2.2"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-media-minmax": {
+			"version": "1.1.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-1.1.1.tgz",
+			"integrity": "sha512-mBY46/Hr+A8cDjoX0OoPRBOVrkANym9540dSB9rN3dllPZdM1E112i/tVxWsrR1s1yE9gfF0pk+7lf9l+qSeHA==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/css-calc": "^1.1.5",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/media-query-list-parser": "^2.1.6"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": {
+			"version": "2.0.4",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-2.0.4.tgz",
+			"integrity": "sha512-IaIZZhH0Qy9UDn7u+N3cuwwPG0Po3ZKOdDh+ClR7xvisSqniG+PuVrOEWYJrFKOt2//UHLhd7KHDqr2u9LKS9Q==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/media-query-list-parser": "^2.1.6"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-nested-calc": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-3.0.1.tgz",
+			"integrity": "sha512-bwwababZpWRm0ByHaWBxTsDGTMhZKmtUNl3Wt0Eom8AY7ORgXx5qF9SSk1vEFrCi+HOfJT6M6W5KPgzXuQNRwQ==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-normalize-display-values": {
+			"version": "3.0.2",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-3.0.2.tgz",
+			"integrity": "sha512-fCapyyT/dUdyPtrelQSIV+d5HqtTgnNP/BEG9IuhgXHt93Wc4CfC1bQ55GzKAjWrZbgakMQ7MLfCXEf3rlZJOw==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-oklab-function": {
+			"version": "3.0.8",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-3.0.8.tgz",
+			"integrity": "sha512-L4xrwbgg+k08v+a88LDxJeIM6+kqaBJlYb/QgmEMfQpUbrfXTp87DuRc7utcRdDvY+qWK5vqz3h1xUtceB5LJQ==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-progressive-custom-properties": {
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-3.0.3.tgz",
+			"integrity": "sha512-WipTVh6JTMQfeIrzDV4wEPsV9NTzMK2jwXxyH6CGBktuWdivHnkioP/smp1x/0QDPQyx7NTS14RB+GV3zZZYEw==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-relative-color-syntax": {
+			"version": "2.0.8",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-2.0.8.tgz",
+			"integrity": "sha512-wu/Oh7QKINpRXnmLMUbObVNlqwr843PSF4a3x3fMC0I+vUeoGqMfZuSPFtT+NnYYxfzUjEZ091GURPxee22VLQ==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-scope-pseudo-class": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-3.0.1.tgz",
+			"integrity": "sha512-3ZFonK2gfgqg29gUJ2w7xVw2wFJ1eNWVDONjbzGkm73gJHVCYK5fnCqlLr+N+KbEfv2XbWAO0AaOJCFB6Fer6A==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-selector-parser": "^6.0.13"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-stepped-value-functions": {
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-3.0.3.tgz",
+			"integrity": "sha512-hzo9Wr3u7JJiM65/EyHgE/gJpBzhDwBSGOobFs2YQ0ZNTywUliYQoYJud1KKlByMRuhqvDLh9V95eIkLf/fZTQ==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/css-calc": "^1.1.5",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-text-decoration-shorthand": {
+			"version": "3.0.4",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-3.0.4.tgz",
+			"integrity": "sha512-yUZmbnUemgQmja7SpOZeU45+P49wNEgQguRdyTktFkZsHf7Gof+ZIYfvF6Cm+LsU1PwSupy4yUeEKKjX5+k6cQ==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/color-helpers": "^4.0.0",
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-trigonometric-functions": {
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-3.0.3.tgz",
+			"integrity": "sha512-T/npTbDuMZ3vktEMuA05p1oeVd12Sy47qZP1vFhzNMUOdXGCK9vlm0tUSIlV5DdlbTJqKqq9FhGitZH9VTKrfQ==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/css-calc": "^1.1.5",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/postcss-unset-value": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-3.0.1.tgz",
+			"integrity": "sha512-dbDnZ2ja2U8mbPP0Hvmt2RMEGBiF1H7oY6HYSpjteXJGihYwgxgTr6KRbbJ/V6c+4wd51M+9980qG4gKVn5ttg==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/@csstools/selector-specificity": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.1.tgz",
+			"integrity": "sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss-selector-parser": "^6.0.13"
+			}
+		},
 		"node_modules/@emmetio/abbreviation": {
 			"version": "2.3.3",
 			"resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz",
@@ -915,6 +1819,40 @@
 				"@jridgewell/sourcemap-codec": "1.4.14"
 			}
 		},
+		"node_modules/@mdx-js/mdx": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.0.tgz",
+			"integrity": "sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==",
+			"dependencies": {
+				"@types/estree": "^1.0.0",
+				"@types/estree-jsx": "^1.0.0",
+				"@types/hast": "^3.0.0",
+				"@types/mdx": "^2.0.0",
+				"collapse-white-space": "^2.0.0",
+				"devlop": "^1.0.0",
+				"estree-util-build-jsx": "^3.0.0",
+				"estree-util-is-identifier-name": "^3.0.0",
+				"estree-util-to-js": "^2.0.0",
+				"estree-walker": "^3.0.0",
+				"hast-util-to-estree": "^3.0.0",
+				"hast-util-to-jsx-runtime": "^2.0.0",
+				"markdown-extensions": "^2.0.0",
+				"periscopic": "^3.0.0",
+				"remark-mdx": "^3.0.0",
+				"remark-parse": "^11.0.0",
+				"remark-rehype": "^11.0.0",
+				"source-map": "^0.7.0",
+				"unified": "^11.0.0",
+				"unist-util-position-from-estree": "^2.0.0",
+				"unist-util-stringify-position": "^4.0.0",
+				"unist-util-visit": "^5.0.0",
+				"vfile": "^6.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
 		"node_modules/@nodelib/fs.scandir": {
 			"version": "2.1.5",
 			"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -948,9 +1886,9 @@
 			}
 		},
 		"node_modules/@rollup/rollup-android-arm-eabi": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.1.tgz",
-			"integrity": "sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz",
+			"integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==",
 			"cpu": [
 				"arm"
 			],
@@ -960,9 +1898,9 @@
 			]
 		},
 		"node_modules/@rollup/rollup-android-arm64": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.1.tgz",
-			"integrity": "sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz",
+			"integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==",
 			"cpu": [
 				"arm64"
 			],
@@ -972,9 +1910,9 @@
 			]
 		},
 		"node_modules/@rollup/rollup-darwin-arm64": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz",
-			"integrity": "sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz",
+			"integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==",
 			"cpu": [
 				"arm64"
 			],
@@ -984,9 +1922,9 @@
 			]
 		},
 		"node_modules/@rollup/rollup-darwin-x64": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.1.tgz",
-			"integrity": "sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz",
+			"integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==",
 			"cpu": [
 				"x64"
 			],
@@ -996,9 +1934,21 @@
 			]
 		},
 		"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.1.tgz",
-			"integrity": "sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz",
+			"integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==",
+			"cpu": [
+				"arm"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			]
+		},
+		"node_modules/@rollup/rollup-linux-arm-musleabihf": {
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz",
+			"integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==",
 			"cpu": [
 				"arm"
 			],
@@ -1008,9 +1958,9 @@
 			]
 		},
 		"node_modules/@rollup/rollup-linux-arm64-gnu": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.1.tgz",
-			"integrity": "sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz",
+			"integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==",
 			"cpu": [
 				"arm64"
 			],
@@ -1020,9 +1970,9 @@
 			]
 		},
 		"node_modules/@rollup/rollup-linux-arm64-musl": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.1.tgz",
-			"integrity": "sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz",
+			"integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==",
 			"cpu": [
 				"arm64"
 			],
@@ -1031,10 +1981,22 @@
 				"linux"
 			]
 		},
+		"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz",
+			"integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==",
+			"cpu": [
+				"ppc64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			]
+		},
 		"node_modules/@rollup/rollup-linux-riscv64-gnu": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.1.tgz",
-			"integrity": "sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz",
+			"integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==",
 			"cpu": [
 				"riscv64"
 			],
@@ -1043,10 +2005,22 @@
 				"linux"
 			]
 		},
+		"node_modules/@rollup/rollup-linux-s390x-gnu": {
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz",
+			"integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==",
+			"cpu": [
+				"s390x"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			]
+		},
 		"node_modules/@rollup/rollup-linux-x64-gnu": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.1.tgz",
-			"integrity": "sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz",
+			"integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==",
 			"cpu": [
 				"x64"
 			],
@@ -1056,9 +2030,9 @@
 			]
 		},
 		"node_modules/@rollup/rollup-linux-x64-musl": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.1.tgz",
-			"integrity": "sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz",
+			"integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==",
 			"cpu": [
 				"x64"
 			],
@@ -1068,9 +2042,9 @@
 			]
 		},
 		"node_modules/@rollup/rollup-win32-arm64-msvc": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.1.tgz",
-			"integrity": "sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz",
+			"integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==",
 			"cpu": [
 				"arm64"
 			],
@@ -1080,9 +2054,9 @@
 			]
 		},
 		"node_modules/@rollup/rollup-win32-ia32-msvc": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.1.tgz",
-			"integrity": "sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz",
+			"integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==",
 			"cpu": [
 				"ia32"
 			],
@@ -1092,9 +2066,9 @@
 			]
 		},
 		"node_modules/@rollup/rollup-win32-x64-msvc": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz",
-			"integrity": "sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz",
+			"integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==",
 			"cpu": [
 				"x64"
 			],
@@ -1103,6 +2077,14 @@
 				"win32"
 			]
 		},
+		"node_modules/@types/acorn": {
+			"version": "4.0.6",
+			"resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz",
+			"integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==",
+			"dependencies": {
+				"@types/estree": "*"
+			}
+		},
 		"node_modules/@types/babel__core": {
 			"version": "7.20.5",
 			"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
@@ -1153,6 +2135,14 @@
 			"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
 			"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
 		},
+		"node_modules/@types/estree-jsx": {
+			"version": "1.0.3",
+			"resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.3.tgz",
+			"integrity": "sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==",
+			"dependencies": {
+				"@types/estree": "*"
+			}
+		},
 		"node_modules/@types/hast": {
 			"version": "3.0.3",
 			"resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
@@ -1169,6 +2159,11 @@
 				"@types/unist": "*"
 			}
 		},
+		"node_modules/@types/mdx": {
+			"version": "2.0.10",
+			"resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.10.tgz",
+			"integrity": "sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg=="
+		},
 		"node_modules/@types/ms": {
 			"version": "0.7.34",
 			"resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
@@ -1311,6 +2306,14 @@
 				"node": ">=0.4.0"
 			}
 		},
+		"node_modules/acorn-jsx": {
+			"version": "5.3.2",
+			"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+			"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+			"peerDependencies": {
+				"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+			}
+		},
 		"node_modules/ansi-align": {
 			"version": "3.0.1",
 			"resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
@@ -1403,6 +2406,14 @@
 				"sprintf-js": "~1.0.2"
 			}
 		},
+		"node_modules/aria-query": {
+			"version": "5.3.0",
+			"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
+			"integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
+			"dependencies": {
+				"dequal": "^2.0.3"
+			}
+		},
 		"node_modules/array-iterate": {
 			"version": "2.0.1",
 			"resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz",
@@ -1412,14 +2423,22 @@
 				"url": "https://github.com/sponsors/wooorm"
 			}
 		},
+		"node_modules/astring": {
+			"version": "1.8.6",
+			"resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz",
+			"integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==",
+			"bin": {
+				"astring": "bin/astring"
+			}
+		},
 		"node_modules/astro": {
-			"version": "4.0.7",
-			"resolved": "https://registry.npmjs.org/astro/-/astro-4.0.7.tgz",
-			"integrity": "sha512-K+Ms2AAQvi6yERPuglcI69tnHyTT44JCjzqprSjw3uOwFX7N9obpLgbhmLMH1fPFTgzt3ZD7APjmtDPN51makw==",
+			"version": "4.2.1",
+			"resolved": "https://registry.npmjs.org/astro/-/astro-4.2.1.tgz",
+			"integrity": "sha512-TcrveW2/lohmljrbTUgcDxajEdF1yK+zBvb7SXroloGix/d4jkegO6GANFgvyy0zprMyajW7qgJEFyhWUX86Vw==",
 			"dependencies": {
 				"@astrojs/compiler": "^2.3.4",
 				"@astrojs/internal-helpers": "0.2.1",
-				"@astrojs/markdown-remark": "4.0.1",
+				"@astrojs/markdown-remark": "4.1.0",
 				"@astrojs/telemetry": "3.0.4",
 				"@babel/core": "^7.23.3",
 				"@babel/generator": "^7.23.3",
@@ -1429,6 +2448,8 @@
 				"@babel/types": "^7.23.3",
 				"@types/babel__core": "^7.20.4",
 				"acorn": "^8.11.2",
+				"aria-query": "^5.3.0",
+				"axobject-query": "^4.0.0",
 				"boxen": "^7.1.1",
 				"chokidar": "^3.5.3",
 				"ci-info": "^4.0.0",
@@ -1467,7 +2488,7 @@
 				"resolve": "^1.22.4",
 				"semver": "^7.5.4",
 				"server-destroy": "^1.0.1",
-				"shikiji": "^0.6.13",
+				"shikiji": "^0.9.18",
 				"string-width": "^7.0.0",
 				"strip-ansi": "^7.1.0",
 				"tsconfck": "^3.0.0",
@@ -1487,7 +2508,28 @@
 				"npm": ">=6.14.0"
 			},
 			"optionalDependencies": {
-				"sharp": "^0.32.5"
+				"sharp": "^0.32.6"
+			}
+		},
+		"node_modules/astro/node_modules/@astrojs/markdown-remark": {
+			"version": "4.1.0",
+			"resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-4.1.0.tgz",
+			"integrity": "sha512-JnIy6zk+6f/SgSVMZecZFxQt0faT1uBckwYCuBxKH1hYYJsal8OOe+tx6JxfnyaV+xViyjUvQ28mmn+p/F5LkQ==",
+			"dependencies": {
+				"@astrojs/prism": "^3.0.0",
+				"github-slugger": "^2.0.0",
+				"import-meta-resolve": "^4.0.0",
+				"mdast-util-definitions": "^6.0.0",
+				"rehype-raw": "^7.0.0",
+				"rehype-stringify": "^10.0.0",
+				"remark-gfm": "^4.0.0",
+				"remark-parse": "^11.0.0",
+				"remark-rehype": "^11.0.0",
+				"remark-smartypants": "^2.0.0",
+				"shikiji": "^0.9.18",
+				"unified": "^11.0.4",
+				"unist-util-visit": "^5.0.0",
+				"vfile": "^6.0.1"
 			}
 		},
 		"node_modules/astro/node_modules/argparse": {
@@ -1506,6 +2548,58 @@
 				"js-yaml": "bin/js-yaml.js"
 			}
 		},
+		"node_modules/astro/node_modules/shikiji": {
+			"version": "0.9.19",
+			"resolved": "https://registry.npmjs.org/shikiji/-/shikiji-0.9.19.tgz",
+			"integrity": "sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==",
+			"dependencies": {
+				"shikiji-core": "0.9.19"
+			}
+		},
+		"node_modules/autoprefixer": {
+			"version": "10.4.16",
+			"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz",
+			"integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==",
+			"funding": [
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/postcss/"
+				},
+				{
+					"type": "tidelift",
+					"url": "https://tidelift.com/funding/github/npm/autoprefixer"
+				},
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/ai"
+				}
+			],
+			"dependencies": {
+				"browserslist": "^4.21.10",
+				"caniuse-lite": "^1.0.30001538",
+				"fraction.js": "^4.3.6",
+				"normalize-range": "^0.1.2",
+				"picocolors": "^1.0.0",
+				"postcss-value-parser": "^4.2.0"
+			},
+			"bin": {
+				"autoprefixer": "bin/autoprefixer"
+			},
+			"engines": {
+				"node": "^10 || ^12 || >=14"
+			},
+			"peerDependencies": {
+				"postcss": "^8.1.0"
+			}
+		},
+		"node_modules/axobject-query": {
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz",
+			"integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==",
+			"dependencies": {
+				"dequal": "^2.0.3"
+			}
+		},
 		"node_modules/b4a": {
 			"version": "1.6.4",
 			"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz",
@@ -1617,11 +2711,11 @@
 			}
 		},
 		"node_modules/braces": {
-			"version": "3.0.2",
-			"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-			"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+			"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
 			"dependencies": {
-				"fill-range": "^7.0.1"
+				"fill-range": "^7.1.1"
 			},
 			"engines": {
 				"node": ">=8"
@@ -1693,9 +2787,9 @@
 			}
 		},
 		"node_modules/caniuse-lite": {
-			"version": "1.0.30001570",
-			"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz",
-			"integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==",
+			"version": "1.0.30001634",
+			"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001634.tgz",
+			"integrity": "sha512-fbBYXQ9q3+yp1q1gBk86tOFs4pyn/yxFm5ZNP18OXJDfA3txImOY9PhfxVggZ4vRHDqoU8NrKU81eN0OtzOgRA==",
 			"funding": [
 				{
 					"type": "opencollective",
@@ -1760,6 +2854,15 @@
 				"url": "https://github.com/sponsors/wooorm"
 			}
 		},
+		"node_modules/character-reference-invalid": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
+			"integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
+			"funding": {
+				"type": "github",
+				"url": "https://github.com/sponsors/wooorm"
+			}
+		},
 		"node_modules/chokidar": {
 			"version": "3.5.3",
 			"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -1946,6 +3049,15 @@
 				"node": ">=6"
 			}
 		},
+		"node_modules/collapse-white-space": {
+			"version": "2.1.0",
+			"resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz",
+			"integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==",
+			"funding": {
+				"type": "github",
+				"url": "https://github.com/sponsors/wooorm"
+			}
+		},
 		"node_modules/color": {
 			"version": "4.2.3",
 			"resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
@@ -2040,6 +3152,103 @@
 				"node": ">= 8"
 			}
 		},
+		"node_modules/css-blank-pseudo": {
+			"version": "6.0.1",
+			"resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-6.0.1.tgz",
+			"integrity": "sha512-goSnEITByxTzU4Oh5oJZrEWudxTqk7L6IXj1UW69pO6Hv0UdX+Vsrt02FFu5DweRh2bLu6WpX/+zsQCu5O1gKw==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-selector-parser": "^6.0.13"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/css-has-pseudo": {
+			"version": "6.0.1",
+			"resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-6.0.1.tgz",
+			"integrity": "sha512-WwoVKqNxApfEI7dWFyaHoeFCcUPD+lPyjL6lNpRUNX7IyIUuVpawOTwwA5D0ZR6V2xQZonNPVj8kEcxzEaAQfQ==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/selector-specificity": "^3.0.1",
+				"postcss-selector-parser": "^6.0.13",
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/css-prefers-color-scheme": {
+			"version": "9.0.1",
+			"resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-9.0.1.tgz",
+			"integrity": "sha512-iFit06ochwCKPRiWagbTa1OAWCvWWVdEnIFd8BaRrgO8YrrNh4RAWUQTFcYX5tdFZgFl1DJ3iiULchZyEbnF4g==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/cssdb": {
+			"version": "7.10.0",
+			"resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.10.0.tgz",
+			"integrity": "sha512-yGZ5tmA57gWh/uvdQBHs45wwFY0IBh3ypABk5sEubPBPSzXzkNgsWReqx7gdx6uhC+QoFBe+V8JwBB9/hQ6cIA==",
+			"funding": [
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				},
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				}
+			]
+		},
+		"node_modules/cssesc": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+			"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+			"bin": {
+				"cssesc": "bin/cssesc"
+			},
+			"engines": {
+				"node": ">=4"
+			}
+		},
 		"node_modules/debug": {
 			"version": "4.3.4",
 			"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -2272,6 +3481,69 @@
 				"node": ">=4"
 			}
 		},
+		"node_modules/estree-util-attach-comments": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz",
+			"integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==",
+			"dependencies": {
+				"@types/estree": "^1.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
+		"node_modules/estree-util-build-jsx": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz",
+			"integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==",
+			"dependencies": {
+				"@types/estree-jsx": "^1.0.0",
+				"devlop": "^1.0.0",
+				"estree-util-is-identifier-name": "^3.0.0",
+				"estree-walker": "^3.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
+		"node_modules/estree-util-is-identifier-name": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
+			"integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==",
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
+		"node_modules/estree-util-to-js": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz",
+			"integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==",
+			"dependencies": {
+				"@types/estree-jsx": "^1.0.0",
+				"astring": "^1.8.0",
+				"source-map": "^0.7.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
+		"node_modules/estree-util-visit": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz",
+			"integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==",
+			"dependencies": {
+				"@types/estree-jsx": "^1.0.0",
+				"@types/unist": "^3.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
 		"node_modules/estree-walker": {
 			"version": "3.0.3",
 			"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
@@ -2362,9 +3634,9 @@
 			}
 		},
 		"node_modules/fill-range": {
-			"version": "7.0.1",
-			"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-			"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+			"version": "7.1.1",
+			"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+			"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
 			"dependencies": {
 				"to-regex-range": "^5.0.1"
 			},
@@ -2404,6 +3676,18 @@
 				"node": ">=8"
 			}
 		},
+		"node_modules/fraction.js": {
+			"version": "4.3.7",
+			"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+			"integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+			"engines": {
+				"node": "*"
+			},
+			"funding": {
+				"type": "patreon",
+				"url": "https://github.com/sponsors/rawify"
+			}
+		},
 		"node_modules/fs-constants": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
@@ -2609,6 +3893,33 @@
 				"url": "https://opencollective.com/unified"
 			}
 		},
+		"node_modules/hast-util-to-estree": {
+			"version": "3.1.0",
+			"resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz",
+			"integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==",
+			"dependencies": {
+				"@types/estree": "^1.0.0",
+				"@types/estree-jsx": "^1.0.0",
+				"@types/hast": "^3.0.0",
+				"comma-separated-tokens": "^2.0.0",
+				"devlop": "^1.0.0",
+				"estree-util-attach-comments": "^3.0.0",
+				"estree-util-is-identifier-name": "^3.0.0",
+				"hast-util-whitespace": "^3.0.0",
+				"mdast-util-mdx-expression": "^2.0.0",
+				"mdast-util-mdx-jsx": "^3.0.0",
+				"mdast-util-mdxjs-esm": "^2.0.0",
+				"property-information": "^6.0.0",
+				"space-separated-tokens": "^2.0.0",
+				"style-to-object": "^0.4.0",
+				"unist-util-position": "^5.0.0",
+				"zwitch": "^2.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
 		"node_modules/hast-util-to-html": {
 			"version": "9.0.0",
 			"resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.0.tgz",
@@ -2632,6 +3943,45 @@
 				"url": "https://opencollective.com/unified"
 			}
 		},
+		"node_modules/hast-util-to-jsx-runtime": {
+			"version": "2.3.0",
+			"resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz",
+			"integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==",
+			"dependencies": {
+				"@types/estree": "^1.0.0",
+				"@types/hast": "^3.0.0",
+				"@types/unist": "^3.0.0",
+				"comma-separated-tokens": "^2.0.0",
+				"devlop": "^1.0.0",
+				"estree-util-is-identifier-name": "^3.0.0",
+				"hast-util-whitespace": "^3.0.0",
+				"mdast-util-mdx-expression": "^2.0.0",
+				"mdast-util-mdx-jsx": "^3.0.0",
+				"mdast-util-mdxjs-esm": "^2.0.0",
+				"property-information": "^6.0.0",
+				"space-separated-tokens": "^2.0.0",
+				"style-to-object": "^1.0.0",
+				"unist-util-position": "^5.0.0",
+				"vfile-message": "^4.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
+		"node_modules/hast-util-to-jsx-runtime/node_modules/inline-style-parser": {
+			"version": "0.2.2",
+			"resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.2.tgz",
+			"integrity": "sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ=="
+		},
+		"node_modules/hast-util-to-jsx-runtime/node_modules/style-to-object": {
+			"version": "1.0.5",
+			"resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.5.tgz",
+			"integrity": "sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==",
+			"dependencies": {
+				"inline-style-parser": "0.2.2"
+			}
+		},
 		"node_modules/hast-util-to-parse5": {
 			"version": "8.0.0",
 			"resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz",
@@ -2706,9 +4056,13 @@
 			}
 		},
 		"node_modules/iconoir": {
-			"version": "6.1.0",
-			"resolved": "https://registry.npmjs.org/iconoir/-/iconoir-6.1.0.tgz",
-			"integrity": "sha512-K8Jrqkp51MdcDBzfiSY2vt9gHsujwEmoOHlWI2Wk++cgVvR1bP+fMLFmwBTPHduZ3aOK95snE6rUmlLPH7Yhnw=="
+			"version": "7.2.0",
+			"resolved": "https://registry.npmjs.org/iconoir/-/iconoir-7.2.0.tgz",
+			"integrity": "sha512-uGaTCzdvQUAfNMDM2yJieGVM2KbW+8/8nkyLVtvXX+79tHQWxgPhpvk9g7rnZcbQuZ/YFAdP+0HB3eAmk+l2qw==",
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/iconoir"
+			}
 		},
 		"node_modules/iconv-lite": {
 			"version": "0.4.24",
@@ -2760,6 +4114,33 @@
 			"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
 			"optional": true
 		},
+		"node_modules/inline-style-parser": {
+			"version": "0.1.1",
+			"resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
+			"integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
+		},
+		"node_modules/is-alphabetical": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
+			"integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
+			"funding": {
+				"type": "github",
+				"url": "https://github.com/sponsors/wooorm"
+			}
+		},
+		"node_modules/is-alphanumerical": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
+			"integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
+			"dependencies": {
+				"is-alphabetical": "^2.0.0",
+				"is-decimal": "^2.0.0"
+			},
+			"funding": {
+				"type": "github",
+				"url": "https://github.com/sponsors/wooorm"
+			}
+		},
 		"node_modules/is-arrayish": {
 			"version": "0.3.2",
 			"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
@@ -2810,6 +4191,15 @@
 				"url": "https://github.com/sponsors/ljharb"
 			}
 		},
+		"node_modules/is-decimal": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
+			"integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
+			"funding": {
+				"type": "github",
+				"url": "https://github.com/sponsors/wooorm"
+			}
+		},
 		"node_modules/is-docker": {
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
@@ -2859,6 +4249,15 @@
 				"node": ">=0.10.0"
 			}
 		},
+		"node_modules/is-hexadecimal": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
+			"integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
+			"funding": {
+				"type": "github",
+				"url": "https://github.com/sponsors/wooorm"
+			}
+		},
 		"node_modules/is-inside-container": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
@@ -2906,6 +4305,14 @@
 				"url": "https://github.com/sponsors/sindresorhus"
 			}
 		},
+		"node_modules/is-reference": {
+			"version": "3.0.2",
+			"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz",
+			"integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==",
+			"dependencies": {
+				"@types/estree": "*"
+			}
+		},
 		"node_modules/is-stream": {
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
@@ -3007,6 +4414,11 @@
 				"node": ">=6"
 			}
 		},
+		"node_modules/lite-youtube-embed": {
+			"version": "0.2.0",
+			"resolved": "https://registry.npmjs.org/lite-youtube-embed/-/lite-youtube-embed-0.2.0.tgz",
+			"integrity": "sha512-XXXAk5sbvtjjwbie3XG+6HppgTm1HTGL/Uk9z9NkJH53o7puZLur434heHzAjkS60hZB3vT4ls25zl5rMiX4EA=="
+		},
 		"node_modules/load-yaml-file": {
 			"version": "0.2.0",
 			"resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz",
@@ -3099,6 +4511,17 @@
 			"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
 			"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
 		},
+		"node_modules/markdown-extensions": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz",
+			"integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==",
+			"engines": {
+				"node": ">=16"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/sindresorhus"
+			}
+		},
 		"node_modules/markdown-table": {
 			"version": "3.0.3",
 			"resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz",
@@ -3266,6 +4689,80 @@
 				"url": "https://opencollective.com/unified"
 			}
 		},
+		"node_modules/mdast-util-mdx": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz",
+			"integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==",
+			"dependencies": {
+				"mdast-util-from-markdown": "^2.0.0",
+				"mdast-util-mdx-expression": "^2.0.0",
+				"mdast-util-mdx-jsx": "^3.0.0",
+				"mdast-util-mdxjs-esm": "^2.0.0",
+				"mdast-util-to-markdown": "^2.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
+		"node_modules/mdast-util-mdx-expression": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz",
+			"integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==",
+			"dependencies": {
+				"@types/estree-jsx": "^1.0.0",
+				"@types/hast": "^3.0.0",
+				"@types/mdast": "^4.0.0",
+				"devlop": "^1.0.0",
+				"mdast-util-from-markdown": "^2.0.0",
+				"mdast-util-to-markdown": "^2.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
+		"node_modules/mdast-util-mdx-jsx": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.0.0.tgz",
+			"integrity": "sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==",
+			"dependencies": {
+				"@types/estree-jsx": "^1.0.0",
+				"@types/hast": "^3.0.0",
+				"@types/mdast": "^4.0.0",
+				"@types/unist": "^3.0.0",
+				"ccount": "^2.0.0",
+				"devlop": "^1.1.0",
+				"mdast-util-from-markdown": "^2.0.0",
+				"mdast-util-to-markdown": "^2.0.0",
+				"parse-entities": "^4.0.0",
+				"stringify-entities": "^4.0.0",
+				"unist-util-remove-position": "^5.0.0",
+				"unist-util-stringify-position": "^4.0.0",
+				"vfile-message": "^4.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
+		"node_modules/mdast-util-mdxjs-esm": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
+			"integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
+			"dependencies": {
+				"@types/estree-jsx": "^1.0.0",
+				"@types/hast": "^3.0.0",
+				"@types/mdast": "^4.0.0",
+				"devlop": "^1.0.0",
+				"mdast-util-from-markdown": "^2.0.0",
+				"mdast-util-to-markdown": "^2.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
 		"node_modules/mdast-util-phrasing": {
 			"version": "4.0.0",
 			"resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz",
@@ -3523,6 +5020,103 @@
 				"url": "https://opencollective.com/unified"
 			}
 		},
+		"node_modules/micromark-extension-mdx-expression": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz",
+			"integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==",
+			"funding": [
+				{
+					"type": "GitHub Sponsors",
+					"url": "https://github.com/sponsors/unifiedjs"
+				},
+				{
+					"type": "OpenCollective",
+					"url": "https://opencollective.com/unified"
+				}
+			],
+			"dependencies": {
+				"@types/estree": "^1.0.0",
+				"devlop": "^1.0.0",
+				"micromark-factory-mdx-expression": "^2.0.0",
+				"micromark-factory-space": "^2.0.0",
+				"micromark-util-character": "^2.0.0",
+				"micromark-util-events-to-acorn": "^2.0.0",
+				"micromark-util-symbol": "^2.0.0",
+				"micromark-util-types": "^2.0.0"
+			}
+		},
+		"node_modules/micromark-extension-mdx-jsx": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz",
+			"integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==",
+			"dependencies": {
+				"@types/acorn": "^4.0.0",
+				"@types/estree": "^1.0.0",
+				"devlop": "^1.0.0",
+				"estree-util-is-identifier-name": "^3.0.0",
+				"micromark-factory-mdx-expression": "^2.0.0",
+				"micromark-factory-space": "^2.0.0",
+				"micromark-util-character": "^2.0.0",
+				"micromark-util-symbol": "^2.0.0",
+				"micromark-util-types": "^2.0.0",
+				"vfile-message": "^4.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
+		"node_modules/micromark-extension-mdx-md": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz",
+			"integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==",
+			"dependencies": {
+				"micromark-util-types": "^2.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
+		"node_modules/micromark-extension-mdxjs": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz",
+			"integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==",
+			"dependencies": {
+				"acorn": "^8.0.0",
+				"acorn-jsx": "^5.0.0",
+				"micromark-extension-mdx-expression": "^3.0.0",
+				"micromark-extension-mdx-jsx": "^3.0.0",
+				"micromark-extension-mdx-md": "^2.0.0",
+				"micromark-extension-mdxjs-esm": "^3.0.0",
+				"micromark-util-combine-extensions": "^2.0.0",
+				"micromark-util-types": "^2.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
+		"node_modules/micromark-extension-mdxjs-esm": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz",
+			"integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==",
+			"dependencies": {
+				"@types/estree": "^1.0.0",
+				"devlop": "^1.0.0",
+				"micromark-core-commonmark": "^2.0.0",
+				"micromark-util-character": "^2.0.0",
+				"micromark-util-events-to-acorn": "^2.0.0",
+				"micromark-util-symbol": "^2.0.0",
+				"micromark-util-types": "^2.0.0",
+				"unist-util-position-from-estree": "^2.0.0",
+				"vfile-message": "^4.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
 		"node_modules/micromark-factory-destination": {
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz",
@@ -3564,6 +5158,31 @@
 				"micromark-util-types": "^2.0.0"
 			}
 		},
+		"node_modules/micromark-factory-mdx-expression": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz",
+			"integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==",
+			"funding": [
+				{
+					"type": "GitHub Sponsors",
+					"url": "https://github.com/sponsors/unifiedjs"
+				},
+				{
+					"type": "OpenCollective",
+					"url": "https://opencollective.com/unified"
+				}
+			],
+			"dependencies": {
+				"@types/estree": "^1.0.0",
+				"devlop": "^1.0.0",
+				"micromark-util-character": "^2.0.0",
+				"micromark-util-events-to-acorn": "^2.0.0",
+				"micromark-util-symbol": "^2.0.0",
+				"micromark-util-types": "^2.0.0",
+				"unist-util-position-from-estree": "^2.0.0",
+				"vfile-message": "^4.0.0"
+			}
+		},
 		"node_modules/micromark-factory-space": {
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
@@ -3755,6 +5374,31 @@
 				}
 			]
 		},
+		"node_modules/micromark-util-events-to-acorn": {
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz",
+			"integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==",
+			"funding": [
+				{
+					"type": "GitHub Sponsors",
+					"url": "https://github.com/sponsors/unifiedjs"
+				},
+				{
+					"type": "OpenCollective",
+					"url": "https://opencollective.com/unified"
+				}
+			],
+			"dependencies": {
+				"@types/acorn": "^4.0.0",
+				"@types/estree": "^1.0.0",
+				"@types/unist": "^3.0.0",
+				"devlop": "^1.0.0",
+				"estree-util-visit": "^2.0.0",
+				"micromark-util-symbol": "^2.0.0",
+				"micromark-util-types": "^2.0.0",
+				"vfile-message": "^4.0.0"
+			}
+		},
 		"node_modules/micromark-util-html-tag-name": {
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz",
@@ -4008,9 +5652,9 @@
 			}
 		},
 		"node_modules/node-abi": {
-			"version": "3.52.0",
-			"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz",
-			"integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==",
+			"version": "3.54.0",
+			"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz",
+			"integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==",
 			"optional": true,
 			"dependencies": {
 				"semver": "^7.3.5"
@@ -4038,6 +5682,14 @@
 				"node": ">=0.10.0"
 			}
 		},
+		"node_modules/normalize-range": {
+			"version": "0.1.2",
+			"resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+			"integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/npm-run-path": {
 			"version": "5.1.0",
 			"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
@@ -4222,6 +5874,30 @@
 				"node": ">=6"
 			}
 		},
+		"node_modules/parse-entities": {
+			"version": "4.0.1",
+			"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz",
+			"integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==",
+			"dependencies": {
+				"@types/unist": "^2.0.0",
+				"character-entities": "^2.0.0",
+				"character-entities-legacy": "^3.0.0",
+				"character-reference-invalid": "^2.0.0",
+				"decode-named-character-reference": "^1.0.0",
+				"is-alphanumerical": "^2.0.0",
+				"is-decimal": "^2.0.0",
+				"is-hexadecimal": "^2.0.0"
+			},
+			"funding": {
+				"type": "github",
+				"url": "https://github.com/sponsors/wooorm"
+			}
+		},
+		"node_modules/parse-entities/node_modules/@types/unist": {
+			"version": "2.0.10",
+			"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
+			"integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
+		},
 		"node_modules/parse-latin": {
 			"version": "5.0.1",
 			"resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-5.0.1.tgz",
@@ -4278,6 +5954,16 @@
 			"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
 			"integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw=="
 		},
+		"node_modules/periscopic": {
+			"version": "3.1.0",
+			"resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
+			"integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
+			"dependencies": {
+				"@types/estree": "^1.0.0",
+				"estree-walker": "^3.0.0",
+				"is-reference": "^3.0.0"
+			}
+		},
 		"node_modules/picocolors": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@@ -4362,9 +6048,9 @@
 			}
 		},
 		"node_modules/postcss": {
-			"version": "8.4.32",
-			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
-			"integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
+			"version": "8.4.38",
+			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
+			"integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
 			"funding": [
 				{
 					"type": "opencollective",
@@ -4382,12 +6068,653 @@
 			"dependencies": {
 				"nanoid": "^3.3.7",
 				"picocolors": "^1.0.0",
-				"source-map-js": "^1.0.2"
+				"source-map-js": "^1.2.0"
 			},
 			"engines": {
 				"node": "^10 || ^12 || >=14"
 			}
 		},
+		"node_modules/postcss-attribute-case-insensitive": {
+			"version": "6.0.2",
+			"resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-6.0.2.tgz",
+			"integrity": "sha512-IRuCwwAAQbgaLhxQdQcIIK0dCVXg3XDUnzgKD8iwdiYdwU4rMWRWyl/W9/0nA4ihVpq5pyALiHB2veBJ0292pw==",
+			"dependencies": {
+				"postcss-selector-parser": "^6.0.10"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/csstools"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-clamp": {
+			"version": "4.1.0",
+			"resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz",
+			"integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==",
+			"dependencies": {
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": ">=7.6.0"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4.6"
+			}
+		},
+		"node_modules/postcss-color-functional-notation": {
+			"version": "6.0.3",
+			"resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-6.0.3.tgz",
+			"integrity": "sha512-2jBr3H0sk3qGh/3BkmLsOKcYyVfSlM1K2QQYVU7eW5mkg7ZOQ4aU/Rtbh7vJ9FxAfgf8iHRwXBsQkHqUxzTkXw==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-color-hex-alpha": {
+			"version": "9.0.3",
+			"resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-9.0.3.tgz",
+			"integrity": "sha512-7sEHU4tAS6htlxun8AB9LDrCXoljxaC34tFVRlYKcvO+18r5fvGiXgv5bQzN40+4gXLCyWSMRK5FK31244WcCA==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-color-rebeccapurple": {
+			"version": "9.0.2",
+			"resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-9.0.2.tgz",
+			"integrity": "sha512-f+RDEAPW2m8UbJWkSpRfV+QxhSaQhDMihI75DVGJJh4oRIoegjheeRtINFJum9D8BqGJcvD4GLjggTvCwZ4zuA==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-custom-media": {
+			"version": "10.0.2",
+			"resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-10.0.2.tgz",
+			"integrity": "sha512-zcEFNRmDm2fZvTPdI1pIW3W//UruMcLosmMiCdpQnrCsTRzWlKQPYMa1ud9auL0BmrryKK1+JjIGn19K0UjO/w==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/cascade-layer-name-parser": "^1.0.5",
+				"@csstools/css-parser-algorithms": "^2.3.2",
+				"@csstools/css-tokenizer": "^2.2.1",
+				"@csstools/media-query-list-parser": "^2.1.5"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-custom-properties": {
+			"version": "13.3.3",
+			"resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-13.3.3.tgz",
+			"integrity": "sha512-xLmILb2R83aG4X++iVFg8TWadOlc45xiyFHRZD6Yhhu2igrTHXL6C75AEWqx6k9lxrr9sK5rcfUI9JvTCxBTvA==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/cascade-layer-name-parser": "^1.0.6",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-custom-selectors": {
+			"version": "7.1.6",
+			"resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-7.1.6.tgz",
+			"integrity": "sha512-svsjWRaxqL3vAzv71dV0/65P24/FB8TbPX+lWyyf9SZ7aZm4S4NhCn7N3Bg+Z5sZunG3FS8xQ80LrCU9hb37cw==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/cascade-layer-name-parser": "^1.0.5",
+				"@csstools/css-parser-algorithms": "^2.3.2",
+				"@csstools/css-tokenizer": "^2.2.1",
+				"postcss-selector-parser": "^6.0.13"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-dir-pseudo-class": {
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-8.0.1.tgz",
+			"integrity": "sha512-uULohfWBBVoFiZXgsQA24JV6FdKIidQ+ZqxOouhWwdE+qJlALbkS5ScB43ZTjPK+xUZZhlaO/NjfCt5h4IKUfw==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-selector-parser": "^6.0.13"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-double-position-gradients": {
+			"version": "5.0.3",
+			"resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-5.0.3.tgz",
+			"integrity": "sha512-QKYpwmaSm6HcdS0ndAuWSNNMv78R1oSySoh3mYBmctHWr2KWcwPJVakdOyU4lvFVW0GRu9wfIQwGeM4p3xU9ow==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3",
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-focus-visible": {
+			"version": "9.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-9.0.1.tgz",
+			"integrity": "sha512-N2VQ5uPz3Z9ZcqI5tmeholn4d+1H14fKXszpjogZIrFbhaq0zNAtq8sAnw6VLiqGbL8YBzsnu7K9bBkTqaRimQ==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-selector-parser": "^6.0.13"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-focus-within": {
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-8.0.1.tgz",
+			"integrity": "sha512-NFU3xcY/xwNaapVb+1uJ4n23XImoC86JNwkY/uduytSl2s9Ekc2EpzmRR63+ExitnW3Mab3Fba/wRPCT5oDILA==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-selector-parser": "^6.0.13"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-font-variant": {
+			"version": "5.0.0",
+			"resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz",
+			"integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==",
+			"peerDependencies": {
+				"postcss": "^8.1.0"
+			}
+		},
+		"node_modules/postcss-gap-properties": {
+			"version": "5.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-5.0.1.tgz",
+			"integrity": "sha512-k2z9Cnngc24c0KF4MtMuDdToROYqGMMUQGcE6V0odwjHyOHtaDBlLeRBV70y9/vF7KIbShrTRZ70JjsI1BZyWw==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-image-set-function": {
+			"version": "6.0.2",
+			"resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-6.0.2.tgz",
+			"integrity": "sha512-/O1xwqpJiz/apxGQi7UUfv1xUcorvkHZfvCYHPpRxxZj2WvjD0rg0+/+c+u5/Do5CpUg3XvfYxMrhcnjW1ArDQ==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-lab-function": {
+			"version": "6.0.8",
+			"resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-6.0.8.tgz",
+			"integrity": "sha512-agYs7R9Z5gnX837fCkH8TEQIHdhyDsMPPnpuuENt/dxoDVAykBaqbdxIN4DagOj+ZQo20iRNNJeY3MsFcdI6Sg==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-logical": {
+			"version": "7.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-7.0.1.tgz",
+			"integrity": "sha512-8GwUQZE0ri0K0HJHkDv87XOLC8DE0msc+HoWLeKdtjDZEwpZ5xuK3QdV6FhmHSQW40LPkg43QzvATRAI3LsRkg==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-nesting": {
+			"version": "12.0.2",
+			"resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-12.0.2.tgz",
+			"integrity": "sha512-63PpJHSeNs93S3ZUIyi+7kKx4JqOIEJ6QYtG3x+0qA4J03+4n0iwsyA1GAHyWxsHYljQS4/4ZK1o2sMi70b5wQ==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/selector-specificity": "^3.0.1",
+				"postcss-selector-parser": "^6.0.13"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-opacity-percentage": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-2.0.0.tgz",
+			"integrity": "sha512-lyDrCOtntq5Y1JZpBFzIWm2wG9kbEdujpNt4NLannF+J9c8CgFIzPa80YQfdza+Y+yFfzbYj/rfoOsYsooUWTQ==",
+			"funding": [
+				{
+					"type": "kofi",
+					"url": "https://ko-fi.com/mrcgrtz"
+				},
+				{
+					"type": "liberapay",
+					"url": "https://liberapay.com/mrcgrtz"
+				}
+			],
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.2"
+			}
+		},
+		"node_modules/postcss-overflow-shorthand": {
+			"version": "5.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-5.0.1.tgz",
+			"integrity": "sha512-XzjBYKLd1t6vHsaokMV9URBt2EwC9a7nDhpQpjoPk2HRTSQfokPfyAS/Q7AOrzUu6q+vp/GnrDBGuj/FCaRqrQ==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-page-break": {
+			"version": "3.0.4",
+			"resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz",
+			"integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==",
+			"peerDependencies": {
+				"postcss": "^8"
+			}
+		},
+		"node_modules/postcss-place": {
+			"version": "9.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-9.0.1.tgz",
+			"integrity": "sha512-JfL+paQOgRQRMoYFc2f73pGuG/Aw3tt4vYMR6UA3cWVMxivviPTnMFnFTczUJOA4K2Zga6xgQVE+PcLs64WC8Q==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-preset-env": {
+			"version": "9.3.0",
+			"resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-9.3.0.tgz",
+			"integrity": "sha512-ycw6doPrqV6QxDCtgiyGDef61bEfiSc59HGM4gOw/wxQxmKnhuEery61oOC/5ViENz/ycpRsuhTexs1kUBTvVw==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"@csstools/postcss-cascade-layers": "^4.0.1",
+				"@csstools/postcss-color-function": "^3.0.7",
+				"@csstools/postcss-color-mix-function": "^2.0.7",
+				"@csstools/postcss-exponential-functions": "^1.0.1",
+				"@csstools/postcss-font-format-keywords": "^3.0.0",
+				"@csstools/postcss-gamut-mapping": "^1.0.0",
+				"@csstools/postcss-gradients-interpolation-method": "^4.0.7",
+				"@csstools/postcss-hwb-function": "^3.0.6",
+				"@csstools/postcss-ic-unit": "^3.0.2",
+				"@csstools/postcss-initial": "^1.0.0",
+				"@csstools/postcss-is-pseudo-class": "^4.0.3",
+				"@csstools/postcss-logical-float-and-clear": "^2.0.0",
+				"@csstools/postcss-logical-overflow": "^1.0.0",
+				"@csstools/postcss-logical-overscroll-behavior": "^1.0.0",
+				"@csstools/postcss-logical-resize": "^2.0.0",
+				"@csstools/postcss-logical-viewport-units": "^2.0.3",
+				"@csstools/postcss-media-minmax": "^1.1.0",
+				"@csstools/postcss-media-queries-aspect-ratio-number-values": "^2.0.3",
+				"@csstools/postcss-nested-calc": "^3.0.0",
+				"@csstools/postcss-normalize-display-values": "^3.0.1",
+				"@csstools/postcss-oklab-function": "^3.0.7",
+				"@csstools/postcss-progressive-custom-properties": "^3.0.2",
+				"@csstools/postcss-relative-color-syntax": "^2.0.7",
+				"@csstools/postcss-scope-pseudo-class": "^3.0.0",
+				"@csstools/postcss-stepped-value-functions": "^3.0.2",
+				"@csstools/postcss-text-decoration-shorthand": "^3.0.3",
+				"@csstools/postcss-trigonometric-functions": "^3.0.2",
+				"@csstools/postcss-unset-value": "^3.0.0",
+				"autoprefixer": "^10.4.16",
+				"browserslist": "^4.22.1",
+				"css-blank-pseudo": "^6.0.0",
+				"css-has-pseudo": "^6.0.0",
+				"css-prefers-color-scheme": "^9.0.0",
+				"cssdb": "^7.9.0",
+				"postcss-attribute-case-insensitive": "^6.0.2",
+				"postcss-clamp": "^4.1.0",
+				"postcss-color-functional-notation": "^6.0.2",
+				"postcss-color-hex-alpha": "^9.0.2",
+				"postcss-color-rebeccapurple": "^9.0.1",
+				"postcss-custom-media": "^10.0.2",
+				"postcss-custom-properties": "^13.3.2",
+				"postcss-custom-selectors": "^7.1.6",
+				"postcss-dir-pseudo-class": "^8.0.0",
+				"postcss-double-position-gradients": "^5.0.2",
+				"postcss-focus-visible": "^9.0.0",
+				"postcss-focus-within": "^8.0.0",
+				"postcss-font-variant": "^5.0.0",
+				"postcss-gap-properties": "^5.0.0",
+				"postcss-image-set-function": "^6.0.1",
+				"postcss-lab-function": "^6.0.7",
+				"postcss-logical": "^7.0.0",
+				"postcss-nesting": "^12.0.1",
+				"postcss-opacity-percentage": "^2.0.0",
+				"postcss-overflow-shorthand": "^5.0.0",
+				"postcss-page-break": "^3.0.4",
+				"postcss-place": "^9.0.0",
+				"postcss-pseudo-class-any-link": "^9.0.0",
+				"postcss-replace-overflow-wrap": "^4.0.0",
+				"postcss-selector-not": "^7.0.1",
+				"postcss-value-parser": "^4.2.0"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-pseudo-class-any-link": {
+			"version": "9.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-9.0.1.tgz",
+			"integrity": "sha512-cKYGGZ9yzUZi+dZd7XT2M8iSDfo+T2Ctbpiizf89uBTBfIpZpjvTavzIJXpCReMVXSKROqzpxClNu6fz4DHM0Q==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/csstools"
+				},
+				{
+					"type": "opencollective",
+					"url": "https://opencollective.com/csstools"
+				}
+			],
+			"dependencies": {
+				"postcss-selector-parser": "^6.0.13"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-replace-overflow-wrap": {
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz",
+			"integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==",
+			"peerDependencies": {
+				"postcss": "^8.0.3"
+			}
+		},
+		"node_modules/postcss-selector-not": {
+			"version": "7.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-7.0.1.tgz",
+			"integrity": "sha512-1zT5C27b/zeJhchN7fP0kBr16Cc61mu7Si9uWWLoA3Px/D9tIJPKchJCkUH3tPO5D0pCFmGeApAv8XpXBQJ8SQ==",
+			"dependencies": {
+				"postcss-selector-parser": "^6.0.10"
+			},
+			"engines": {
+				"node": "^14 || ^16 || >=18"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/csstools"
+			},
+			"peerDependencies": {
+				"postcss": "^8.4"
+			}
+		},
+		"node_modules/postcss-selector-parser": {
+			"version": "6.0.15",
+			"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz",
+			"integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==",
+			"dependencies": {
+				"cssesc": "^3.0.0",
+				"util-deprecate": "^1.0.2"
+			},
+			"engines": {
+				"node": ">=4"
+			}
+		},
+		"node_modules/postcss-value-parser": {
+			"version": "4.2.0",
+			"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+			"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
+		},
 		"node_modules/prebuild-install": {
 			"version": "7.1.1",
 			"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
@@ -4698,6 +7025,19 @@
 				"url": "https://opencollective.com/unified"
 			}
 		},
+		"node_modules/remark-mdx": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.0.tgz",
+			"integrity": "sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==",
+			"dependencies": {
+				"mdast-util-mdx": "^3.0.0",
+				"micromark-extension-mdxjs": "^3.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
 		"node_modules/remark-parse": {
 			"version": "11.0.0",
 			"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
@@ -5231,9 +7571,12 @@
 			}
 		},
 		"node_modules/rollup": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.1.tgz",
-			"integrity": "sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz",
+			"integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==",
+			"dependencies": {
+				"@types/estree": "1.0.5"
+			},
 			"bin": {
 				"rollup": "dist/bin/rollup"
 			},
@@ -5242,19 +7585,22 @@
 				"npm": ">=8.0.0"
 			},
 			"optionalDependencies": {
-				"@rollup/rollup-android-arm-eabi": "4.9.1",
-				"@rollup/rollup-android-arm64": "4.9.1",
-				"@rollup/rollup-darwin-arm64": "4.9.1",
-				"@rollup/rollup-darwin-x64": "4.9.1",
-				"@rollup/rollup-linux-arm-gnueabihf": "4.9.1",
-				"@rollup/rollup-linux-arm64-gnu": "4.9.1",
-				"@rollup/rollup-linux-arm64-musl": "4.9.1",
-				"@rollup/rollup-linux-riscv64-gnu": "4.9.1",
-				"@rollup/rollup-linux-x64-gnu": "4.9.1",
-				"@rollup/rollup-linux-x64-musl": "4.9.1",
-				"@rollup/rollup-win32-arm64-msvc": "4.9.1",
-				"@rollup/rollup-win32-ia32-msvc": "4.9.1",
-				"@rollup/rollup-win32-x64-msvc": "4.9.1",
+				"@rollup/rollup-android-arm-eabi": "4.18.0",
+				"@rollup/rollup-android-arm64": "4.18.0",
+				"@rollup/rollup-darwin-arm64": "4.18.0",
+				"@rollup/rollup-darwin-x64": "4.18.0",
+				"@rollup/rollup-linux-arm-gnueabihf": "4.18.0",
+				"@rollup/rollup-linux-arm-musleabihf": "4.18.0",
+				"@rollup/rollup-linux-arm64-gnu": "4.18.0",
+				"@rollup/rollup-linux-arm64-musl": "4.18.0",
+				"@rollup/rollup-linux-powerpc64le-gnu": "4.18.0",
+				"@rollup/rollup-linux-riscv64-gnu": "4.18.0",
+				"@rollup/rollup-linux-s390x-gnu": "4.18.0",
+				"@rollup/rollup-linux-x64-gnu": "4.18.0",
+				"@rollup/rollup-linux-x64-musl": "4.18.0",
+				"@rollup/rollup-win32-arm64-msvc": "4.18.0",
+				"@rollup/rollup-win32-ia32-msvc": "4.18.0",
+				"@rollup/rollup-win32-x64-msvc": "4.18.0",
 				"fsevents": "~2.3.2"
 			}
 		},
@@ -5406,6 +7752,11 @@
 				"hast-util-to-html": "^9.0.0"
 			}
 		},
+		"node_modules/shikiji-core": {
+			"version": "0.9.19",
+			"resolved": "https://registry.npmjs.org/shikiji-core/-/shikiji-core-0.9.19.tgz",
+			"integrity": "sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw=="
+		},
 		"node_modules/signal-exit": {
 			"version": "4.1.0",
 			"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
@@ -5499,10 +7850,18 @@
 			"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz",
 			"integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw=="
 		},
+		"node_modules/source-map": {
+			"version": "0.7.4",
+			"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+			"integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+			"engines": {
+				"node": ">= 8"
+			}
+		},
 		"node_modules/source-map-js": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
-			"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
+			"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
 			"engines": {
 				"node": ">=0.10.0"
 			}
@@ -5653,6 +8012,14 @@
 				"node": ">=0.10.0"
 			}
 		},
+		"node_modules/style-to-object": {
+			"version": "0.4.4",
+			"resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz",
+			"integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==",
+			"dependencies": {
+				"inline-style-parser": "0.1.1"
+			}
+		},
 		"node_modules/supports-color": {
 			"version": "5.5.0",
 			"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -5870,6 +8237,31 @@
 				"url": "https://opencollective.com/unified"
 			}
 		},
+		"node_modules/unist-util-position-from-estree": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz",
+			"integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==",
+			"dependencies": {
+				"@types/unist": "^3.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
+		"node_modules/unist-util-remove-position": {
+			"version": "5.0.0",
+			"resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz",
+			"integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==",
+			"dependencies": {
+				"@types/unist": "^3.0.0",
+				"unist-util-visit": "^5.0.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/unified"
+			}
+		},
 		"node_modules/unist-util-stringify-position": {
 			"version": "4.0.0",
 			"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
@@ -6001,13 +8393,13 @@
 			}
 		},
 		"node_modules/vite": {
-			"version": "5.0.10",
-			"resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz",
-			"integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==",
+			"version": "5.3.1",
+			"resolved": "https://registry.npmjs.org/vite/-/vite-5.3.1.tgz",
+			"integrity": "sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==",
 			"dependencies": {
-				"esbuild": "^0.19.3",
-				"postcss": "^8.4.32",
-				"rollup": "^4.2.0"
+				"esbuild": "^0.21.3",
+				"postcss": "^8.4.38",
+				"rollup": "^4.13.0"
 			},
 			"bin": {
 				"vite": "bin/vite.js"
@@ -6054,6 +8446,388 @@
 				}
 			}
 		},
+		"node_modules/vite/node_modules/@esbuild/aix-ppc64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
+			"integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
+			"cpu": [
+				"ppc64"
+			],
+			"optional": true,
+			"os": [
+				"aix"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/android-arm": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
+			"integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
+			"cpu": [
+				"arm"
+			],
+			"optional": true,
+			"os": [
+				"android"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/android-arm64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
+			"integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"android"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/android-x64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
+			"integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"android"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/darwin-arm64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+			"integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/darwin-x64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
+			"integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/freebsd-arm64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
+			"integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"freebsd"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/freebsd-x64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
+			"integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"freebsd"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/linux-arm": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
+			"integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
+			"cpu": [
+				"arm"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/linux-arm64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
+			"integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/linux-ia32": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
+			"integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
+			"cpu": [
+				"ia32"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/linux-loong64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
+			"integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
+			"cpu": [
+				"loong64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/linux-mips64el": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
+			"integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
+			"cpu": [
+				"mips64el"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/linux-ppc64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
+			"integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
+			"cpu": [
+				"ppc64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/linux-riscv64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
+			"integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
+			"cpu": [
+				"riscv64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/linux-s390x": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
+			"integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
+			"cpu": [
+				"s390x"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/linux-x64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
+			"integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/netbsd-x64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
+			"integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"netbsd"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/openbsd-x64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
+			"integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"openbsd"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/sunos-x64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
+			"integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"sunos"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/win32-arm64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+			"integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/win32-ia32": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
+			"integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
+			"cpu": [
+				"ia32"
+			],
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/@esbuild/win32-x64": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
+			"integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=12"
+			}
+		},
+		"node_modules/vite/node_modules/esbuild": {
+			"version": "0.21.5",
+			"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
+			"integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
+			"hasInstallScript": true,
+			"bin": {
+				"esbuild": "bin/esbuild"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"optionalDependencies": {
+				"@esbuild/aix-ppc64": "0.21.5",
+				"@esbuild/android-arm": "0.21.5",
+				"@esbuild/android-arm64": "0.21.5",
+				"@esbuild/android-x64": "0.21.5",
+				"@esbuild/darwin-arm64": "0.21.5",
+				"@esbuild/darwin-x64": "0.21.5",
+				"@esbuild/freebsd-arm64": "0.21.5",
+				"@esbuild/freebsd-x64": "0.21.5",
+				"@esbuild/linux-arm": "0.21.5",
+				"@esbuild/linux-arm64": "0.21.5",
+				"@esbuild/linux-ia32": "0.21.5",
+				"@esbuild/linux-loong64": "0.21.5",
+				"@esbuild/linux-mips64el": "0.21.5",
+				"@esbuild/linux-ppc64": "0.21.5",
+				"@esbuild/linux-riscv64": "0.21.5",
+				"@esbuild/linux-s390x": "0.21.5",
+				"@esbuild/linux-x64": "0.21.5",
+				"@esbuild/netbsd-x64": "0.21.5",
+				"@esbuild/openbsd-x64": "0.21.5",
+				"@esbuild/sunos-x64": "0.21.5",
+				"@esbuild/win32-arm64": "0.21.5",
+				"@esbuild/win32-ia32": "0.21.5",
+				"@esbuild/win32-x64": "0.21.5"
+			}
+		},
 		"node_modules/vitefu": {
 			"version": "0.2.5",
 			"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz",
@@ -6486,6 +9260,14 @@
 				"@jridgewell/trace-mapping": "^0.3.9"
 			}
 		},
+		"@astro-community/astro-embed-youtube": {
+			"version": "0.4.3",
+			"resolved": "https://registry.npmjs.org/@astro-community/astro-embed-youtube/-/astro-embed-youtube-0.4.3.tgz",
+			"integrity": "sha512-zXtPmR9yxrTo6cuLhH8v+r62bsXbsLJgsU2FiZalPr4bXJxAUQEIlG46S/qK0AEXi9uNShKqy4+zBaJ98xTVEg==",
+			"requires": {
+				"lite-youtube-embed": "^0.2.0"
+			}
+		},
 		"@astrojs/check": {
 			"version": "0.3.3",
 			"resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.3.3.tgz",
@@ -6561,6 +9343,28 @@
 				"vfile": "^6.0.1"
 			}
 		},
+		"@astrojs/mdx": {
+			"version": "2.0.3",
+			"resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-2.0.3.tgz",
+			"integrity": "sha512-wFjQX5CihU5B4UAQNwc2R48ph0flpc6/yvDCFANE0agtgI2+BaVcAjuW0EhGOQCZ65dQDqnFKE0lvGs7EADYpg==",
+			"requires": {
+				"@astrojs/markdown-remark": "4.0.1",
+				"@mdx-js/mdx": "^3.0.0",
+				"acorn": "^8.11.2",
+				"es-module-lexer": "^1.4.1",
+				"estree-util-visit": "^2.0.0",
+				"github-slugger": "^2.0.0",
+				"gray-matter": "^4.0.3",
+				"hast-util-to-html": "^9.0.0",
+				"kleur": "^4.1.4",
+				"rehype-raw": "^7.0.0",
+				"remark-gfm": "^4.0.0",
+				"remark-smartypants": "^2.0.0",
+				"source-map": "^0.7.4",
+				"unist-util-visit": "^5.0.0",
+				"vfile": "^6.0.1"
+			}
+		},
 		"@astrojs/prism": {
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.0.0.tgz",
@@ -6840,6 +9644,303 @@
 				"to-fast-properties": "^2.0.0"
 			}
 		},
+		"@csstools/cascade-layer-name-parser": {
+			"version": "1.0.6",
+			"resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.6.tgz",
+			"integrity": "sha512-HkxRNs6ZIV0VjLFw6k5G8K35vd9r+O8B1Vr+QVD8M5Y44eQxyHtc42BdF74FQatXACPnitOR1+sRx2oWdnKTQw==",
+			"requires": {}
+		},
+		"@csstools/color-helpers": {
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-4.0.0.tgz",
+			"integrity": "sha512-wjyXB22/h2OvxAr3jldPB7R7kjTUEzopvjitS8jWtyd8fN6xJ8vy1HnHu0ZNfEkqpBJgQ76Q+sBDshWcMvTa/w=="
+		},
+		"@csstools/css-calc": {
+			"version": "1.1.5",
+			"resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-1.1.5.tgz",
+			"integrity": "sha512-UhI5oSRAUtTHY3MyGahqn0ZzQOHVoPpfvUcOmYipAZ1rILAvCBoyiLSsa/clv1Xxct0SMKIq93KO5Bfl1cb6tQ==",
+			"requires": {}
+		},
+		"@csstools/css-color-parser": {
+			"version": "1.5.0",
+			"resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-1.5.0.tgz",
+			"integrity": "sha512-PUhSg1MgU2sjYhA6moOmxYesqVqYTJwcVw12boTNbDX7Af+VK02MkgvmBBY2Z2qU6UN5HOQ+wrF0qQJGsTFY7w==",
+			"requires": {
+				"@csstools/color-helpers": "^4.0.0",
+				"@csstools/css-calc": "^1.1.5"
+			}
+		},
+		"@csstools/css-parser-algorithms": {
+			"version": "2.4.0",
+			"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.4.0.tgz",
+			"integrity": "sha512-/PPLr2g5PAUCKAPEbfyk6/baZA+WJHQtUhPkoCQMpyRE8I0lXrG1QFRN8e5s3ZYxM8d/g5BZc6lH3s8Op7/VEg==",
+			"requires": {}
+		},
+		"@csstools/css-tokenizer": {
+			"version": "2.2.2",
+			"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.2.tgz",
+			"integrity": "sha512-wCDUe/MAw7npAHFLyW3QjSyLA66S5QFaV1jIXlNQvdJ8RzXDSgALa49eWcUO6P55ARQaz0TsDdAgdRgkXFYY8g=="
+		},
+		"@csstools/media-query-list-parser": {
+			"version": "2.1.6",
+			"resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.6.tgz",
+			"integrity": "sha512-R6AKl9vaU0It7D7TR2lQn0pre5aQfdeqHRePlaRCY8rHL3l9eVlNRpsEVDKFi/zAjzv68CxH2M5kqbhPFPKjvw==",
+			"requires": {}
+		},
+		"@csstools/postcss-cascade-layers": {
+			"version": "4.0.2",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-4.0.2.tgz",
+			"integrity": "sha512-PqM+jvg5T2tB4FHX+akrMGNWAygLupD4FNUjcv4PSvtVuWZ6ISxuo37m4jFGU7Jg3rCfloGzKd0+xfr5Ec3vZQ==",
+			"requires": {
+				"@csstools/selector-specificity": "^3.0.1",
+				"postcss-selector-parser": "^6.0.13"
+			}
+		},
+		"@csstools/postcss-color-function": {
+			"version": "3.0.8",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-3.0.8.tgz",
+			"integrity": "sha512-jvbF7eCRbIcxWqby0kk2Mt85QtGzRRpFFYdlJCJ80Tuiv43PY+auS/nBl8pDQQ4Ndm4vsm4IC/wCZDcJUmpJmg==",
+			"requires": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3"
+			}
+		},
+		"@csstools/postcss-color-mix-function": {
+			"version": "2.0.8",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-2.0.8.tgz",
+			"integrity": "sha512-sGhk+TdZ2TeXspc6LSYSYC8WgzLlxoknUaObKgB0mk+dNjRQgSSIeCU+qrCwvHmwM+uTNKtiS8mntDzyQLHTTA==",
+			"requires": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3"
+			}
+		},
+		"@csstools/postcss-exponential-functions": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-1.0.2.tgz",
+			"integrity": "sha512-VRIYrwNCkZRqzsGB4jGT+XcNXsoiwyqy0Vf7C3I/5OPcf7WcWK3G1sBYFqqgWLGtpwc7m1m8TcorGY1xdh5abg==",
+			"requires": {
+				"@csstools/css-calc": "^1.1.5",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2"
+			}
+		},
+		"@csstools/postcss-font-format-keywords": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-3.0.1.tgz",
+			"integrity": "sha512-D1lcG2sfotTq6yBEOMV3myFxJLT10F3DLYZJMbiny5YToqzHWodZen8WId3UTimm0mEHitXqAUNL5jdd6RzVdA==",
+			"requires": {
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"@csstools/postcss-gamut-mapping": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-1.0.1.tgz",
+			"integrity": "sha512-GDVzfNbnc7x3GusFklvt0mYXIWVzxEtEtTFEW664NgZh/5V7Z89hZKBMl9piOAHXuxijfHtE+kul/ShfeLUvcA==",
+			"requires": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2"
+			}
+		},
+		"@csstools/postcss-gradients-interpolation-method": {
+			"version": "4.0.8",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-4.0.8.tgz",
+			"integrity": "sha512-bmvCNzuUvWPPdgASh0T14ffTay/FdzXsXfp0wXT1pYoUPmkH9M6yyxwPEkHq5djjzSb2jiLl4Ta3XM1uOREQ2w==",
+			"requires": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3"
+			}
+		},
+		"@csstools/postcss-hwb-function": {
+			"version": "3.0.7",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-3.0.7.tgz",
+			"integrity": "sha512-iXs1gxKtev8YNP5bOF26TAsnMfcxnCRLpKItQ067RphYECKEK/xWm4Z0r4ChmV1U1eq+lbdH5ZIb2cju4o5akA==",
+			"requires": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2"
+			}
+		},
+		"@csstools/postcss-ic-unit": {
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-3.0.3.tgz",
+			"integrity": "sha512-MpcmIL0/uMm/cFWh5V/9nbKKJ7jRr2qTYW5Q6zoE6HZ6uzOBJr2KRERv5/x8xzEBQ1MthDT7iP1EBp9luSQy7g==",
+			"requires": {
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3",
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"@csstools/postcss-initial": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-1.0.1.tgz",
+			"integrity": "sha512-wtb+IbUIrIf8CrN6MLQuFR7nlU5C7PwuebfeEXfjthUha1+XZj2RVi+5k/lukToA24sZkYAiSJfHM8uG/UZIdg==",
+			"requires": {}
+		},
+		"@csstools/postcss-is-pseudo-class": {
+			"version": "4.0.4",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-4.0.4.tgz",
+			"integrity": "sha512-vTVO/uZixpTVAOQt3qZRUFJ/K1L03OfNkeJ8sFNDVNdVy/zW0h1L5WT7HIPMDUkvSrxQkFaCCybTZkUP7UESlQ==",
+			"requires": {
+				"@csstools/selector-specificity": "^3.0.1",
+				"postcss-selector-parser": "^6.0.13"
+			}
+		},
+		"@csstools/postcss-logical-float-and-clear": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-2.0.1.tgz",
+			"integrity": "sha512-SsrWUNaXKr+e/Uo4R/uIsqJYt3DaggIh/jyZdhy/q8fECoJSKsSMr7nObSLdvoULB69Zb6Bs+sefEIoMG/YfOA==",
+			"requires": {}
+		},
+		"@csstools/postcss-logical-overflow": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-1.0.1.tgz",
+			"integrity": "sha512-Kl4lAbMg0iyztEzDhZuQw8Sj9r2uqFDcU1IPl+AAt2nue8K/f1i7ElvKtXkjhIAmKiy5h2EY8Gt/Cqg0pYFDCw==",
+			"requires": {}
+		},
+		"@csstools/postcss-logical-overscroll-behavior": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-1.0.1.tgz",
+			"integrity": "sha512-+kHamNxAnX8ojPCtV8WPcUP3XcqMFBSDuBuvT6MHgq7oX4IQxLIXKx64t7g9LiuJzE7vd06Q9qUYR6bh4YnGpQ==",
+			"requires": {}
+		},
+		"@csstools/postcss-logical-resize": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-2.0.1.tgz",
+			"integrity": "sha512-W5Gtwz7oIuFcKa5SmBjQ2uxr8ZoL7M2bkoIf0T1WeNqljMkBrfw1DDA8/J83k57NQ1kcweJEjkJ04pUkmyee3A==",
+			"requires": {
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"@csstools/postcss-logical-viewport-units": {
+			"version": "2.0.4",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-2.0.4.tgz",
+			"integrity": "sha512-jetp/ArGAniWbjWBh5UQ07ztawfSbqCFd0QelX4R4pVIxrXahUEhz5VZHebMPVCg02J8GsQn0br6fdRpY6t7lw==",
+			"requires": {
+				"@csstools/css-tokenizer": "^2.2.2"
+			}
+		},
+		"@csstools/postcss-media-minmax": {
+			"version": "1.1.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-1.1.1.tgz",
+			"integrity": "sha512-mBY46/Hr+A8cDjoX0OoPRBOVrkANym9540dSB9rN3dllPZdM1E112i/tVxWsrR1s1yE9gfF0pk+7lf9l+qSeHA==",
+			"requires": {
+				"@csstools/css-calc": "^1.1.5",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/media-query-list-parser": "^2.1.6"
+			}
+		},
+		"@csstools/postcss-media-queries-aspect-ratio-number-values": {
+			"version": "2.0.4",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-2.0.4.tgz",
+			"integrity": "sha512-IaIZZhH0Qy9UDn7u+N3cuwwPG0Po3ZKOdDh+ClR7xvisSqniG+PuVrOEWYJrFKOt2//UHLhd7KHDqr2u9LKS9Q==",
+			"requires": {
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/media-query-list-parser": "^2.1.6"
+			}
+		},
+		"@csstools/postcss-nested-calc": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-3.0.1.tgz",
+			"integrity": "sha512-bwwababZpWRm0ByHaWBxTsDGTMhZKmtUNl3Wt0Eom8AY7ORgXx5qF9SSk1vEFrCi+HOfJT6M6W5KPgzXuQNRwQ==",
+			"requires": {
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"@csstools/postcss-normalize-display-values": {
+			"version": "3.0.2",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-3.0.2.tgz",
+			"integrity": "sha512-fCapyyT/dUdyPtrelQSIV+d5HqtTgnNP/BEG9IuhgXHt93Wc4CfC1bQ55GzKAjWrZbgakMQ7MLfCXEf3rlZJOw==",
+			"requires": {
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"@csstools/postcss-oklab-function": {
+			"version": "3.0.8",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-3.0.8.tgz",
+			"integrity": "sha512-L4xrwbgg+k08v+a88LDxJeIM6+kqaBJlYb/QgmEMfQpUbrfXTp87DuRc7utcRdDvY+qWK5vqz3h1xUtceB5LJQ==",
+			"requires": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3"
+			}
+		},
+		"@csstools/postcss-progressive-custom-properties": {
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-3.0.3.tgz",
+			"integrity": "sha512-WipTVh6JTMQfeIrzDV4wEPsV9NTzMK2jwXxyH6CGBktuWdivHnkioP/smp1x/0QDPQyx7NTS14RB+GV3zZZYEw==",
+			"requires": {
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"@csstools/postcss-relative-color-syntax": {
+			"version": "2.0.8",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-2.0.8.tgz",
+			"integrity": "sha512-wu/Oh7QKINpRXnmLMUbObVNlqwr843PSF4a3x3fMC0I+vUeoGqMfZuSPFtT+NnYYxfzUjEZ091GURPxee22VLQ==",
+			"requires": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3"
+			}
+		},
+		"@csstools/postcss-scope-pseudo-class": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-3.0.1.tgz",
+			"integrity": "sha512-3ZFonK2gfgqg29gUJ2w7xVw2wFJ1eNWVDONjbzGkm73gJHVCYK5fnCqlLr+N+KbEfv2XbWAO0AaOJCFB6Fer6A==",
+			"requires": {
+				"postcss-selector-parser": "^6.0.13"
+			}
+		},
+		"@csstools/postcss-stepped-value-functions": {
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-3.0.3.tgz",
+			"integrity": "sha512-hzo9Wr3u7JJiM65/EyHgE/gJpBzhDwBSGOobFs2YQ0ZNTywUliYQoYJud1KKlByMRuhqvDLh9V95eIkLf/fZTQ==",
+			"requires": {
+				"@csstools/css-calc": "^1.1.5",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2"
+			}
+		},
+		"@csstools/postcss-text-decoration-shorthand": {
+			"version": "3.0.4",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-3.0.4.tgz",
+			"integrity": "sha512-yUZmbnUemgQmja7SpOZeU45+P49wNEgQguRdyTktFkZsHf7Gof+ZIYfvF6Cm+LsU1PwSupy4yUeEKKjX5+k6cQ==",
+			"requires": {
+				"@csstools/color-helpers": "^4.0.0",
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"@csstools/postcss-trigonometric-functions": {
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-3.0.3.tgz",
+			"integrity": "sha512-T/npTbDuMZ3vktEMuA05p1oeVd12Sy47qZP1vFhzNMUOdXGCK9vlm0tUSIlV5DdlbTJqKqq9FhGitZH9VTKrfQ==",
+			"requires": {
+				"@csstools/css-calc": "^1.1.5",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2"
+			}
+		},
+		"@csstools/postcss-unset-value": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-3.0.1.tgz",
+			"integrity": "sha512-dbDnZ2ja2U8mbPP0Hvmt2RMEGBiF1H7oY6HYSpjteXJGihYwgxgTr6KRbbJ/V6c+4wd51M+9980qG4gKVn5ttg==",
+			"requires": {}
+		},
+		"@csstools/selector-specificity": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.1.tgz",
+			"integrity": "sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww==",
+			"requires": {}
+		},
 		"@emmetio/abbreviation": {
 			"version": "2.3.3",
 			"resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz",
@@ -7033,6 +10134,36 @@
 				"@jridgewell/sourcemap-codec": "1.4.14"
 			}
 		},
+		"@mdx-js/mdx": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.0.tgz",
+			"integrity": "sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==",
+			"requires": {
+				"@types/estree": "^1.0.0",
+				"@types/estree-jsx": "^1.0.0",
+				"@types/hast": "^3.0.0",
+				"@types/mdx": "^2.0.0",
+				"collapse-white-space": "^2.0.0",
+				"devlop": "^1.0.0",
+				"estree-util-build-jsx": "^3.0.0",
+				"estree-util-is-identifier-name": "^3.0.0",
+				"estree-util-to-js": "^2.0.0",
+				"estree-walker": "^3.0.0",
+				"hast-util-to-estree": "^3.0.0",
+				"hast-util-to-jsx-runtime": "^2.0.0",
+				"markdown-extensions": "^2.0.0",
+				"periscopic": "^3.0.0",
+				"remark-mdx": "^3.0.0",
+				"remark-parse": "^11.0.0",
+				"remark-rehype": "^11.0.0",
+				"source-map": "^0.7.0",
+				"unified": "^11.0.0",
+				"unist-util-position-from-estree": "^2.0.0",
+				"unist-util-stringify-position": "^4.0.0",
+				"unist-util-visit": "^5.0.0",
+				"vfile": "^6.0.0"
+			}
+		},
 		"@nodelib/fs.scandir": {
 			"version": "2.1.5",
 			"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -7057,83 +10188,109 @@
 			}
 		},
 		"@rollup/rollup-android-arm-eabi": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.1.tgz",
-			"integrity": "sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz",
+			"integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==",
 			"optional": true
 		},
 		"@rollup/rollup-android-arm64": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.1.tgz",
-			"integrity": "sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz",
+			"integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==",
 			"optional": true
 		},
 		"@rollup/rollup-darwin-arm64": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz",
-			"integrity": "sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz",
+			"integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==",
 			"optional": true
 		},
 		"@rollup/rollup-darwin-x64": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.1.tgz",
-			"integrity": "sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz",
+			"integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==",
 			"optional": true
 		},
 		"@rollup/rollup-linux-arm-gnueabihf": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.1.tgz",
-			"integrity": "sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz",
+			"integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==",
+			"optional": true
+		},
+		"@rollup/rollup-linux-arm-musleabihf": {
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz",
+			"integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==",
 			"optional": true
 		},
 		"@rollup/rollup-linux-arm64-gnu": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.1.tgz",
-			"integrity": "sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz",
+			"integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==",
 			"optional": true
 		},
 		"@rollup/rollup-linux-arm64-musl": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.1.tgz",
-			"integrity": "sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz",
+			"integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==",
+			"optional": true
+		},
+		"@rollup/rollup-linux-powerpc64le-gnu": {
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz",
+			"integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==",
 			"optional": true
 		},
 		"@rollup/rollup-linux-riscv64-gnu": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.1.tgz",
-			"integrity": "sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz",
+			"integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==",
+			"optional": true
+		},
+		"@rollup/rollup-linux-s390x-gnu": {
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz",
+			"integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==",
 			"optional": true
 		},
 		"@rollup/rollup-linux-x64-gnu": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.1.tgz",
-			"integrity": "sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz",
+			"integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==",
 			"optional": true
 		},
 		"@rollup/rollup-linux-x64-musl": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.1.tgz",
-			"integrity": "sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz",
+			"integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==",
 			"optional": true
 		},
 		"@rollup/rollup-win32-arm64-msvc": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.1.tgz",
-			"integrity": "sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz",
+			"integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==",
 			"optional": true
 		},
 		"@rollup/rollup-win32-ia32-msvc": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.1.tgz",
-			"integrity": "sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz",
+			"integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==",
 			"optional": true
 		},
 		"@rollup/rollup-win32-x64-msvc": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz",
-			"integrity": "sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz",
+			"integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==",
 			"optional": true
 		},
+		"@types/acorn": {
+			"version": "4.0.6",
+			"resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz",
+			"integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==",
+			"requires": {
+				"@types/estree": "*"
+			}
+		},
 		"@types/babel__core": {
 			"version": "7.20.5",
 			"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
@@ -7184,6 +10341,14 @@
 			"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
 			"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
 		},
+		"@types/estree-jsx": {
+			"version": "1.0.3",
+			"resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.3.tgz",
+			"integrity": "sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==",
+			"requires": {
+				"@types/estree": "*"
+			}
+		},
 		"@types/hast": {
 			"version": "3.0.3",
 			"resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
@@ -7200,6 +10365,11 @@
 				"@types/unist": "*"
 			}
 		},
+		"@types/mdx": {
+			"version": "2.0.10",
+			"resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.10.tgz",
+			"integrity": "sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg=="
+		},
 		"@types/ms": {
 			"version": "0.7.34",
 			"resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
@@ -7337,6 +10507,12 @@
 			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
 			"integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w=="
 		},
+		"acorn-jsx": {
+			"version": "5.3.2",
+			"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+			"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+			"requires": {}
+		},
 		"ansi-align": {
 			"version": "3.0.1",
 			"resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
@@ -7410,19 +10586,32 @@
 				"sprintf-js": "~1.0.2"
 			}
 		},
+		"aria-query": {
+			"version": "5.3.0",
+			"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
+			"integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
+			"requires": {
+				"dequal": "^2.0.3"
+			}
+		},
 		"array-iterate": {
 			"version": "2.0.1",
 			"resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz",
 			"integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg=="
 		},
+		"astring": {
+			"version": "1.8.6",
+			"resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz",
+			"integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg=="
+		},
 		"astro": {
-			"version": "4.0.7",
-			"resolved": "https://registry.npmjs.org/astro/-/astro-4.0.7.tgz",
-			"integrity": "sha512-K+Ms2AAQvi6yERPuglcI69tnHyTT44JCjzqprSjw3uOwFX7N9obpLgbhmLMH1fPFTgzt3ZD7APjmtDPN51makw==",
+			"version": "4.2.1",
+			"resolved": "https://registry.npmjs.org/astro/-/astro-4.2.1.tgz",
+			"integrity": "sha512-TcrveW2/lohmljrbTUgcDxajEdF1yK+zBvb7SXroloGix/d4jkegO6GANFgvyy0zprMyajW7qgJEFyhWUX86Vw==",
 			"requires": {
 				"@astrojs/compiler": "^2.3.4",
 				"@astrojs/internal-helpers": "0.2.1",
-				"@astrojs/markdown-remark": "4.0.1",
+				"@astrojs/markdown-remark": "4.1.0",
 				"@astrojs/telemetry": "3.0.4",
 				"@babel/core": "^7.23.3",
 				"@babel/generator": "^7.23.3",
@@ -7432,6 +10621,8 @@
 				"@babel/types": "^7.23.3",
 				"@types/babel__core": "^7.20.4",
 				"acorn": "^8.11.2",
+				"aria-query": "^5.3.0",
+				"axobject-query": "^4.0.0",
 				"boxen": "^7.1.1",
 				"chokidar": "^3.5.3",
 				"ci-info": "^4.0.0",
@@ -7470,8 +10661,8 @@
 				"resolve": "^1.22.4",
 				"semver": "^7.5.4",
 				"server-destroy": "^1.0.1",
-				"sharp": "^0.32.5",
-				"shikiji": "^0.6.13",
+				"sharp": "^0.32.6",
+				"shikiji": "^0.9.18",
 				"string-width": "^7.0.0",
 				"strip-ansi": "^7.1.0",
 				"tsconfck": "^3.0.0",
@@ -7484,6 +10675,27 @@
 				"zod": "^3.22.4"
 			},
 			"dependencies": {
+				"@astrojs/markdown-remark": {
+					"version": "4.1.0",
+					"resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-4.1.0.tgz",
+					"integrity": "sha512-JnIy6zk+6f/SgSVMZecZFxQt0faT1uBckwYCuBxKH1hYYJsal8OOe+tx6JxfnyaV+xViyjUvQ28mmn+p/F5LkQ==",
+					"requires": {
+						"@astrojs/prism": "^3.0.0",
+						"github-slugger": "^2.0.0",
+						"import-meta-resolve": "^4.0.0",
+						"mdast-util-definitions": "^6.0.0",
+						"rehype-raw": "^7.0.0",
+						"rehype-stringify": "^10.0.0",
+						"remark-gfm": "^4.0.0",
+						"remark-parse": "^11.0.0",
+						"remark-rehype": "^11.0.0",
+						"remark-smartypants": "^2.0.0",
+						"shikiji": "^0.9.18",
+						"unified": "^11.0.4",
+						"unist-util-visit": "^5.0.0",
+						"vfile": "^6.0.1"
+					}
+				},
 				"argparse": {
 					"version": "2.0.1",
 					"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -7496,9 +10708,38 @@
 					"requires": {
 						"argparse": "^2.0.1"
 					}
+				},
+				"shikiji": {
+					"version": "0.9.19",
+					"resolved": "https://registry.npmjs.org/shikiji/-/shikiji-0.9.19.tgz",
+					"integrity": "sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==",
+					"requires": {
+						"shikiji-core": "0.9.19"
+					}
 				}
 			}
 		},
+		"autoprefixer": {
+			"version": "10.4.16",
+			"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz",
+			"integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==",
+			"requires": {
+				"browserslist": "^4.21.10",
+				"caniuse-lite": "^1.0.30001538",
+				"fraction.js": "^4.3.6",
+				"normalize-range": "^0.1.2",
+				"picocolors": "^1.0.0",
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"axobject-query": {
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz",
+			"integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==",
+			"requires": {
+				"dequal": "^2.0.3"
+			}
+		},
 		"b4a": {
 			"version": "1.6.4",
 			"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz",
@@ -7573,11 +10814,11 @@
 			}
 		},
 		"braces": {
-			"version": "3.0.2",
-			"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-			"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+			"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
 			"requires": {
-				"fill-range": "^7.0.1"
+				"fill-range": "^7.1.1"
 			}
 		},
 		"browserslist": {
@@ -7606,9 +10847,9 @@
 			"integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw=="
 		},
 		"caniuse-lite": {
-			"version": "1.0.30001570",
-			"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz",
-			"integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw=="
+			"version": "1.0.30001634",
+			"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001634.tgz",
+			"integrity": "sha512-fbBYXQ9q3+yp1q1gBk86tOFs4pyn/yxFm5ZNP18OXJDfA3txImOY9PhfxVggZ4vRHDqoU8NrKU81eN0OtzOgRA=="
 		},
 		"ccount": {
 			"version": "2.0.1",
@@ -7640,6 +10881,11 @@
 			"resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
 			"integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="
 		},
+		"character-reference-invalid": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
+			"integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="
+		},
 		"chokidar": {
 			"version": "3.5.3",
 			"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -7760,6 +11006,11 @@
 			"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz",
 			"integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q=="
 		},
+		"collapse-white-space": {
+			"version": "2.1.0",
+			"resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz",
+			"integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="
+		},
 		"color": {
 			"version": "4.2.3",
 			"resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
@@ -7840,6 +11091,40 @@
 				"which": "^2.0.1"
 			}
 		},
+		"css-blank-pseudo": {
+			"version": "6.0.1",
+			"resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-6.0.1.tgz",
+			"integrity": "sha512-goSnEITByxTzU4Oh5oJZrEWudxTqk7L6IXj1UW69pO6Hv0UdX+Vsrt02FFu5DweRh2bLu6WpX/+zsQCu5O1gKw==",
+			"requires": {
+				"postcss-selector-parser": "^6.0.13"
+			}
+		},
+		"css-has-pseudo": {
+			"version": "6.0.1",
+			"resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-6.0.1.tgz",
+			"integrity": "sha512-WwoVKqNxApfEI7dWFyaHoeFCcUPD+lPyjL6lNpRUNX7IyIUuVpawOTwwA5D0ZR6V2xQZonNPVj8kEcxzEaAQfQ==",
+			"requires": {
+				"@csstools/selector-specificity": "^3.0.1",
+				"postcss-selector-parser": "^6.0.13",
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"css-prefers-color-scheme": {
+			"version": "9.0.1",
+			"resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-9.0.1.tgz",
+			"integrity": "sha512-iFit06ochwCKPRiWagbTa1OAWCvWWVdEnIFd8BaRrgO8YrrNh4RAWUQTFcYX5tdFZgFl1DJ3iiULchZyEbnF4g==",
+			"requires": {}
+		},
+		"cssdb": {
+			"version": "7.10.0",
+			"resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.10.0.tgz",
+			"integrity": "sha512-yGZ5tmA57gWh/uvdQBHs45wwFY0IBh3ypABk5sEubPBPSzXzkNgsWReqx7gdx6uhC+QoFBe+V8JwBB9/hQ6cIA=="
+		},
+		"cssesc": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+			"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
+		},
 		"debug": {
 			"version": "4.3.4",
 			"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -8006,6 +11291,49 @@
 			"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
 			"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
 		},
+		"estree-util-attach-comments": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz",
+			"integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==",
+			"requires": {
+				"@types/estree": "^1.0.0"
+			}
+		},
+		"estree-util-build-jsx": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz",
+			"integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==",
+			"requires": {
+				"@types/estree-jsx": "^1.0.0",
+				"devlop": "^1.0.0",
+				"estree-util-is-identifier-name": "^3.0.0",
+				"estree-walker": "^3.0.0"
+			}
+		},
+		"estree-util-is-identifier-name": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
+			"integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="
+		},
+		"estree-util-to-js": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz",
+			"integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==",
+			"requires": {
+				"@types/estree-jsx": "^1.0.0",
+				"astring": "^1.8.0",
+				"source-map": "^0.7.0"
+			}
+		},
+		"estree-util-visit": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz",
+			"integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==",
+			"requires": {
+				"@types/estree-jsx": "^1.0.0",
+				"@types/unist": "^3.0.0"
+			}
+		},
 		"estree-walker": {
 			"version": "3.0.3",
 			"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
@@ -8081,9 +11409,9 @@
 			}
 		},
 		"fill-range": {
-			"version": "7.0.1",
-			"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-			"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+			"version": "7.1.1",
+			"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+			"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
 			"requires": {
 				"to-regex-range": "^5.0.1"
 			}
@@ -8111,6 +11439,11 @@
 			"resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.0.tgz",
 			"integrity": "sha512-xU99gDEnciIwJdGcBmNHnzTJ/w5AT+VFJOu6sTB6WM8diOYNA3Sa+K1DiEBQ7XH4QikQq3iFW1U+jRVcotQnBw=="
 		},
+		"fraction.js": {
+			"version": "4.3.7",
+			"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+			"integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew=="
+		},
 		"fs-constants": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
@@ -8257,6 +11590,29 @@
 				"zwitch": "^2.0.0"
 			}
 		},
+		"hast-util-to-estree": {
+			"version": "3.1.0",
+			"resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz",
+			"integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==",
+			"requires": {
+				"@types/estree": "^1.0.0",
+				"@types/estree-jsx": "^1.0.0",
+				"@types/hast": "^3.0.0",
+				"comma-separated-tokens": "^2.0.0",
+				"devlop": "^1.0.0",
+				"estree-util-attach-comments": "^3.0.0",
+				"estree-util-is-identifier-name": "^3.0.0",
+				"hast-util-whitespace": "^3.0.0",
+				"mdast-util-mdx-expression": "^2.0.0",
+				"mdast-util-mdx-jsx": "^3.0.0",
+				"mdast-util-mdxjs-esm": "^2.0.0",
+				"property-information": "^6.0.0",
+				"space-separated-tokens": "^2.0.0",
+				"style-to-object": "^0.4.0",
+				"unist-util-position": "^5.0.0",
+				"zwitch": "^2.0.0"
+			}
+		},
 		"hast-util-to-html": {
 			"version": "9.0.0",
 			"resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.0.tgz",
@@ -8276,6 +11632,43 @@
 				"zwitch": "^2.0.4"
 			}
 		},
+		"hast-util-to-jsx-runtime": {
+			"version": "2.3.0",
+			"resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz",
+			"integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==",
+			"requires": {
+				"@types/estree": "^1.0.0",
+				"@types/hast": "^3.0.0",
+				"@types/unist": "^3.0.0",
+				"comma-separated-tokens": "^2.0.0",
+				"devlop": "^1.0.0",
+				"estree-util-is-identifier-name": "^3.0.0",
+				"hast-util-whitespace": "^3.0.0",
+				"mdast-util-mdx-expression": "^2.0.0",
+				"mdast-util-mdx-jsx": "^3.0.0",
+				"mdast-util-mdxjs-esm": "^2.0.0",
+				"property-information": "^6.0.0",
+				"space-separated-tokens": "^2.0.0",
+				"style-to-object": "^1.0.0",
+				"unist-util-position": "^5.0.0",
+				"vfile-message": "^4.0.0"
+			},
+			"dependencies": {
+				"inline-style-parser": {
+					"version": "0.2.2",
+					"resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.2.tgz",
+					"integrity": "sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ=="
+				},
+				"style-to-object": {
+					"version": "1.0.5",
+					"resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.5.tgz",
+					"integrity": "sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==",
+					"requires": {
+						"inline-style-parser": "0.2.2"
+					}
+				}
+			}
+		},
 		"hast-util-to-parse5": {
 			"version": "8.0.0",
 			"resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz",
@@ -8331,9 +11724,9 @@
 			"integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="
 		},
 		"iconoir": {
-			"version": "6.1.0",
-			"resolved": "https://registry.npmjs.org/iconoir/-/iconoir-6.1.0.tgz",
-			"integrity": "sha512-K8Jrqkp51MdcDBzfiSY2vt9gHsujwEmoOHlWI2Wk++cgVvR1bP+fMLFmwBTPHduZ3aOK95snE6rUmlLPH7Yhnw=="
+			"version": "7.2.0",
+			"resolved": "https://registry.npmjs.org/iconoir/-/iconoir-7.2.0.tgz",
+			"integrity": "sha512-uGaTCzdvQUAfNMDM2yJieGVM2KbW+8/8nkyLVtvXX+79tHQWxgPhpvk9g7rnZcbQuZ/YFAdP+0HB3eAmk+l2qw=="
 		},
 		"iconv-lite": {
 			"version": "0.4.24",
@@ -8364,6 +11757,25 @@
 			"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
 			"optional": true
 		},
+		"inline-style-parser": {
+			"version": "0.1.1",
+			"resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
+			"integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
+		},
+		"is-alphabetical": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
+			"integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="
+		},
+		"is-alphanumerical": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
+			"integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
+			"requires": {
+				"is-alphabetical": "^2.0.0",
+				"is-decimal": "^2.0.0"
+			}
+		},
 		"is-arrayish": {
 			"version": "0.3.2",
 			"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
@@ -8391,6 +11803,11 @@
 				"hasown": "^2.0.0"
 			}
 		},
+		"is-decimal": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
+			"integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="
+		},
 		"is-docker": {
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
@@ -8419,6 +11836,11 @@
 				"is-extglob": "^2.1.1"
 			}
 		},
+		"is-hexadecimal": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
+			"integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="
+		},
 		"is-inside-container": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
@@ -8442,6 +11864,14 @@
 			"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
 			"integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="
 		},
+		"is-reference": {
+			"version": "3.0.2",
+			"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz",
+			"integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==",
+			"requires": {
+				"@types/estree": "*"
+			}
+		},
 		"is-stream": {
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
@@ -8504,6 +11934,11 @@
 			"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
 			"integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="
 		},
+		"lite-youtube-embed": {
+			"version": "0.2.0",
+			"resolved": "https://registry.npmjs.org/lite-youtube-embed/-/lite-youtube-embed-0.2.0.tgz",
+			"integrity": "sha512-XXXAk5sbvtjjwbie3XG+6HppgTm1HTGL/Uk9z9NkJH53o7puZLur434heHzAjkS60hZB3vT4ls25zl5rMiX4EA=="
+		},
 		"load-yaml-file": {
 			"version": "0.2.0",
 			"resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz",
@@ -8572,6 +12007,11 @@
 				}
 			}
 		},
+		"markdown-extensions": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz",
+			"integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="
+		},
 		"markdown-table": {
 			"version": "3.0.3",
 			"resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz",
@@ -8695,6 +12135,64 @@
 				"mdast-util-to-markdown": "^2.0.0"
 			}
 		},
+		"mdast-util-mdx": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz",
+			"integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==",
+			"requires": {
+				"mdast-util-from-markdown": "^2.0.0",
+				"mdast-util-mdx-expression": "^2.0.0",
+				"mdast-util-mdx-jsx": "^3.0.0",
+				"mdast-util-mdxjs-esm": "^2.0.0",
+				"mdast-util-to-markdown": "^2.0.0"
+			}
+		},
+		"mdast-util-mdx-expression": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz",
+			"integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==",
+			"requires": {
+				"@types/estree-jsx": "^1.0.0",
+				"@types/hast": "^3.0.0",
+				"@types/mdast": "^4.0.0",
+				"devlop": "^1.0.0",
+				"mdast-util-from-markdown": "^2.0.0",
+				"mdast-util-to-markdown": "^2.0.0"
+			}
+		},
+		"mdast-util-mdx-jsx": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.0.0.tgz",
+			"integrity": "sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==",
+			"requires": {
+				"@types/estree-jsx": "^1.0.0",
+				"@types/hast": "^3.0.0",
+				"@types/mdast": "^4.0.0",
+				"@types/unist": "^3.0.0",
+				"ccount": "^2.0.0",
+				"devlop": "^1.1.0",
+				"mdast-util-from-markdown": "^2.0.0",
+				"mdast-util-to-markdown": "^2.0.0",
+				"parse-entities": "^4.0.0",
+				"stringify-entities": "^4.0.0",
+				"unist-util-remove-position": "^5.0.0",
+				"unist-util-stringify-position": "^4.0.0",
+				"vfile-message": "^4.0.0"
+			}
+		},
+		"mdast-util-mdxjs-esm": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
+			"integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
+			"requires": {
+				"@types/estree-jsx": "^1.0.0",
+				"@types/hast": "^3.0.0",
+				"@types/mdast": "^4.0.0",
+				"devlop": "^1.0.0",
+				"mdast-util-from-markdown": "^2.0.0",
+				"mdast-util-to-markdown": "^2.0.0"
+			}
+		},
 		"mdast-util-phrasing": {
 			"version": "4.0.0",
 			"resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz",
@@ -8885,6 +12383,77 @@
 				"micromark-util-types": "^2.0.0"
 			}
 		},
+		"micromark-extension-mdx-expression": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz",
+			"integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==",
+			"requires": {
+				"@types/estree": "^1.0.0",
+				"devlop": "^1.0.0",
+				"micromark-factory-mdx-expression": "^2.0.0",
+				"micromark-factory-space": "^2.0.0",
+				"micromark-util-character": "^2.0.0",
+				"micromark-util-events-to-acorn": "^2.0.0",
+				"micromark-util-symbol": "^2.0.0",
+				"micromark-util-types": "^2.0.0"
+			}
+		},
+		"micromark-extension-mdx-jsx": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz",
+			"integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==",
+			"requires": {
+				"@types/acorn": "^4.0.0",
+				"@types/estree": "^1.0.0",
+				"devlop": "^1.0.0",
+				"estree-util-is-identifier-name": "^3.0.0",
+				"micromark-factory-mdx-expression": "^2.0.0",
+				"micromark-factory-space": "^2.0.0",
+				"micromark-util-character": "^2.0.0",
+				"micromark-util-symbol": "^2.0.0",
+				"micromark-util-types": "^2.0.0",
+				"vfile-message": "^4.0.0"
+			}
+		},
+		"micromark-extension-mdx-md": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz",
+			"integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==",
+			"requires": {
+				"micromark-util-types": "^2.0.0"
+			}
+		},
+		"micromark-extension-mdxjs": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz",
+			"integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==",
+			"requires": {
+				"acorn": "^8.0.0",
+				"acorn-jsx": "^5.0.0",
+				"micromark-extension-mdx-expression": "^3.0.0",
+				"micromark-extension-mdx-jsx": "^3.0.0",
+				"micromark-extension-mdx-md": "^2.0.0",
+				"micromark-extension-mdxjs-esm": "^3.0.0",
+				"micromark-util-combine-extensions": "^2.0.0",
+				"micromark-util-types": "^2.0.0"
+			}
+		},
+		"micromark-extension-mdxjs-esm": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz",
+			"integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==",
+			"requires": {
+				"@types/estree": "^1.0.0",
+				"devlop": "^1.0.0",
+				"micromark-core-commonmark": "^2.0.0",
+				"micromark-util-character": "^2.0.0",
+				"micromark-util-events-to-acorn": "^2.0.0",
+				"micromark-util-symbol": "^2.0.0",
+				"micromark-util-types": "^2.0.0",
+				"unist-util-position-from-estree": "^2.0.0",
+				"vfile-message": "^4.0.0"
+			}
+		},
 		"micromark-factory-destination": {
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz",
@@ -8906,6 +12475,21 @@
 				"micromark-util-types": "^2.0.0"
 			}
 		},
+		"micromark-factory-mdx-expression": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz",
+			"integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==",
+			"requires": {
+				"@types/estree": "^1.0.0",
+				"devlop": "^1.0.0",
+				"micromark-util-character": "^2.0.0",
+				"micromark-util-events-to-acorn": "^2.0.0",
+				"micromark-util-symbol": "^2.0.0",
+				"micromark-util-types": "^2.0.0",
+				"unist-util-position-from-estree": "^2.0.0",
+				"vfile-message": "^4.0.0"
+			}
+		},
 		"micromark-factory-space": {
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
@@ -8997,6 +12581,21 @@
 			"resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz",
 			"integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA=="
 		},
+		"micromark-util-events-to-acorn": {
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz",
+			"integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==",
+			"requires": {
+				"@types/acorn": "^4.0.0",
+				"@types/estree": "^1.0.0",
+				"@types/unist": "^3.0.0",
+				"devlop": "^1.0.0",
+				"estree-util-visit": "^2.0.0",
+				"micromark-util-symbol": "^2.0.0",
+				"micromark-util-types": "^2.0.0",
+				"vfile-message": "^4.0.0"
+			}
+		},
 		"micromark-util-html-tag-name": {
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz",
@@ -9136,9 +12735,9 @@
 			}
 		},
 		"node-abi": {
-			"version": "3.52.0",
-			"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz",
-			"integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==",
+			"version": "3.54.0",
+			"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz",
+			"integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==",
 			"optional": true,
 			"requires": {
 				"semver": "^7.3.5"
@@ -9160,6 +12759,11 @@
 			"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
 			"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
 		},
+		"normalize-range": {
+			"version": "0.1.2",
+			"resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+			"integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="
+		},
 		"npm-run-path": {
 			"version": "5.1.0",
 			"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
@@ -9275,6 +12879,28 @@
 			"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
 			"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
 		},
+		"parse-entities": {
+			"version": "4.0.1",
+			"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz",
+			"integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==",
+			"requires": {
+				"@types/unist": "^2.0.0",
+				"character-entities": "^2.0.0",
+				"character-entities-legacy": "^3.0.0",
+				"character-reference-invalid": "^2.0.0",
+				"decode-named-character-reference": "^1.0.0",
+				"is-alphanumerical": "^2.0.0",
+				"is-decimal": "^2.0.0",
+				"is-hexadecimal": "^2.0.0"
+			},
+			"dependencies": {
+				"@types/unist": {
+					"version": "2.0.10",
+					"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
+					"integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
+				}
+			}
+		},
 		"parse-latin": {
 			"version": "5.0.1",
 			"resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-5.0.1.tgz",
@@ -9318,6 +12944,16 @@
 			"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
 			"integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw=="
 		},
+		"periscopic": {
+			"version": "3.1.0",
+			"resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
+			"integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
+			"requires": {
+				"@types/estree": "^1.0.0",
+				"estree-walker": "^3.0.0",
+				"is-reference": "^3.0.0"
+			}
+		},
 		"picocolors": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@@ -9377,15 +13013,303 @@
 			}
 		},
 		"postcss": {
-			"version": "8.4.32",
-			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
-			"integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
+			"version": "8.4.38",
+			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
+			"integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
 			"requires": {
 				"nanoid": "^3.3.7",
 				"picocolors": "^1.0.0",
-				"source-map-js": "^1.0.2"
+				"source-map-js": "^1.2.0"
 			}
 		},
+		"postcss-attribute-case-insensitive": {
+			"version": "6.0.2",
+			"resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-6.0.2.tgz",
+			"integrity": "sha512-IRuCwwAAQbgaLhxQdQcIIK0dCVXg3XDUnzgKD8iwdiYdwU4rMWRWyl/W9/0nA4ihVpq5pyALiHB2veBJ0292pw==",
+			"requires": {
+				"postcss-selector-parser": "^6.0.10"
+			}
+		},
+		"postcss-clamp": {
+			"version": "4.1.0",
+			"resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz",
+			"integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==",
+			"requires": {
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"postcss-color-functional-notation": {
+			"version": "6.0.3",
+			"resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-6.0.3.tgz",
+			"integrity": "sha512-2jBr3H0sk3qGh/3BkmLsOKcYyVfSlM1K2QQYVU7eW5mkg7ZOQ4aU/Rtbh7vJ9FxAfgf8iHRwXBsQkHqUxzTkXw==",
+			"requires": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3"
+			}
+		},
+		"postcss-color-hex-alpha": {
+			"version": "9.0.3",
+			"resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-9.0.3.tgz",
+			"integrity": "sha512-7sEHU4tAS6htlxun8AB9LDrCXoljxaC34tFVRlYKcvO+18r5fvGiXgv5bQzN40+4gXLCyWSMRK5FK31244WcCA==",
+			"requires": {
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"postcss-color-rebeccapurple": {
+			"version": "9.0.2",
+			"resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-9.0.2.tgz",
+			"integrity": "sha512-f+RDEAPW2m8UbJWkSpRfV+QxhSaQhDMihI75DVGJJh4oRIoegjheeRtINFJum9D8BqGJcvD4GLjggTvCwZ4zuA==",
+			"requires": {
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"postcss-custom-media": {
+			"version": "10.0.2",
+			"resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-10.0.2.tgz",
+			"integrity": "sha512-zcEFNRmDm2fZvTPdI1pIW3W//UruMcLosmMiCdpQnrCsTRzWlKQPYMa1ud9auL0BmrryKK1+JjIGn19K0UjO/w==",
+			"requires": {
+				"@csstools/cascade-layer-name-parser": "^1.0.5",
+				"@csstools/css-parser-algorithms": "^2.3.2",
+				"@csstools/css-tokenizer": "^2.2.1",
+				"@csstools/media-query-list-parser": "^2.1.5"
+			}
+		},
+		"postcss-custom-properties": {
+			"version": "13.3.3",
+			"resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-13.3.3.tgz",
+			"integrity": "sha512-xLmILb2R83aG4X++iVFg8TWadOlc45xiyFHRZD6Yhhu2igrTHXL6C75AEWqx6k9lxrr9sK5rcfUI9JvTCxBTvA==",
+			"requires": {
+				"@csstools/cascade-layer-name-parser": "^1.0.6",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"postcss-custom-selectors": {
+			"version": "7.1.6",
+			"resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-7.1.6.tgz",
+			"integrity": "sha512-svsjWRaxqL3vAzv71dV0/65P24/FB8TbPX+lWyyf9SZ7aZm4S4NhCn7N3Bg+Z5sZunG3FS8xQ80LrCU9hb37cw==",
+			"requires": {
+				"@csstools/cascade-layer-name-parser": "^1.0.5",
+				"@csstools/css-parser-algorithms": "^2.3.2",
+				"@csstools/css-tokenizer": "^2.2.1",
+				"postcss-selector-parser": "^6.0.13"
+			}
+		},
+		"postcss-dir-pseudo-class": {
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-8.0.1.tgz",
+			"integrity": "sha512-uULohfWBBVoFiZXgsQA24JV6FdKIidQ+ZqxOouhWwdE+qJlALbkS5ScB43ZTjPK+xUZZhlaO/NjfCt5h4IKUfw==",
+			"requires": {
+				"postcss-selector-parser": "^6.0.13"
+			}
+		},
+		"postcss-double-position-gradients": {
+			"version": "5.0.3",
+			"resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-5.0.3.tgz",
+			"integrity": "sha512-QKYpwmaSm6HcdS0ndAuWSNNMv78R1oSySoh3mYBmctHWr2KWcwPJVakdOyU4lvFVW0GRu9wfIQwGeM4p3xU9ow==",
+			"requires": {
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3",
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"postcss-focus-visible": {
+			"version": "9.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-9.0.1.tgz",
+			"integrity": "sha512-N2VQ5uPz3Z9ZcqI5tmeholn4d+1H14fKXszpjogZIrFbhaq0zNAtq8sAnw6VLiqGbL8YBzsnu7K9bBkTqaRimQ==",
+			"requires": {
+				"postcss-selector-parser": "^6.0.13"
+			}
+		},
+		"postcss-focus-within": {
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-8.0.1.tgz",
+			"integrity": "sha512-NFU3xcY/xwNaapVb+1uJ4n23XImoC86JNwkY/uduytSl2s9Ekc2EpzmRR63+ExitnW3Mab3Fba/wRPCT5oDILA==",
+			"requires": {
+				"postcss-selector-parser": "^6.0.13"
+			}
+		},
+		"postcss-font-variant": {
+			"version": "5.0.0",
+			"resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz",
+			"integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==",
+			"requires": {}
+		},
+		"postcss-gap-properties": {
+			"version": "5.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-5.0.1.tgz",
+			"integrity": "sha512-k2z9Cnngc24c0KF4MtMuDdToROYqGMMUQGcE6V0odwjHyOHtaDBlLeRBV70y9/vF7KIbShrTRZ70JjsI1BZyWw==",
+			"requires": {}
+		},
+		"postcss-image-set-function": {
+			"version": "6.0.2",
+			"resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-6.0.2.tgz",
+			"integrity": "sha512-/O1xwqpJiz/apxGQi7UUfv1xUcorvkHZfvCYHPpRxxZj2WvjD0rg0+/+c+u5/Do5CpUg3XvfYxMrhcnjW1ArDQ==",
+			"requires": {
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"postcss-lab-function": {
+			"version": "6.0.8",
+			"resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-6.0.8.tgz",
+			"integrity": "sha512-agYs7R9Z5gnX837fCkH8TEQIHdhyDsMPPnpuuENt/dxoDVAykBaqbdxIN4DagOj+ZQo20iRNNJeY3MsFcdI6Sg==",
+			"requires": {
+				"@csstools/css-color-parser": "^1.5.0",
+				"@csstools/css-parser-algorithms": "^2.4.0",
+				"@csstools/css-tokenizer": "^2.2.2",
+				"@csstools/postcss-progressive-custom-properties": "^3.0.3"
+			}
+		},
+		"postcss-logical": {
+			"version": "7.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-7.0.1.tgz",
+			"integrity": "sha512-8GwUQZE0ri0K0HJHkDv87XOLC8DE0msc+HoWLeKdtjDZEwpZ5xuK3QdV6FhmHSQW40LPkg43QzvATRAI3LsRkg==",
+			"requires": {
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"postcss-nesting": {
+			"version": "12.0.2",
+			"resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-12.0.2.tgz",
+			"integrity": "sha512-63PpJHSeNs93S3ZUIyi+7kKx4JqOIEJ6QYtG3x+0qA4J03+4n0iwsyA1GAHyWxsHYljQS4/4ZK1o2sMi70b5wQ==",
+			"requires": {
+				"@csstools/selector-specificity": "^3.0.1",
+				"postcss-selector-parser": "^6.0.13"
+			}
+		},
+		"postcss-opacity-percentage": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-2.0.0.tgz",
+			"integrity": "sha512-lyDrCOtntq5Y1JZpBFzIWm2wG9kbEdujpNt4NLannF+J9c8CgFIzPa80YQfdza+Y+yFfzbYj/rfoOsYsooUWTQ==",
+			"requires": {}
+		},
+		"postcss-overflow-shorthand": {
+			"version": "5.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-5.0.1.tgz",
+			"integrity": "sha512-XzjBYKLd1t6vHsaokMV9URBt2EwC9a7nDhpQpjoPk2HRTSQfokPfyAS/Q7AOrzUu6q+vp/GnrDBGuj/FCaRqrQ==",
+			"requires": {
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"postcss-page-break": {
+			"version": "3.0.4",
+			"resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz",
+			"integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==",
+			"requires": {}
+		},
+		"postcss-place": {
+			"version": "9.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-9.0.1.tgz",
+			"integrity": "sha512-JfL+paQOgRQRMoYFc2f73pGuG/Aw3tt4vYMR6UA3cWVMxivviPTnMFnFTczUJOA4K2Zga6xgQVE+PcLs64WC8Q==",
+			"requires": {
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"postcss-preset-env": {
+			"version": "9.3.0",
+			"resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-9.3.0.tgz",
+			"integrity": "sha512-ycw6doPrqV6QxDCtgiyGDef61bEfiSc59HGM4gOw/wxQxmKnhuEery61oOC/5ViENz/ycpRsuhTexs1kUBTvVw==",
+			"requires": {
+				"@csstools/postcss-cascade-layers": "^4.0.1",
+				"@csstools/postcss-color-function": "^3.0.7",
+				"@csstools/postcss-color-mix-function": "^2.0.7",
+				"@csstools/postcss-exponential-functions": "^1.0.1",
+				"@csstools/postcss-font-format-keywords": "^3.0.0",
+				"@csstools/postcss-gamut-mapping": "^1.0.0",
+				"@csstools/postcss-gradients-interpolation-method": "^4.0.7",
+				"@csstools/postcss-hwb-function": "^3.0.6",
+				"@csstools/postcss-ic-unit": "^3.0.2",
+				"@csstools/postcss-initial": "^1.0.0",
+				"@csstools/postcss-is-pseudo-class": "^4.0.3",
+				"@csstools/postcss-logical-float-and-clear": "^2.0.0",
+				"@csstools/postcss-logical-overflow": "^1.0.0",
+				"@csstools/postcss-logical-overscroll-behavior": "^1.0.0",
+				"@csstools/postcss-logical-resize": "^2.0.0",
+				"@csstools/postcss-logical-viewport-units": "^2.0.3",
+				"@csstools/postcss-media-minmax": "^1.1.0",
+				"@csstools/postcss-media-queries-aspect-ratio-number-values": "^2.0.3",
+				"@csstools/postcss-nested-calc": "^3.0.0",
+				"@csstools/postcss-normalize-display-values": "^3.0.1",
+				"@csstools/postcss-oklab-function": "^3.0.7",
+				"@csstools/postcss-progressive-custom-properties": "^3.0.2",
+				"@csstools/postcss-relative-color-syntax": "^2.0.7",
+				"@csstools/postcss-scope-pseudo-class": "^3.0.0",
+				"@csstools/postcss-stepped-value-functions": "^3.0.2",
+				"@csstools/postcss-text-decoration-shorthand": "^3.0.3",
+				"@csstools/postcss-trigonometric-functions": "^3.0.2",
+				"@csstools/postcss-unset-value": "^3.0.0",
+				"autoprefixer": "^10.4.16",
+				"browserslist": "^4.22.1",
+				"css-blank-pseudo": "^6.0.0",
+				"css-has-pseudo": "^6.0.0",
+				"css-prefers-color-scheme": "^9.0.0",
+				"cssdb": "^7.9.0",
+				"postcss-attribute-case-insensitive": "^6.0.2",
+				"postcss-clamp": "^4.1.0",
+				"postcss-color-functional-notation": "^6.0.2",
+				"postcss-color-hex-alpha": "^9.0.2",
+				"postcss-color-rebeccapurple": "^9.0.1",
+				"postcss-custom-media": "^10.0.2",
+				"postcss-custom-properties": "^13.3.2",
+				"postcss-custom-selectors": "^7.1.6",
+				"postcss-dir-pseudo-class": "^8.0.0",
+				"postcss-double-position-gradients": "^5.0.2",
+				"postcss-focus-visible": "^9.0.0",
+				"postcss-focus-within": "^8.0.0",
+				"postcss-font-variant": "^5.0.0",
+				"postcss-gap-properties": "^5.0.0",
+				"postcss-image-set-function": "^6.0.1",
+				"postcss-lab-function": "^6.0.7",
+				"postcss-logical": "^7.0.0",
+				"postcss-nesting": "^12.0.1",
+				"postcss-opacity-percentage": "^2.0.0",
+				"postcss-overflow-shorthand": "^5.0.0",
+				"postcss-page-break": "^3.0.4",
+				"postcss-place": "^9.0.0",
+				"postcss-pseudo-class-any-link": "^9.0.0",
+				"postcss-replace-overflow-wrap": "^4.0.0",
+				"postcss-selector-not": "^7.0.1",
+				"postcss-value-parser": "^4.2.0"
+			}
+		},
+		"postcss-pseudo-class-any-link": {
+			"version": "9.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-9.0.1.tgz",
+			"integrity": "sha512-cKYGGZ9yzUZi+dZd7XT2M8iSDfo+T2Ctbpiizf89uBTBfIpZpjvTavzIJXpCReMVXSKROqzpxClNu6fz4DHM0Q==",
+			"requires": {
+				"postcss-selector-parser": "^6.0.13"
+			}
+		},
+		"postcss-replace-overflow-wrap": {
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz",
+			"integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==",
+			"requires": {}
+		},
+		"postcss-selector-not": {
+			"version": "7.0.1",
+			"resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-7.0.1.tgz",
+			"integrity": "sha512-1zT5C27b/zeJhchN7fP0kBr16Cc61mu7Si9uWWLoA3Px/D9tIJPKchJCkUH3tPO5D0pCFmGeApAv8XpXBQJ8SQ==",
+			"requires": {
+				"postcss-selector-parser": "^6.0.10"
+			}
+		},
+		"postcss-selector-parser": {
+			"version": "6.0.15",
+			"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz",
+			"integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==",
+			"requires": {
+				"cssesc": "^3.0.0",
+				"util-deprecate": "^1.0.2"
+			}
+		},
+		"postcss-value-parser": {
+			"version": "4.2.0",
+			"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+			"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
+		},
 		"prebuild-install": {
 			"version": "7.1.1",
 			"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
@@ -9617,6 +13541,15 @@
 				"unified": "^11.0.0"
 			}
 		},
+		"remark-mdx": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.0.tgz",
+			"integrity": "sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==",
+			"requires": {
+				"mdast-util-mdx": "^3.0.0",
+				"micromark-extension-mdxjs": "^3.0.0"
+			}
+		},
 		"remark-parse": {
 			"version": "11.0.0",
 			"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
@@ -10015,23 +13948,27 @@
 			"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
 		},
 		"rollup": {
-			"version": "4.9.1",
-			"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.1.tgz",
-			"integrity": "sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==",
+			"version": "4.18.0",
+			"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz",
+			"integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==",
 			"requires": {
-				"@rollup/rollup-android-arm-eabi": "4.9.1",
-				"@rollup/rollup-android-arm64": "4.9.1",
-				"@rollup/rollup-darwin-arm64": "4.9.1",
-				"@rollup/rollup-darwin-x64": "4.9.1",
-				"@rollup/rollup-linux-arm-gnueabihf": "4.9.1",
-				"@rollup/rollup-linux-arm64-gnu": "4.9.1",
-				"@rollup/rollup-linux-arm64-musl": "4.9.1",
-				"@rollup/rollup-linux-riscv64-gnu": "4.9.1",
-				"@rollup/rollup-linux-x64-gnu": "4.9.1",
-				"@rollup/rollup-linux-x64-musl": "4.9.1",
-				"@rollup/rollup-win32-arm64-msvc": "4.9.1",
-				"@rollup/rollup-win32-ia32-msvc": "4.9.1",
-				"@rollup/rollup-win32-x64-msvc": "4.9.1",
+				"@rollup/rollup-android-arm-eabi": "4.18.0",
+				"@rollup/rollup-android-arm64": "4.18.0",
+				"@rollup/rollup-darwin-arm64": "4.18.0",
+				"@rollup/rollup-darwin-x64": "4.18.0",
+				"@rollup/rollup-linux-arm-gnueabihf": "4.18.0",
+				"@rollup/rollup-linux-arm-musleabihf": "4.18.0",
+				"@rollup/rollup-linux-arm64-gnu": "4.18.0",
+				"@rollup/rollup-linux-arm64-musl": "4.18.0",
+				"@rollup/rollup-linux-powerpc64le-gnu": "4.18.0",
+				"@rollup/rollup-linux-riscv64-gnu": "4.18.0",
+				"@rollup/rollup-linux-s390x-gnu": "4.18.0",
+				"@rollup/rollup-linux-x64-gnu": "4.18.0",
+				"@rollup/rollup-linux-x64-musl": "4.18.0",
+				"@rollup/rollup-win32-arm64-msvc": "4.18.0",
+				"@rollup/rollup-win32-ia32-msvc": "4.18.0",
+				"@rollup/rollup-win32-x64-msvc": "4.18.0",
+				"@types/estree": "1.0.5",
 				"fsevents": "~2.3.2"
 			}
 		},
@@ -10132,6 +14069,11 @@
 				"hast-util-to-html": "^9.0.0"
 			}
 		},
+		"shikiji-core": {
+			"version": "0.9.19",
+			"resolved": "https://registry.npmjs.org/shikiji-core/-/shikiji-core-0.9.19.tgz",
+			"integrity": "sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw=="
+		},
 		"signal-exit": {
 			"version": "4.1.0",
 			"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
@@ -10186,10 +14128,15 @@
 				}
 			}
 		},
+		"source-map": {
+			"version": "0.7.4",
+			"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+			"integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="
+		},
 		"source-map-js": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
-			"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
+			"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg=="
 		},
 		"space-separated-tokens": {
 			"version": "2.0.2",
@@ -10298,6 +14245,14 @@
 			"integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
 			"optional": true
 		},
+		"style-to-object": {
+			"version": "0.4.4",
+			"resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz",
+			"integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==",
+			"requires": {
+				"inline-style-parser": "0.1.1"
+			}
+		},
 		"supports-color": {
 			"version": "5.5.0",
 			"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -10445,6 +14400,23 @@
 				"@types/unist": "^3.0.0"
 			}
 		},
+		"unist-util-position-from-estree": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz",
+			"integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==",
+			"requires": {
+				"@types/unist": "^3.0.0"
+			}
+		},
+		"unist-util-remove-position": {
+			"version": "5.0.0",
+			"resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz",
+			"integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==",
+			"requires": {
+				"@types/unist": "^3.0.0",
+				"unist-util-visit": "^5.0.0"
+			}
+		},
 		"unist-util-stringify-position": {
 			"version": "4.0.0",
 			"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
@@ -10530,14 +14502,184 @@
 			}
 		},
 		"vite": {
-			"version": "5.0.10",
-			"resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz",
-			"integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==",
+			"version": "5.3.1",
+			"resolved": "https://registry.npmjs.org/vite/-/vite-5.3.1.tgz",
+			"integrity": "sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==",
 			"requires": {
-				"esbuild": "^0.19.3",
+				"esbuild": "^0.21.3",
 				"fsevents": "~2.3.3",
-				"postcss": "^8.4.32",
-				"rollup": "^4.2.0"
+				"postcss": "^8.4.38",
+				"rollup": "^4.13.0"
+			},
+			"dependencies": {
+				"@esbuild/aix-ppc64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
+					"integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
+					"optional": true
+				},
+				"@esbuild/android-arm": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
+					"integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
+					"optional": true
+				},
+				"@esbuild/android-arm64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
+					"integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
+					"optional": true
+				},
+				"@esbuild/android-x64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
+					"integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
+					"optional": true
+				},
+				"@esbuild/darwin-arm64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+					"integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
+					"optional": true
+				},
+				"@esbuild/darwin-x64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
+					"integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
+					"optional": true
+				},
+				"@esbuild/freebsd-arm64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
+					"integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
+					"optional": true
+				},
+				"@esbuild/freebsd-x64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
+					"integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
+					"optional": true
+				},
+				"@esbuild/linux-arm": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
+					"integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
+					"optional": true
+				},
+				"@esbuild/linux-arm64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
+					"integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
+					"optional": true
+				},
+				"@esbuild/linux-ia32": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
+					"integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
+					"optional": true
+				},
+				"@esbuild/linux-loong64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
+					"integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
+					"optional": true
+				},
+				"@esbuild/linux-mips64el": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
+					"integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
+					"optional": true
+				},
+				"@esbuild/linux-ppc64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
+					"integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
+					"optional": true
+				},
+				"@esbuild/linux-riscv64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
+					"integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
+					"optional": true
+				},
+				"@esbuild/linux-s390x": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
+					"integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
+					"optional": true
+				},
+				"@esbuild/linux-x64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
+					"integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
+					"optional": true
+				},
+				"@esbuild/netbsd-x64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
+					"integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
+					"optional": true
+				},
+				"@esbuild/openbsd-x64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
+					"integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
+					"optional": true
+				},
+				"@esbuild/sunos-x64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
+					"integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
+					"optional": true
+				},
+				"@esbuild/win32-arm64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+					"integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
+					"optional": true
+				},
+				"@esbuild/win32-ia32": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
+					"integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
+					"optional": true
+				},
+				"@esbuild/win32-x64": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
+					"integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
+					"optional": true
+				},
+				"esbuild": {
+					"version": "0.21.5",
+					"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
+					"integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
+					"requires": {
+						"@esbuild/aix-ppc64": "0.21.5",
+						"@esbuild/android-arm": "0.21.5",
+						"@esbuild/android-arm64": "0.21.5",
+						"@esbuild/android-x64": "0.21.5",
+						"@esbuild/darwin-arm64": "0.21.5",
+						"@esbuild/darwin-x64": "0.21.5",
+						"@esbuild/freebsd-arm64": "0.21.5",
+						"@esbuild/freebsd-x64": "0.21.5",
+						"@esbuild/linux-arm": "0.21.5",
+						"@esbuild/linux-arm64": "0.21.5",
+						"@esbuild/linux-ia32": "0.21.5",
+						"@esbuild/linux-loong64": "0.21.5",
+						"@esbuild/linux-mips64el": "0.21.5",
+						"@esbuild/linux-ppc64": "0.21.5",
+						"@esbuild/linux-riscv64": "0.21.5",
+						"@esbuild/linux-s390x": "0.21.5",
+						"@esbuild/linux-x64": "0.21.5",
+						"@esbuild/netbsd-x64": "0.21.5",
+						"@esbuild/openbsd-x64": "0.21.5",
+						"@esbuild/sunos-x64": "0.21.5",
+						"@esbuild/win32-arm64": "0.21.5",
+						"@esbuild/win32-ia32": "0.21.5",
+						"@esbuild/win32-x64": "0.21.5"
+					}
+				}
 			}
 		},
 		"vitefu": {
diff --git a/package.json b/package.json
index 41def1f..9efae23 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
 	"name": "@firq/fgosite",
 	"type": "module",
-	"version": "0.1.11",
+	"version": "0.1.27",
 	"private": true,
 	"scripts": {
 		"dev": "astro dev",
@@ -11,10 +11,18 @@
 		"astro": "astro"
 	},
 	"dependencies": {
+		"@astro-community/astro-embed-youtube": "^0.4.3",
 		"@astrojs/check": "^0.3.3",
+		"@astrojs/mdx": "^2.0.3",
 		"@astrojs/sitemap": "^3.0.3",
-		"astro": "^4.0.7",
-		"iconoir": "^6.1.0",
+		"astro": "^4.2.1",
+		"autoprefixer": "^10.4.16",
+		"iconoir": "^7.2.0",
+		"postcss-preset-env": "^9.3.0",
 		"typescript": "^5.3.3"
-	}
+	},
+	"browserslist": [
+		"last 2 versions",
+		">0.5% and not dead"
+	]
 }
diff --git a/postcss.config.cjs b/postcss.config.cjs
new file mode 100644
index 0000000..5fd8746
--- /dev/null
+++ b/postcss.config.cjs
@@ -0,0 +1,13 @@
+module.exports = {
+  plugins: {
+    "postcss-preset-env": {
+      autoprefixer: { flexbox: "no-2009" },
+      stage: 2,
+      features: {
+        "custom-properties": false,
+        "custom-media-queries": true,
+        "nesting-rules": true
+      }
+    }
+  }
+};
\ No newline at end of file
diff --git a/serve.json b/serve.json
index 6f9caef..06f578d 100644
--- a/serve.json
+++ b/serve.json
@@ -14,14 +14,14 @@
       "source" : "**/*.css",
       "headers" : [{
         "key" : "Cache-Control",
-        "value" : "max-age=86400"
+        "value" : "max-age=31536000"
       }]
     },
     {
       "source" : "**/*.@(jpg|jpeg|gif|png|webp|svg)",
       "headers" : [{
         "key" : "Cache-Control",
-        "value" : "max-age=86400"
+        "value" : "max-age=31536000"
       }]
     }
   ]
diff --git a/src/assets/ce/2030.png b/src/assets/ce/2030.png
new file mode 100644
index 0000000..e9fae8f
Binary files /dev/null and b/src/assets/ce/2030.png differ
diff --git a/src/assets/ce/2030.webp b/src/assets/ce/2030.webp
deleted file mode 100644
index 42f9f02..0000000
Binary files a/src/assets/ce/2030.webp and /dev/null differ
diff --git a/src/assets/ce/500.png b/src/assets/ce/500.png
new file mode 100644
index 0000000..9f5623c
Binary files /dev/null and b/src/assets/ce/500.png differ
diff --git a/src/assets/ce/500.webp b/src/assets/ce/500.webp
deleted file mode 100644
index 9f030df..0000000
Binary files a/src/assets/ce/500.webp and /dev/null differ
diff --git a/src/assets/ce/bg.webp b/src/assets/ce/bg.webp
deleted file mode 100644
index 133183c..0000000
Binary files a/src/assets/ce/bg.webp and /dev/null differ
diff --git a/src/assets/ce/black_grail.png b/src/assets/ce/black_grail.png
new file mode 100644
index 0000000..990ba68
Binary files /dev/null and b/src/assets/ce/black_grail.png differ
diff --git a/src/assets/ce/bond-ce/bride.png b/src/assets/ce/bond-ce/bride.png
new file mode 100644
index 0000000..06e7ac1
Binary files /dev/null and b/src/assets/ce/bond-ce/bride.png differ
diff --git a/src/assets/ce/bond-ce/bride.webp b/src/assets/ce/bond-ce/bride.webp
deleted file mode 100644
index 7642c43..0000000
Binary files a/src/assets/ce/bond-ce/bride.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/castoria.png b/src/assets/ce/bond-ce/castoria.png
new file mode 100644
index 0000000..2b2875e
Binary files /dev/null and b/src/assets/ce/bond-ce/castoria.png differ
diff --git a/src/assets/ce/bond-ce/castoria.webp b/src/assets/ce/bond-ce/castoria.webp
deleted file mode 100644
index fbe04b1..0000000
Binary files a/src/assets/ce/bond-ce/castoria.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/chiron.png b/src/assets/ce/bond-ce/chiron.png
new file mode 100644
index 0000000..4380a67
Binary files /dev/null and b/src/assets/ce/bond-ce/chiron.png differ
diff --git a/src/assets/ce/bond-ce/chiron.webp b/src/assets/ce/bond-ce/chiron.webp
deleted file mode 100644
index 47a3a41..0000000
Binary files a/src/assets/ce/bond-ce/chiron.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/crane.png b/src/assets/ce/bond-ce/crane.png
new file mode 100644
index 0000000..f90cc92
Binary files /dev/null and b/src/assets/ce/bond-ce/crane.png differ
diff --git a/src/assets/ce/bond-ce/crane.webp b/src/assets/ce/bond-ce/crane.webp
deleted file mode 100644
index 75db105..0000000
Binary files a/src/assets/ce/bond-ce/crane.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/douman.png b/src/assets/ce/bond-ce/douman.png
new file mode 100644
index 0000000..b44f694
Binary files /dev/null and b/src/assets/ce/bond-ce/douman.png differ
diff --git a/src/assets/ce/bond-ce/douman.webp b/src/assets/ce/bond-ce/douman.webp
deleted file mode 100644
index bc2c1b0..0000000
Binary files a/src/assets/ce/bond-ce/douman.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/gogh.png b/src/assets/ce/bond-ce/gogh.png
new file mode 100644
index 0000000..e6f5f61
Binary files /dev/null and b/src/assets/ce/bond-ce/gogh.png differ
diff --git a/src/assets/ce/bond-ce/gogh.webp b/src/assets/ce/bond-ce/gogh.webp
deleted file mode 100644
index 0167200..0000000
Binary files a/src/assets/ce/bond-ce/gogh.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/himiko.png b/src/assets/ce/bond-ce/himiko.png
new file mode 100644
index 0000000..1d5dcc2
Binary files /dev/null and b/src/assets/ce/bond-ce/himiko.png differ
diff --git a/src/assets/ce/bond-ce/himiko.webp b/src/assets/ce/bond-ce/himiko.webp
deleted file mode 100644
index e904adc..0000000
Binary files a/src/assets/ce/bond-ce/himiko.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/ibaraki.png b/src/assets/ce/bond-ce/ibaraki.png
new file mode 100644
index 0000000..805175f
Binary files /dev/null and b/src/assets/ce/bond-ce/ibaraki.png differ
diff --git a/src/assets/ce/bond-ce/ibaraki.webp b/src/assets/ce/bond-ce/ibaraki.webp
deleted file mode 100644
index 3d5637e..0000000
Binary files a/src/assets/ce/bond-ce/ibaraki.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/jane.png b/src/assets/ce/bond-ce/jane.png
new file mode 100644
index 0000000..8a54d14
Binary files /dev/null and b/src/assets/ce/bond-ce/jane.png differ
diff --git a/src/assets/ce/bond-ce/jane.webp b/src/assets/ce/bond-ce/jane.webp
deleted file mode 100644
index 921ca9b..0000000
Binary files a/src/assets/ce/bond-ce/jane.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/koyanlight.png b/src/assets/ce/bond-ce/koyanlight.png
new file mode 100644
index 0000000..b5a9e61
Binary files /dev/null and b/src/assets/ce/bond-ce/koyanlight.png differ
diff --git a/src/assets/ce/bond-ce/koyanlight.webp b/src/assets/ce/bond-ce/koyanlight.webp
deleted file mode 100644
index 1eb3393..0000000
Binary files a/src/assets/ce/bond-ce/koyanlight.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/liz.png b/src/assets/ce/bond-ce/liz.png
new file mode 100644
index 0000000..495d708
Binary files /dev/null and b/src/assets/ce/bond-ce/liz.png differ
diff --git a/src/assets/ce/bond-ce/liz.webp b/src/assets/ce/bond-ce/liz.webp
deleted file mode 100644
index e91f5ef..0000000
Binary files a/src/assets/ce/bond-ce/liz.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/merlin.png b/src/assets/ce/bond-ce/merlin.png
new file mode 100644
index 0000000..d3f492f
Binary files /dev/null and b/src/assets/ce/bond-ce/merlin.png differ
diff --git a/src/assets/ce/bond-ce/merlin.webp b/src/assets/ce/bond-ce/merlin.webp
deleted file mode 100644
index 363713a..0000000
Binary files a/src/assets/ce/bond-ce/merlin.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/oberon.png b/src/assets/ce/bond-ce/oberon.png
new file mode 100644
index 0000000..b836b58
Binary files /dev/null and b/src/assets/ce/bond-ce/oberon.png differ
diff --git a/src/assets/ce/bond-ce/oberon.webp b/src/assets/ce/bond-ce/oberon.webp
deleted file mode 100644
index 24d9f79..0000000
Binary files a/src/assets/ce/bond-ce/oberon.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/reines.png b/src/assets/ce/bond-ce/reines.png
new file mode 100644
index 0000000..8cdea85
Binary files /dev/null and b/src/assets/ce/bond-ce/reines.png differ
diff --git a/src/assets/ce/bond-ce/reines.webp b/src/assets/ce/bond-ce/reines.webp
deleted file mode 100644
index b9f4032..0000000
Binary files a/src/assets/ce/bond-ce/reines.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/santagale.png b/src/assets/ce/bond-ce/santagale.png
new file mode 100644
index 0000000..0163273
Binary files /dev/null and b/src/assets/ce/bond-ce/santagale.png differ
diff --git a/src/assets/ce/bond-ce/santagale.webp b/src/assets/ce/bond-ce/santagale.webp
deleted file mode 100644
index c55b578..0000000
Binary files a/src/assets/ce/bond-ce/santagale.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/scathach.png b/src/assets/ce/bond-ce/scathach.png
new file mode 100644
index 0000000..5238bed
Binary files /dev/null and b/src/assets/ce/bond-ce/scathach.png differ
diff --git a/src/assets/ce/bond-ce/sherlock.png b/src/assets/ce/bond-ce/sherlock.png
new file mode 100644
index 0000000..cfe78fa
Binary files /dev/null and b/src/assets/ce/bond-ce/sherlock.png differ
diff --git a/src/assets/ce/bond-ce/skadi.png b/src/assets/ce/bond-ce/skadi.png
new file mode 100644
index 0000000..a2d445d
Binary files /dev/null and b/src/assets/ce/bond-ce/skadi.png differ
diff --git a/src/assets/ce/bond-ce/skadi.webp b/src/assets/ce/bond-ce/skadi.webp
deleted file mode 100644
index 4eb28de..0000000
Binary files a/src/assets/ce/bond-ce/skadi.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/taigong.png b/src/assets/ce/bond-ce/taigong.png
new file mode 100644
index 0000000..11820a3
Binary files /dev/null and b/src/assets/ce/bond-ce/taigong.png differ
diff --git a/src/assets/ce/bond-ce/tamamo.png b/src/assets/ce/bond-ce/tamamo.png
new file mode 100644
index 0000000..03cac41
Binary files /dev/null and b/src/assets/ce/bond-ce/tamamo.png differ
diff --git a/src/assets/ce/bond-ce/tamamo.webp b/src/assets/ce/bond-ce/tamamo.webp
deleted file mode 100644
index 07ea177..0000000
Binary files a/src/assets/ce/bond-ce/tamamo.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/waver.png b/src/assets/ce/bond-ce/waver.png
new file mode 100644
index 0000000..aafd1da
Binary files /dev/null and b/src/assets/ce/bond-ce/waver.png differ
diff --git a/src/assets/ce/bond-ce/waver.webp b/src/assets/ce/bond-ce/waver.webp
deleted file mode 100644
index d2f31ae..0000000
Binary files a/src/assets/ce/bond-ce/waver.webp and /dev/null differ
diff --git a/src/assets/ce/bond-ce/wu.png b/src/assets/ce/bond-ce/wu.png
new file mode 100644
index 0000000..cfc46a5
Binary files /dev/null and b/src/assets/ce/bond-ce/wu.png differ
diff --git a/src/assets/ce/bond-ce/wu.webp b/src/assets/ce/bond-ce/wu.webp
deleted file mode 100644
index 114a7e1..0000000
Binary files a/src/assets/ce/bond-ce/wu.webp and /dev/null differ
diff --git a/src/assets/ce/db.webp b/src/assets/ce/db.webp
deleted file mode 100644
index d702ac9..0000000
Binary files a/src/assets/ce/db.webp and /dev/null differ
diff --git a/src/assets/ce/devilish_bodhisattva.png b/src/assets/ce/devilish_bodhisattva.png
new file mode 100644
index 0000000..e466954
Binary files /dev/null and b/src/assets/ce/devilish_bodhisattva.png differ
diff --git a/src/assets/ce/kaleidoscope.png b/src/assets/ce/kaleidoscope.png
new file mode 100644
index 0000000..351d722
Binary files /dev/null and b/src/assets/ce/kaleidoscope.png differ
diff --git a/src/assets/ce/kaleidoscope.webp b/src/assets/ce/kaleidoscope.webp
deleted file mode 100644
index ecf2659..0000000
Binary files a/src/assets/ce/kaleidoscope.webp and /dev/null differ
diff --git a/src/assets/ce/maidens_teachings.png b/src/assets/ce/maidens_teachings.png
new file mode 100644
index 0000000..9d520a5
Binary files /dev/null and b/src/assets/ce/maidens_teachings.png differ
diff --git a/src/assets/ce/maidensteachings.webp b/src/assets/ce/maidensteachings.webp
deleted file mode 100644
index de565fb..0000000
Binary files a/src/assets/ce/maidensteachings.webp and /dev/null differ
diff --git a/src/assets/ce/merciless_one.png b/src/assets/ce/merciless_one.png
new file mode 100644
index 0000000..5645c4b
Binary files /dev/null and b/src/assets/ce/merciless_one.png differ
diff --git a/src/assets/ce/merciless_one.webp b/src/assets/ce/merciless_one.webp
deleted file mode 100644
index 6122a5e..0000000
Binary files a/src/assets/ce/merciless_one.webp and /dev/null differ
diff --git a/src/assets/ce/mlb.png b/src/assets/ce/mlb.png
new file mode 100644
index 0000000..19e92b5
Binary files /dev/null and b/src/assets/ce/mlb.png differ
diff --git a/src/assets/ce/outrage.png b/src/assets/ce/outrage.png
new file mode 100644
index 0000000..2cf3b1a
Binary files /dev/null and b/src/assets/ce/outrage.png differ
diff --git a/src/assets/ce/outrage.webp b/src/assets/ce/outrage.webp
deleted file mode 100644
index f3a3bea..0000000
Binary files a/src/assets/ce/outrage.webp and /dev/null differ
diff --git a/src/assets/ce/ox-demon.png b/src/assets/ce/ox-demon.png
new file mode 100644
index 0000000..df903c0
Binary files /dev/null and b/src/assets/ce/ox-demon.png differ
diff --git a/src/assets/ce/oxdemon.webp b/src/assets/ce/oxdemon.webp
deleted file mode 100644
index 11c1301..0000000
Binary files a/src/assets/ce/oxdemon.webp and /dev/null differ
diff --git a/src/assets/ce/prisma.webp b/src/assets/ce/prisma.webp
deleted file mode 100644
index 482a32d..0000000
Binary files a/src/assets/ce/prisma.webp and /dev/null differ
diff --git a/src/assets/ce/prisma_cosmos.png b/src/assets/ce/prisma_cosmos.png
new file mode 100644
index 0000000..7604f00
Binary files /dev/null and b/src/assets/ce/prisma_cosmos.png differ
diff --git a/src/assets/ce/vessel.png b/src/assets/ce/vessel.png
new file mode 100644
index 0000000..8b267b4
Binary files /dev/null and b/src/assets/ce/vessel.png differ
diff --git a/src/assets/ce/vessel.webp b/src/assets/ce/vessel.webp
deleted file mode 100644
index 9272769..0000000
Binary files a/src/assets/ce/vessel.webp and /dev/null differ
diff --git a/src/assets/favourites/scathach.png b/src/assets/favourites/scathach.png
new file mode 100644
index 0000000..e2325f7
Binary files /dev/null and b/src/assets/favourites/scathach.png differ
diff --git a/src/assets/favourites/scathach.webp b/src/assets/favourites/scathach.webp
deleted file mode 100644
index 707b0f8..0000000
Binary files a/src/assets/favourites/scathach.webp and /dev/null differ
diff --git a/src/assets/favourites/skadi.png b/src/assets/favourites/skadi.png
new file mode 100644
index 0000000..1585b7f
Binary files /dev/null and b/src/assets/favourites/skadi.png differ
diff --git a/src/assets/favourites/skadi.webp b/src/assets/favourites/skadi.webp
deleted file mode 100644
index 1ba9410..0000000
Binary files a/src/assets/favourites/skadi.webp and /dev/null differ
diff --git a/src/assets/okita.png b/src/assets/okita.png
index f82cbaf..47c739d 100644
Binary files a/src/assets/okita.png and b/src/assets/okita.png differ
diff --git a/src/assets/servant/bride_03.png b/src/assets/servant/bride_03.png
new file mode 100644
index 0000000..78ac024
Binary files /dev/null and b/src/assets/servant/bride_03.png differ
diff --git a/src/assets/servant/bride_03.webp b/src/assets/servant/bride_03.webp
deleted file mode 100644
index d152a3f..0000000
Binary files a/src/assets/servant/bride_03.webp and /dev/null differ
diff --git a/src/assets/servant/castoria_01.png b/src/assets/servant/castoria_01.png
new file mode 100644
index 0000000..0e5967b
Binary files /dev/null and b/src/assets/servant/castoria_01.png differ
diff --git a/src/assets/servant/castoria_01.webp b/src/assets/servant/castoria_01.webp
deleted file mode 100644
index 17d3452..0000000
Binary files a/src/assets/servant/castoria_01.webp and /dev/null differ
diff --git a/src/assets/servant/castoria_02.png b/src/assets/servant/castoria_02.png
new file mode 100644
index 0000000..8ac5d39
Binary files /dev/null and b/src/assets/servant/castoria_02.png differ
diff --git a/src/assets/servant/castoria_02.webp b/src/assets/servant/castoria_02.webp
deleted file mode 100644
index f7dd16b..0000000
Binary files a/src/assets/servant/castoria_02.webp and /dev/null differ
diff --git a/src/assets/servant/chiron_01.png b/src/assets/servant/chiron_01.png
new file mode 100644
index 0000000..ee9ae6a
Binary files /dev/null and b/src/assets/servant/chiron_01.png differ
diff --git a/src/assets/servant/chiron_01.webp b/src/assets/servant/chiron_01.webp
deleted file mode 100644
index a129689..0000000
Binary files a/src/assets/servant/chiron_01.webp and /dev/null differ
diff --git a/src/assets/servant/crane_01.png b/src/assets/servant/crane_01.png
new file mode 100644
index 0000000..24473f3
Binary files /dev/null and b/src/assets/servant/crane_01.png differ
diff --git a/src/assets/servant/crane_01.webp b/src/assets/servant/crane_01.webp
deleted file mode 100644
index 2a278f2..0000000
Binary files a/src/assets/servant/crane_01.webp and /dev/null differ
diff --git a/src/assets/servant/douman_01.png b/src/assets/servant/douman_01.png
new file mode 100644
index 0000000..53cdeeb
Binary files /dev/null and b/src/assets/servant/douman_01.png differ
diff --git a/src/assets/servant/douman_01.webp b/src/assets/servant/douman_01.webp
deleted file mode 100644
index 6268d67..0000000
Binary files a/src/assets/servant/douman_01.webp and /dev/null differ
diff --git a/src/assets/servant/gogh_01.png b/src/assets/servant/gogh_01.png
new file mode 100644
index 0000000..db0cc6c
Binary files /dev/null and b/src/assets/servant/gogh_01.png differ
diff --git a/src/assets/servant/gogh_01.webp b/src/assets/servant/gogh_01.webp
deleted file mode 100644
index 2a88189..0000000
Binary files a/src/assets/servant/gogh_01.webp and /dev/null differ
diff --git a/src/assets/servant/himiko_03.png b/src/assets/servant/himiko_03.png
new file mode 100644
index 0000000..e9a73df
Binary files /dev/null and b/src/assets/servant/himiko_03.png differ
diff --git a/src/assets/servant/himiko_03.webp b/src/assets/servant/himiko_03.webp
deleted file mode 100644
index 94f3699..0000000
Binary files a/src/assets/servant/himiko_03.webp and /dev/null differ
diff --git a/src/assets/servant/ibaraki_02.png b/src/assets/servant/ibaraki_02.png
new file mode 100644
index 0000000..01e43ab
Binary files /dev/null and b/src/assets/servant/ibaraki_02.png differ
diff --git a/src/assets/servant/ibaraki_02.webp b/src/assets/servant/ibaraki_02.webp
deleted file mode 100644
index f4c6568..0000000
Binary files a/src/assets/servant/ibaraki_02.webp and /dev/null differ
diff --git a/src/assets/servant/jane_02.png b/src/assets/servant/jane_02.png
new file mode 100644
index 0000000..f65d96d
Binary files /dev/null and b/src/assets/servant/jane_02.png differ
diff --git a/src/assets/servant/jane_03.webp b/src/assets/servant/jane_03.webp
deleted file mode 100644
index 56dcd72..0000000
Binary files a/src/assets/servant/jane_03.webp and /dev/null differ
diff --git a/src/assets/servant/koyanlight_01.png b/src/assets/servant/koyanlight_01.png
new file mode 100644
index 0000000..7fe8bbd
Binary files /dev/null and b/src/assets/servant/koyanlight_01.png differ
diff --git a/src/assets/servant/koyanlight_01.webp b/src/assets/servant/koyanlight_01.webp
deleted file mode 100644
index c799a1a..0000000
Binary files a/src/assets/servant/koyanlight_01.webp and /dev/null differ
diff --git a/src/assets/servant/liz_01.png b/src/assets/servant/liz_01.png
new file mode 100644
index 0000000..c1d83d8
Binary files /dev/null and b/src/assets/servant/liz_01.png differ
diff --git a/src/assets/servant/liz_01.webp b/src/assets/servant/liz_01.webp
deleted file mode 100644
index 9689253..0000000
Binary files a/src/assets/servant/liz_01.webp and /dev/null differ
diff --git a/src/assets/servant/merlin_01.png b/src/assets/servant/merlin_01.png
new file mode 100644
index 0000000..8e8ffc5
Binary files /dev/null and b/src/assets/servant/merlin_01.png differ
diff --git a/src/assets/servant/merlin_01.webp b/src/assets/servant/merlin_01.webp
deleted file mode 100644
index 93ba4cd..0000000
Binary files a/src/assets/servant/merlin_01.webp and /dev/null differ
diff --git a/src/assets/servant/merlin_03.png b/src/assets/servant/merlin_03.png
new file mode 100644
index 0000000..565563a
Binary files /dev/null and b/src/assets/servant/merlin_03.png differ
diff --git a/src/assets/servant/merlin_03.webp b/src/assets/servant/merlin_03.webp
deleted file mode 100644
index ac25d75..0000000
Binary files a/src/assets/servant/merlin_03.webp and /dev/null differ
diff --git a/src/assets/servant/oberon_01.webp b/src/assets/servant/oberon_01.webp
deleted file mode 100644
index ebe2db2..0000000
Binary files a/src/assets/servant/oberon_01.webp and /dev/null differ
diff --git a/src/assets/servant/oberon_02.png b/src/assets/servant/oberon_02.png
new file mode 100644
index 0000000..59bb4bc
Binary files /dev/null and b/src/assets/servant/oberon_02.png differ
diff --git a/src/assets/servant/reines_01.png b/src/assets/servant/reines_01.png
new file mode 100644
index 0000000..e2ebfd2
Binary files /dev/null and b/src/assets/servant/reines_01.png differ
diff --git a/src/assets/servant/reines_01.webp b/src/assets/servant/reines_01.webp
deleted file mode 100644
index fd7ba15..0000000
Binary files a/src/assets/servant/reines_01.webp and /dev/null differ
diff --git a/src/assets/servant/santagale_01.png b/src/assets/servant/santagale_01.png
new file mode 100644
index 0000000..7a1e541
Binary files /dev/null and b/src/assets/servant/santagale_01.png differ
diff --git a/src/assets/servant/santagale_01.webp b/src/assets/servant/santagale_01.webp
deleted file mode 100644
index 337a44e..0000000
Binary files a/src/assets/servant/santagale_01.webp and /dev/null differ
diff --git a/src/assets/servant/scathach_03.png b/src/assets/servant/scathach_03.png
new file mode 100644
index 0000000..3b1dd8b
Binary files /dev/null and b/src/assets/servant/scathach_03.png differ
diff --git a/src/assets/servant/sherlock_03.png b/src/assets/servant/sherlock_03.png
new file mode 100644
index 0000000..072e233
Binary files /dev/null and b/src/assets/servant/sherlock_03.png differ
diff --git a/src/assets/servant/skadi_01.png b/src/assets/servant/skadi_01.png
new file mode 100644
index 0000000..dfd43f3
Binary files /dev/null and b/src/assets/servant/skadi_01.png differ
diff --git a/src/assets/servant/skadi_01.webp b/src/assets/servant/skadi_01.webp
deleted file mode 100644
index 225d8ad..0000000
Binary files a/src/assets/servant/skadi_01.webp and /dev/null differ
diff --git a/src/assets/servant/skadi_02.png b/src/assets/servant/skadi_02.png
new file mode 100644
index 0000000..3218553
Binary files /dev/null and b/src/assets/servant/skadi_02.png differ
diff --git a/src/assets/servant/skadi_02.webp b/src/assets/servant/skadi_02.webp
deleted file mode 100644
index 81f9682..0000000
Binary files a/src/assets/servant/skadi_02.webp and /dev/null differ
diff --git a/src/assets/servant/skadi_03.png b/src/assets/servant/skadi_03.png
new file mode 100644
index 0000000..a9687e6
Binary files /dev/null and b/src/assets/servant/skadi_03.png differ
diff --git a/src/assets/servant/skadi_03.webp b/src/assets/servant/skadi_03.webp
deleted file mode 100644
index 7ef4c40..0000000
Binary files a/src/assets/servant/skadi_03.webp and /dev/null differ
diff --git a/src/assets/servant/taigong_03.png b/src/assets/servant/taigong_03.png
new file mode 100644
index 0000000..8c025e3
Binary files /dev/null and b/src/assets/servant/taigong_03.png differ
diff --git a/src/assets/servant/tamamo_03.png b/src/assets/servant/tamamo_03.png
new file mode 100644
index 0000000..167e061
Binary files /dev/null and b/src/assets/servant/tamamo_03.png differ
diff --git a/src/assets/servant/tamamo_03.webp b/src/assets/servant/tamamo_03.webp
deleted file mode 100644
index 07cd425..0000000
Binary files a/src/assets/servant/tamamo_03.webp and /dev/null differ
diff --git a/src/assets/servant/waver_02.png b/src/assets/servant/waver_02.png
new file mode 100644
index 0000000..1860bc6
Binary files /dev/null and b/src/assets/servant/waver_02.png differ
diff --git a/src/assets/servant/waver_02.webp b/src/assets/servant/waver_02.webp
deleted file mode 100644
index 7477af3..0000000
Binary files a/src/assets/servant/waver_02.webp and /dev/null differ
diff --git a/src/assets/servant/wu_01.png b/src/assets/servant/wu_01.png
new file mode 100644
index 0000000..6c8b774
Binary files /dev/null and b/src/assets/servant/wu_01.png differ
diff --git a/src/assets/servant/wu_01.webp b/src/assets/servant/wu_01.webp
deleted file mode 100644
index ba89ca9..0000000
Binary files a/src/assets/servant/wu_01.webp and /dev/null differ
diff --git a/src/assets/ta_icons/beast_4_l.png b/src/assets/ta_icons/beast_4_l.png
new file mode 100644
index 0000000..59b3af1
Binary files /dev/null and b/src/assets/ta_icons/beast_4_l.png differ
diff --git a/src/assets/ta_icons/koyanskayaofdark.png b/src/assets/ta_icons/koyanskayaofdark.png
new file mode 100644
index 0000000..ce1fba7
Binary files /dev/null and b/src/assets/ta_icons/koyanskayaofdark.png differ
diff --git a/src/assets/ta_icons/ta_servants/caren.png b/src/assets/ta_icons/ta_servants/caren.png
new file mode 100644
index 0000000..e7cedcd
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/caren.png differ
diff --git a/src/assets/ta_icons/ta_servants/caren.webp b/src/assets/ta_icons/ta_servants/caren.webp
deleted file mode 100644
index eb7c227..0000000
Binary files a/src/assets/ta_icons/ta_servants/caren.webp and /dev/null differ
diff --git a/src/assets/ta_icons/ta_servants/jalter.png b/src/assets/ta_icons/ta_servants/jalter.png
index 900fa96..cf91568 100644
Binary files a/src/assets/ta_icons/ta_servants/jalter.png and b/src/assets/ta_icons/ta_servants/jalter.png differ
diff --git a/src/assets/ta_icons/ta_servants/jalter.webp b/src/assets/ta_icons/ta_servants/jalter.webp
deleted file mode 100644
index c4e6307..0000000
Binary files a/src/assets/ta_icons/ta_servants/jalter.webp and /dev/null differ
diff --git a/src/assets/ta_icons/ta_servants/kama.png b/src/assets/ta_icons/ta_servants/kama.png
new file mode 100644
index 0000000..3a24974
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/kama.png differ
diff --git a/src/assets/ta_icons/ta_servants/kama.webp b/src/assets/ta_icons/ta_servants/kama.webp
deleted file mode 100644
index 83e28cf..0000000
Binary files a/src/assets/ta_icons/ta_servants/kama.webp and /dev/null differ
diff --git a/src/assets/ta_icons/ta_servants/musashi.png b/src/assets/ta_icons/ta_servants/musashi.png
index 99445cf..0166148 100644
Binary files a/src/assets/ta_icons/ta_servants/musashi.png and b/src/assets/ta_icons/ta_servants/musashi.png differ
diff --git a/src/assets/ta_icons/ta_servants/musashi.webp b/src/assets/ta_icons/ta_servants/musashi.webp
deleted file mode 100644
index 37aa905..0000000
Binary files a/src/assets/ta_icons/ta_servants/musashi.webp and /dev/null differ
diff --git a/src/assets/ta_icons/ta_servants/saberalter.png b/src/assets/ta_icons/ta_servants/saberalter.png
new file mode 100644
index 0000000..a93e190
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/saberalter.png differ
diff --git a/src/assets/ta_icons/ta_servants/saberalter.webp b/src/assets/ta_icons/ta_servants/saberalter.webp
deleted file mode 100644
index 55481e0..0000000
Binary files a/src/assets/ta_icons/ta_servants/saberalter.webp and /dev/null differ
diff --git a/src/assets/ta_icons/ta_servants/shishou.png b/src/assets/ta_icons/ta_servants/shishou.png
index eae7051..9485dd9 100644
Binary files a/src/assets/ta_icons/ta_servants/shishou.png and b/src/assets/ta_icons/ta_servants/shishou.png differ
diff --git a/src/assets/ta_icons/ta_servants/shishou.webp b/src/assets/ta_icons/ta_servants/shishou.webp
deleted file mode 100644
index 5b0dea3..0000000
Binary files a/src/assets/ta_icons/ta_servants/shishou.webp and /dev/null differ
diff --git a/src/assets/ta_icons/ta_servants/skadi.png b/src/assets/ta_icons/ta_servants/skadi.png
index 3bdc236..c09fc84 100644
Binary files a/src/assets/ta_icons/ta_servants/skadi.png and b/src/assets/ta_icons/ta_servants/skadi.png differ
diff --git a/src/assets/ta_icons/ta_servants/skadi.webp b/src/assets/ta_icons/ta_servants/skadi.webp
deleted file mode 100644
index 7292349..0000000
Binary files a/src/assets/ta_icons/ta_servants/skadi.webp and /dev/null differ
diff --git a/src/assets/ta_icons/ta_servants/summerjalter.png b/src/assets/ta_icons/ta_servants/summerjalter.png
index dbb49b7..3c896b4 100644
Binary files a/src/assets/ta_icons/ta_servants/summerjalter.png and b/src/assets/ta_icons/ta_servants/summerjalter.png differ
diff --git a/src/assets/ta_icons/ta_servants/summerjalter.webp b/src/assets/ta_icons/ta_servants/summerjalter.webp
deleted file mode 100644
index e4b8ca2..0000000
Binary files a/src/assets/ta_icons/ta_servants/summerjalter.webp and /dev/null differ
diff --git a/src/assets/ta_icons/ta_servants/summermusashi.png b/src/assets/ta_icons/ta_servants/summermusashi.png
new file mode 100644
index 0000000..23fa917
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/summermusashi.png differ
diff --git a/src/assets/ta_icons/ta_servants/summermusashi.webp b/src/assets/ta_icons/ta_servants/summermusashi.webp
deleted file mode 100644
index 963a6c7..0000000
Binary files a/src/assets/ta_icons/ta_servants/summermusashi.webp and /dev/null differ
diff --git a/src/assets/ta_icons/ta_servants/summershishou.png b/src/assets/ta_icons/ta_servants/summershishou.png
index 54999fb..0dc2c16 100644
Binary files a/src/assets/ta_icons/ta_servants/summershishou.png and b/src/assets/ta_icons/ta_servants/summershishou.png differ
diff --git a/src/assets/ta_icons/ta_servants/summershishou.webp b/src/assets/ta_icons/ta_servants/summershishou.webp
deleted file mode 100644
index 5d07b5b..0000000
Binary files a/src/assets/ta_icons/ta_servants/summershishou.webp and /dev/null differ
diff --git a/src/assets/ta_icons/ta_servants/tamamocat.png b/src/assets/ta_icons/ta_servants/tamamocat.png
new file mode 100644
index 0000000..da03fe6
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/tamamocat.png differ
diff --git a/src/assets/ta_icons/ta_servants/tamamocat.webp b/src/assets/ta_icons/ta_servants/tamamocat.webp
deleted file mode 100644
index ad8ea94..0000000
Binary files a/src/assets/ta_icons/ta_servants/tamamocat.webp and /dev/null differ
diff --git a/src/assets/ta_icons/ta_servants/tomoe.png b/src/assets/ta_icons/ta_servants/tomoe.png
new file mode 100644
index 0000000..b4df46e
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/tomoe.png differ
diff --git a/src/assets/ta_icons/ta_servants/tomoe.webp b/src/assets/ta_icons/ta_servants/tomoe.webp
deleted file mode 100644
index 6fb6bae..0000000
Binary files a/src/assets/ta_icons/ta_servants/tomoe.webp and /dev/null differ
diff --git a/src/assets/ta_icons/ta_servants/tomoesummer.png b/src/assets/ta_icons/ta_servants/tomoesummer.png
new file mode 100644
index 0000000..ab72529
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/tomoesummer.png differ
diff --git a/src/assets/ta_icons/ta_servants/tomoesummer.webp b/src/assets/ta_icons/ta_servants/tomoesummer.webp
deleted file mode 100644
index 5dbd588..0000000
Binary files a/src/assets/ta_icons/ta_servants/tomoesummer.webp and /dev/null differ
diff --git a/src/assets/technologies/dockge.png b/src/assets/technologies/dockge.png
new file mode 100644
index 0000000..695aeb7
Binary files /dev/null and b/src/assets/technologies/dockge.png differ
diff --git a/src/assets/thumbnails/O1f-go7uJQM.jpg b/src/assets/thumbnails/O1f-go7uJQM.jpg
new file mode 100644
index 0000000..833fdc1
Binary files /dev/null and b/src/assets/thumbnails/O1f-go7uJQM.jpg differ
diff --git a/src/assets/thumbnails/UwbNp_dB_VU.jpg b/src/assets/thumbnails/UwbNp_dB_VU.jpg
new file mode 100644
index 0000000..2236df5
Binary files /dev/null and b/src/assets/thumbnails/UwbNp_dB_VU.jpg differ
diff --git a/src/assets/thumbnails/WrHudtdfivA.jpg b/src/assets/thumbnails/WrHudtdfivA.jpg
new file mode 100644
index 0000000..100f38a
Binary files /dev/null and b/src/assets/thumbnails/WrHudtdfivA.jpg differ
diff --git a/src/components/ceCard.astro b/src/components/ceCard.astro
index a12bb87..51786f0 100644
--- a/src/components/ceCard.astro
+++ b/src/components/ceCard.astro
@@ -1,29 +1,26 @@
 ---
-import type { ImageMetadata } from 'astro'
 import { Image } from 'astro:assets'
 import mlb_ce from '../assets/ce/mlb.webp'
+import type { GlobImage } from '../types/generic'
+import { plsLoadImage } from '../utils/tools'
 
 export interface Props {
   name: string
   imageFile: string
-  mlb: string
+  mlb: boolean
 }
 
 const { mlb, imageFile, name } = Astro.props
 const imagePath = `/src/assets/ce/${imageFile}`
-const images_ces = import.meta.glob<{ default: ImageMetadata }>(
-  '/src/assets/ce/*.webp'
-)
+const images_ces = import.meta.glob<GlobImage>('/src/assets/ce/*.png')
+const loadedCEImage = plsLoadImage(images_ces, imagePath)
 
-let mlb_image: string = 'mlbalign'
-if (mlb === 'false') {
-  mlb_image = 'hidemlb'
-}
+const mlb_image = mlb ? 'mlbalign' : 'hidemlb'
 ---
 
 <article>
   <div>
-    <Image src={images_ces[imagePath]()} alt={name} class="ce-crop" />
+    <Image src={loadedCEImage} alt={name} class="ce-crop" />
   </div>
   <div class={mlb_image}>
     <Image src={mlb_ce} alt="Max-limit broken" class="mlb" />
diff --git a/src/components/contactCard.astro b/src/components/contactCard.astro
index c159f55..93772f5 100644
--- a/src/components/contactCard.astro
+++ b/src/components/contactCard.astro
@@ -1,6 +1,7 @@
 ---
-import type { ImageMetadata } from 'astro'
 import { Image } from 'astro:assets'
+import type { GlobImage } from '../types/generic'
+import { plsLoadImage } from '../utils/tools'
 
 export interface Props {
   site: string
@@ -9,19 +10,27 @@ export interface Props {
 }
 
 const { imageFile, link, site } = Astro.props
+const logoAltText = `${site} Logo`
 const imagePath = `/src/assets/social/${imageFile}`
-const images_logos = import.meta.glob<{ default: ImageMetadata }>(
-  '/src/assets/social/*.webp'
+const images_logos = import.meta.glob<GlobImage>(
+  '/src/assets/social/*.{png,webp}'
 )
+const loadedLogoImage = plsLoadImage(images_logos, imagePath)
 ---
 
-<a href={link} target="_blank" rel="noopener noreferrer" aria-label={site}>
+<a
+  href={link}
+  target="_blank"
+  rel="noopener noreferrer"
+  aria-label=`${site} - new window`
+>
   <article class="contact do-hover">
-    <Image src={images_logos[imagePath]()} alt="" />
+    <Image src={loadedLogoImage} alt={logoAltText} />
     <div>
       <h2>{site}</h2>
     </div>
   </article>
+  <span class="visually-hidden">{logoAltText}</span>
 </a>
 
 <style>
diff --git a/src/components/favouriteCard.astro b/src/components/favouriteCard.astro
index d62c839..83b2a87 100644
--- a/src/components/favouriteCard.astro
+++ b/src/components/favouriteCard.astro
@@ -1,6 +1,7 @@
 ---
-import type { ImageMetadata } from 'astro';
-import { Image } from 'astro:assets';
+import { Image } from 'astro:assets'
+import type { GlobImage } from '../types/generic'
+import { plsLoadImage } from '../utils/tools'
 
 export interface Props {
   name: string
@@ -11,12 +12,20 @@ export interface Props {
 
 const { link, imageFile, origin, name } = Astro.props
 const imagePath = `/src/assets/favourites/${imageFile}`
-const images = import.meta.glob<{ default: ImageMetadata }>('/src/assets/favourites/*.webp')
+const images = import.meta.glob<GlobImage>(
+  '/src/assets/favourites/*.{png,webp}'
+)
+const loadedImage = plsLoadImage(images, imagePath)
 ---
 
-<a href={link} target="_blank" rel="noopener noreferrer">
+<a
+  href={link}
+  target="_blank"
+  rel="noopener noreferrer"
+  aria-label=`${name} - new window`
+>
   <div class="heading">{name}</div>
-  <Image src={images[imagePath]()} alt={name} />
+  <Image src={loadedImage} alt={name} />
   <h2 class="subtext">
     {origin}
   </h2>
@@ -36,10 +45,6 @@ const images = import.meta.glob<{ default: ImageMetadata }>('/src/assets/favouri
     align-items: center;
   }
 
-  a:hover {
-    transform: scale(var(--hover-scale));
-  }
-
   a {
     border-radius: 1rem;
     display: flex;
@@ -55,12 +60,16 @@ const images = import.meta.glob<{ default: ImageMetadata }>('/src/assets/favouri
     text-align: center;
     transition: transform var(--speed) var(--ease);
     text-decoration: none;
-  }
 
-  a > img {
-    padding: 0px 0.25em;
-    width: 90%;
-    height: auto;
+    &:hover {
+      transform: scale(var(--hover-scale));
+    }
+
+    img {
+      padding: 0px 0.25em;
+      width: 90%;
+      height: auto;
+    }
   }
 
   @media (min-width: 512px) {
@@ -68,12 +77,10 @@ const images = import.meta.glob<{ default: ImageMetadata }>('/src/assets/favouri
       padding: 10px 10px;
       width: auto;
       height: auto;
-    }
-
-    a > img {
-      padding: 0px 1.5em;
-      width: 200px;
-      height: auto;
+      img {
+        padding: 0px 1.5em;
+        width: 200px;
+      }
     }
   }
 
diff --git a/src/components/fgotaHero.astro b/src/components/fgotaHero.astro
new file mode 100644
index 0000000..a7bee13
--- /dev/null
+++ b/src/components/fgotaHero.astro
@@ -0,0 +1,27 @@
+---
+---
+
+<div>
+  <span>
+    I am currently working on a site to catalogue past and future TAs.<br/>
+    Check it out at <a href="https://fgo-ta.com">fgo-ta.com</a>
+  </span>
+</div>
+
+<style>
+  div {
+    display: flex;
+    width: 100%;
+    height: 5em;
+    background-color: var(--c-gray);
+    text-align: center;
+    align-items: center;
+    justify-content: center;
+    color: white;
+    font-size: 1.5em;
+  }
+  a {
+    color: var(--c-darkpurple);
+    text-decoration: none;
+  }
+</style>
diff --git a/src/components/navbar.astro b/src/components/navbar.astro
index d4a6971..3266ad5 100644
--- a/src/components/navbar.astro
+++ b/src/components/navbar.astro
@@ -1,25 +1,28 @@
 ---
 import { Image } from 'astro:assets';
 import logo from '../assets/logo.svg'
+import hamburger from 'iconoir/icons/menu.svg'
+const hamburger_src_url = `url("${hamburger.src}")`;
 ---
 
 <header>
-  <a href="/" rel="noopener noreferrer" aria-label="Home">
-    <Image src={logo} alt="Website Logo"/>
+  <a href="/" rel="noopener noreferrer" aria-label="Home" role="navigation">
+    <Image src={logo} alt="Firq Website Logo"/>
+    <span class="visually-hidden">Firq Website Logo</span>
   </a>
   <ul class="desktop">
-    <slot />
+    <slot name="desktop"/>
   </ul>
-  <button class="mobile" aria-label="Navigation Button" tabindex="0" onclick="this.focus()">
+  <button class="mobile" aria-label="Navigation Button" tabindex="0" onclick="this.focus()" role="navigation">
     <ul>
-      <slot />
+      <slot name="mobile"/>
     </ul>
     <div class="placeholder"></div>
-    <i class="iconoir-menu"></i>
+    <div class="hamburger-menu" role="navigation"></div>
   </button>
 </header>
 
-<style>
+<style define:vars={{ hamburger_src_url }}>
   header {
     z-index: 1000;
     position: sticky;
@@ -32,7 +35,7 @@ import logo from '../assets/logo.svg'
     line-height: 1.5em;
   }
   header > a {
-    padding-left: 16px;
+    margin-left: 16px;
     padding-top: 8px;
     display: block;
     height: 48px;
@@ -81,16 +84,6 @@ import logo from '../assets/logo.svg'
     height: 64px;
   }
 
-  .mobile > i {
-    position: static;
-    color: white;
-    font-weight: bold;
-    font-size: 2em;
-    align-self: flex-start;
-    padding-right: 1em;
-    padding-top: 1.15rem;
-  }
-
   .mobile > ul {
     display: none;
     padding: 0px;
@@ -113,6 +106,17 @@ import logo from '../assets/logo.svg'
     justify-self: top;
   }
 
+  .hamburger-menu {
+    mask: var(--hamburger_src_url) no-repeat center;
+    background-color: white;
+    width: 2rem;
+    height: 2rem;
+    position: static;
+    align-self: flex-start;
+    margin-right: 1rem;
+    margin-top: 1rem;
+  }
+
   @media (min-width: 1140px) {
     .mobile {
       display: none;
diff --git a/src/components/navbarEntry.astro b/src/components/navbarEntry.astro
index 71c8165..715a4dc 100644
--- a/src/components/navbarEntry.astro
+++ b/src/components/navbarEntry.astro
@@ -1,12 +1,13 @@
 ---
 export interface Props {
   currentPage?: string
+  navtype: "mobile" | "desktop"
   link: string
   text: string
-  icon: string
+  icon: ImageMetadata
 }
 
-const { icon, text, link, currentPage } = Astro.props
+const { icon, text, link, navtype, currentPage } = Astro.props
 
 let currPage = ''
 const slug = link.replace(new RegExp('/', 'g'), '')
@@ -17,7 +18,10 @@ if (currentPage === slug) {
   currPage = 'current'
 }
 
+const icon_src_url = `url("${icon.src}")`;
 const fulllink = `/${slug}`
+
+let extraattributes = navtype === "mobile" ? { tabindex: "0"} : {}
 ---
 
 <li>
@@ -26,14 +30,15 @@ const fulllink = `/${slug}`
     rel="noopener noreferrer"
     aria-label={text}
     class={currPage}
-    tabindex="0"
+    role="navigation"
+    {...extraattributes}
   >
-    <i class={icon}></i>
+    <div class="icon"></div>
     {text}
   </a>
 </li>
 
-<style>
+<style define:vars={{ icon_src_url }}>
   li {
     align-items: center;
     justify-content: center;
@@ -41,6 +46,7 @@ const fulllink = `/${slug}`
     display: flex;
     width: 200px;
   }
+
   li > a {
     display: inline-flex;
     color: white;
@@ -52,10 +58,27 @@ const fulllink = `/${slug}`
     font-weight: bold;
     gap: 0.2em;
   }
+
   li > a:hover {
     color: var(--c-purplepink);
   }
+
+  li > a:hover > .icon {
+    background-color: var(--c-purplepink);
+  }
+
   .current {
     color: var(--c-darkpurple) !important;
   }
+
+  .current > .icon {
+    background-color: var(--c-darkpurple) !important;
+  }
+
+  .icon {
+    mask: var(--icon_src_url) no-repeat center;
+    background-color: white;
+    width: 1.4em;
+    height: 1.4em;
+  }
 </style>
diff --git a/src/components/servantCard.astro b/src/components/servantCard.astro
index 28e9439..34abab5 100644
--- a/src/components/servantCard.astro
+++ b/src/components/servantCard.astro
@@ -1,6 +1,7 @@
 ---
-import type { ImageMetadata } from 'astro';
 import { Image } from 'astro:assets';
+import type { GlobImage } from '../types/generic'
+import { plsLoadImage } from '../utils/tools'
 
 export interface Props {
   name: string
@@ -16,8 +17,10 @@ export interface Props {
 const { bond10, ml, bondceImageFile, servantImageFile, np, skills, level, name } = Astro.props
 const servantImagePath = `/src/assets/servant/${servantImageFile}`
 const bondceImagePath = `/src/assets/ce/bond-ce/${bondceImageFile}`
-const images_servants = import.meta.glob<{ default: ImageMetadata }>('/src/assets/servant/*.webp')
-const images_bond_ces = import.meta.glob<{ default: ImageMetadata }>('/src/assets/ce/bond-ce/*.webp')
+const images_servants = import.meta.glob<GlobImage>('/src/assets/servant/*.{png,webp}')
+const images_bond_ces = import.meta.glob<GlobImage>('/src/assets/ce/bond-ce/*.{png,webp}')
+const loadedServantImage = plsLoadImage(images_servants, servantImagePath)
+const loadedBondCEImage = plsLoadImage(images_bond_ces, bondceImagePath)
 
 let bondce_css: string = 'bond-ce'
 
@@ -27,14 +30,14 @@ if (bond10 === false) {
 ---
 
 <article>
-  <Image src={images_servants[servantImagePath]()} alt={name} />
+  <Image src={loadedServantImage} alt={name} />
   <h2 class="subtext">
     Level {level}<br />
     {skills}<br />
     NP {np}
   </h2>
   <div class="expand-on-hover">
-    <Image src={images_bond_ces[bondceImagePath]()} alt="" class={bondce_css}/>
+    <Image src={loadedBondCEImage} alt="" class={bondce_css}/>
     <h2 class="subtext">Mana Loading: {ml === 'Not Unlocked' && <br />}{ml}</h2>
   </div>
 </article>
diff --git a/src/components/taCard.astro b/src/components/taCard.astro
index b0c29b4..be4659d 100644
--- a/src/components/taCard.astro
+++ b/src/components/taCard.astro
@@ -1,6 +1,8 @@
 ---
-import type { ImageMetadata } from 'astro'
 import { Image } from 'astro:assets'
+import type { GlobImage } from '../types/generic'
+import { plsLoadImage } from '../utils/tools'
+
 export interface Props {
   date: string
   title: string
@@ -24,13 +26,16 @@ const targetImagePath = `/src/assets/ta_icons/${targetImageFile}`
 const servantImagePath = `/src/assets/ta_icons/ta_servants/${servantImageFile}`
 
 const formatted_date = new Date(date).toLocaleDateString('de-DE', options_date)
-const target_images = import.meta.glob<{ default: ImageMetadata }>(
-  '/src/assets/ta_icons/*.webp'
+const target_images = import.meta.glob<GlobImage>(
+  '/src/assets/ta_icons/*.{png,webp}'
 )
-const servant_images = import.meta.glob<{ default: ImageMetadata }>(
-  '/src/assets/ta_icons/ta_servants/*.webp'
+const servant_images = import.meta.glob<GlobImage>(
+  '/src/assets/ta_icons/ta_servants/*.{png,webp}'
 )
 
+const loadedServantImage = plsLoadImage(servant_images, servantImagePath)
+const loadedTargetImage = plsLoadImage(target_images, targetImagePath)
+
 let hasuser = ''
 if (user !== undefined) {
   hasuser = 'hasuser'
@@ -39,7 +44,7 @@ if (user !== undefined) {
 
 <a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}>
   <article>
-    <Image src={target_images[targetImagePath]()} alt={title} class="icon" />
+    <Image src={loadedTargetImage} alt={title} class="icon" />
     <div class="title">
       <h2>{title}</h2>
     </div>
@@ -50,7 +55,7 @@ if (user !== undefined) {
       {formatted_date}
     </p>
     <div class="expand-on-hover">
-      <Image src={servant_images[servantImagePath ?? 'undefined']()} alt="" />
+      <Image src={loadedServantImage} alt="" />
       <h2>{turns}</h2>
     </div>
   </article>
diff --git a/src/components/technologyCard.astro b/src/components/technologyCard.astro
index 9ece8b2..bee5474 100644
--- a/src/components/technologyCard.astro
+++ b/src/components/technologyCard.astro
@@ -1,6 +1,7 @@
 ---
-import type { ImageMetadata } from 'astro'
 import { Image } from 'astro:assets'
+import type { GlobImage } from '../types/generic'
+import { plsLoadImage } from '../utils/tools'
 
 export interface Props {
   title: string
@@ -9,19 +10,22 @@ export interface Props {
 }
 
 const { imageFile, link, title } = Astro.props
+const logoAltText = `${title} Logo`
 const imagePath = `/src/assets/technologies/${imageFile}`
-const images_logos = import.meta.glob<{ default: ImageMetadata }>(
-  '/src/assets/technologies/*.webp'
+const images_logos = import.meta.glob<GlobImage>(
+  '/src/assets/technologies/*.{png,webp}'
 )
+const loadedImage = plsLoadImage(images_logos, imagePath)
 ---
 
 <a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}>
   <article>
-    <Image src={images_logos[imagePath]()} alt="" />
+    <Image src={loadedImage} alt={logoAltText} />
     <div>
       <h2>{title}</h2>
     </div>
   </article>
+  <span class="visually-hidden">{logoAltText}</span>
 </a>
 
 <style>
diff --git a/src/components/youtubeEmbed.astro b/src/components/youtubeEmbed.astro
new file mode 100644
index 0000000..e0a99fa
--- /dev/null
+++ b/src/components/youtubeEmbed.astro
@@ -0,0 +1,61 @@
+---
+import { YouTube } from '@astro-community/astro-embed-youtube'
+export interface Props {
+  id: string
+  thumbnail: string
+}
+
+const { id, thumbnail } = Astro.props
+---
+
+<div class="youtube-center">
+  <noscript style="display: flex; justify-content: center;">
+    <style>
+      lite-youtube {
+        display: none;
+      }
+    </style>
+    <div class="warningtext">
+      <span>
+        To view the video, enable JavaScript or<br /><a
+          href=`https://www.youtube.com/watch?v=${id}`
+          target="_blank"
+          rel="noopener noreferrer">watch it on YouTube</a
+        >
+      </span>
+    </div>
+  </noscript>
+  <YouTube id={id} poster={thumbnail} />
+</div>
+
+<style>
+  .youtube-center {
+    width: 100%;
+    display: flex;
+    justify-content: center;
+  }
+
+  lite-youtube {
+    width: 100%;
+    max-height: 360px;
+    max-width: 640px;
+  }
+
+  .warningtext {
+    display: flex;
+    justify-content: center;
+    background-color: var(--c-darkgray);
+    width: 640px;
+    height: 360px;
+  }
+
+  span {
+    text-align: center;
+    margin-top: 20%;
+  }
+
+  span > a {
+    font-style: unset;
+    font-weight: bold;
+  }
+</style>
diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro
index 737ae61..09d6182 100644
--- a/src/layouts/Layout.astro
+++ b/src/layouts/Layout.astro
@@ -2,6 +2,13 @@
 import Navbar from '../components/navbar.astro'
 import NavbarEntry from '../components/navbarEntry.astro'
 import navdata from '../../static/data/_navdata.json'
+import embed from '../assets/embed.png'
+
+import home from 'iconoir/icons/home.svg'
+import servants from 'iconoir/icons/task-list.svg'
+import ta_collection from 'iconoir/icons/database.svg'
+import blog from 'iconoir/icons/bookmark-book.svg'
+import about from 'iconoir/icons/mail.svg'
 
 export interface Props {
   title: string
@@ -9,6 +16,18 @@ export interface Props {
   descriptionOverride?: string
 }
 
+interface IconsLookup {
+  [key: string]: ImageMetadata
+}
+
+const icons: IconsLookup = {
+  home: home,
+  servants: servants,
+  ta_collection: ta_collection,
+  blog: blog,
+  about: about,
+}
+
 const { descriptionOverride, currentpage, title } = Astro.props
 let description
 
@@ -22,9 +41,14 @@ let currPage = 'https://firq.dev/'
 if (currentpage !== 'home') {
   currPage += currentpage
 }
+
+const mapped_navdata = navdata.map((item) => ({
+  ...item,
+  ...{ icon: icons[item.icon] },
+}))
 ---
 
-<!DOCTYPE html>
+<!doctype html>
 <html lang="en">
   <head>
     <title>{title}</title>
@@ -36,7 +60,7 @@ if (currentpage !== 'home') {
     <meta property="og:title" content={title} />
     <meta property="og:url" content={currPage} />
     <meta property="og:description" content={description} />
-    <meta property="og:image" content="/assets/embed.png" />
+    <meta property="og:image" content={embed.src} />
     <meta property="og:type" content="website" />
     <meta property="og:locale" content="en_US" />
     <meta name="theme-color" content="#b86cff" />
@@ -48,16 +72,17 @@ if (currentpage !== 'home') {
     <link rel="icon" type="image/ico" href="/favicon.ico" />
     <link rel="sitemap" href="/sitemap-index.xml" />
     <link href="https://mastodon.neshweb.net/@Firq" rel="me" />
-    <link
-      rel="stylesheet"
-      href="https://cdn.jsdelivr.net/gh/iconoir-icons/iconoir@main/css/iconoir.css"
-    />
   </head>
   <body>
     <Navbar>
       {
-        navdata.map((item) => (
-          <NavbarEntry currentPage={currentpage} {...item} />
+        mapped_navdata.map((item) => (
+          <NavbarEntry currentPage={currentpage} navtype="desktop" {...item} slot="desktop"/>
+        ))
+      }
+      {
+        mapped_navdata.map((item) => (
+          <NavbarEntry currentPage={currentpage} navtype="mobile" {...item} slot="mobile"/>
         ))
       }
     </Navbar>
@@ -82,4 +107,15 @@ if (currentpage !== 'home') {
     background: var(--c-lightgray);
     margin: 0px;
   }
+
+  .visually-hidden {
+    border: 0;
+    clip: rect(0 0 0 0);
+    height: 1px;
+    margin: -1px;
+    overflow: hidden;
+    padding: 0;
+    position: absolute;
+    width: 1px;
+}
 </style>
diff --git a/src/layouts/customFooter.astro b/src/layouts/customFooter.astro
index 915eed2..d0732ec 100644
--- a/src/layouts/customFooter.astro
+++ b/src/layouts/customFooter.astro
@@ -3,23 +3,27 @@ import okita from '../assets/okita.png'
 import atlas from '../assets/atlas.png'
 import foxcat from '../assets/lurker.png'
 import padoru from '../assets/padoru.png'
-import { Image } from 'astro:assets';
+import { Image } from 'astro:assets'
+
+import packagejson from '../../package.json'
+const version = packagejson.version
+const release = `https://forgejo.neshweb.net/Firq/firq-dev-website/releases/tag/${version}`
 ---
 
 <footer>
   <div>
-    “Fate/Grand Order” is a trademark of Notes Co., Ltd. | Game Assets © Aniplex
-    Inc. used under fair use. | View <a
+    “Fate/Grand Order” is a trademark of Notes Co., Ltd. | Game Assets ©
+    Aniplex Inc. used under fair use. | View <a
       class="linker"
       href="https://fate-go.us"
       target="_blank"
       rel="noopener noreferrer">the official website</a
     > for more information.<br />
-    I am in no way affiliated with Fate/Grand Order, Aniplex, Type Moon or Lasengle.
-    I claim no ownership of any of the assets used that are created by any of the
-    mentioned companies.<br />
-    All of the opinions expressed are my own and may not reflect those of the asset
-    providers.
+     I am in no way affiliated with Fate/Grand Order, Aniplex, Type Moon or
+    Lasengle. I claim no ownership of any of the assets used that are created by
+    any of the mentioned companies.<br />
+     All of the opinions expressed are my own and may not reflect those of the
+    asset providers.
   </div>
   <br />
   <div>
@@ -38,8 +42,8 @@ import { Image } from 'astro:assets';
       href="https://mitsunee.com"
       target="_blank"
       rel="noopener noreferrer">Mitsunee</a
-    > for the support when building this site. I could not have done it without you
-    🧡 Check out <a
+    > for the support when building this site. I could not have done it without
+    you 🧡 Check out <a
       href="https://fgo.mitsunee.com"
       target="_blank"
       rel="noopener noreferrer">FGO Timers here</a
@@ -54,7 +58,8 @@ import { Image } from 'astro:assets';
       href="https://mastodon.neshweb.net/@neshura"
       target="_blank"
       rel="noopener noreferrer">Neshura</a
-    > for providing me with a place to develop, store and host this site. Check out
+    > for providing me with a place to develop, store and host this site. Check
+    out
     <a href="https://www.neshweb.net" target="_blank" rel="noopener noreferrer"
       >his site here</a
     >
@@ -73,6 +78,12 @@ import { Image } from 'astro:assets';
       <Image src={padoru} alt="Hashire sori yo ..." />
     </div>
   </div>
+  <br />
+  <div>
+    Website version: <a href={release} target="_blank" rel="noopener noreferrer"
+      >{version}</a
+    >
+  </div>
 </footer>
 
 <style>
diff --git a/src/pages/404.astro b/src/pages/404.astro
index cad8fa0..2793078 100644
--- a/src/pages/404.astro
+++ b/src/pages/404.astro
@@ -17,7 +17,7 @@ const description = "Error. This shouldn't happen :/"
       <Image src={sadshishou} alt="Sad Shishou" />
       <h2>Well ... you were not supposed to end up here.</h2>
       <a href="/" aria-label="Home" rel="noopener noreferrer">
-        <i class="iconoir-fast-arrow-left"></i>Go back home
+        &lt;&lt; Go back home
       </a>
     </div>
   </BaseSection>
@@ -50,10 +50,10 @@ const description = "Error. This shouldn't happen :/"
     text-decoration: none;
     font-size: 1.5rem;
     font-weight: bold;
-  }
 
-  a:hover {
-    color: var(--c-darkpurple);
+    &:hover {
+      color: var(--c-darkpurple);
+    }
   }
 
   img {
diff --git a/src/pages/blog.astro b/src/pages/blog.astro
index 4764d8e..884afd0 100644
--- a/src/pages/blog.astro
+++ b/src/pages/blog.astro
@@ -5,7 +5,7 @@ import BlogSection from '../layouts/blogSection.astro'
 
 const description =
   'My own small blog. Topics include FGO, TA, Programming, web technologies and more!'
-const allPosts = await Astro.glob('../pages/blog/*.md')
+const allPosts = await Astro.glob('../pages/blog/*.{md,mdx}')
 allPosts.sort(
   (a, b) =>
     Date.parse(b.frontmatter.pubDate) - Date.parse(a.frontmatter.pubDate)
diff --git a/src/pages/blog/cernunnos-with-requiem.md b/src/pages/blog/cernunnos-with-requiem.mdx
similarity index 78%
rename from src/pages/blog/cernunnos-with-requiem.md
rename to src/pages/blog/cernunnos-with-requiem.mdx
index 6a2e7da..7848a1e 100644
--- a/src/pages/blog/cernunnos-with-requiem.md
+++ b/src/pages/blog/cernunnos-with-requiem.mdx
@@ -6,6 +6,9 @@ description: 'A handful of observations from the cernunnos fight'
 author: 'Requiem & Firq'
 tags: ['fgo', 'lostbelt 6', 'cernunnos']
 ---
+import thumbnail_firq from "../../assets/thumbnails/WrHudtdfivA.jpg"
+import thumbnail_requiem from "../../assets/thumbnails/O1f-go7uJQM.jpg"
+import YoutubeEmbed from "../../components/youtubeEmbed.astro"
 
 ## Foreword
 
@@ -45,3 +48,19 @@ On the first break Cernunnos skill seals your servants. This means on turn 2 you
 As an example:
 Let's say I used Alteras third skill turn 1. She has to wait 5 turns to reuse it and on turn 3 Vitch gives her 2 times cooldown reduction.
 Ideally you would be able to reuse her third skill on turn 4 but because she gets skill sealed she can't do it.
+
+## Resulting runs
+
+Both Requiem and I managed to get unique TAs done with Scathach (Requiem even with more servants). Those runs are embedded here:
+
+### Firq
+
+This run doesn't use the support Castoria provided by the game and instead makes use of Sherlock instead.
+
+<YoutubeEmbed id="WrHudtdfivA" thumbnail={thumbnail_firq.src}/>
+
+### Requiem
+
+A frontline only run with double Castoria
+
+<YoutubeEmbed id="O1f-go7uJQM" thumbnail={thumbnail_requiem.src}/>
diff --git a/src/pages/blog/deploying-this-round-2.md b/src/pages/blog/deploying-this-round-2.md
index 1b536f8..b3a67b9 100644
--- a/src/pages/blog/deploying-this-round-2.md
+++ b/src/pages/blog/deploying-this-round-2.md
@@ -2,7 +2,7 @@
 layout: ../../layouts/blogPost.astro
 title: 'Migrating to Forgejo'
 pubDate: 2023-12-23
-description: 'My small recollection of migrating this site + CI to Forgejo'
+description: 'My short recollection of migrating this site + CI to Forgejo'
 author: 'Firq'
 tags: ['astro', 'docker', 'forgejo']
 ---
@@ -58,7 +58,7 @@ COPY . .
 RUN npm i
 RUN npm run build
 
-FROM forgejo.neshweb.net/firq/website-serve-docker:latest AS runtime
+FROM forgejo.neshweb.net/ci-docker-images/website-serve:latest AS runtime
 
 COPY --from=build /app/dist /public
 COPY --from=build /app/serve.json /public/serve.json
@@ -138,7 +138,7 @@ With this container, the CI step to actually run the tests became a lot easier:
 jobs:
   unlighthouse:
     runs-on: docker
-    container: forgejo.neshweb.net/firq/unlighthouse-docker:latest
+    container: forgejo.neshweb.net/ci-docker-images/unlighthouse:latest
     steps:
       - name: Checkout repository
         uses: https://code.forgejo.org/actions/checkout@v3
diff --git a/src/pages/blog/instant-death.md b/src/pages/blog/instant-death.mdx
similarity index 93%
rename from src/pages/blog/instant-death.md
rename to src/pages/blog/instant-death.mdx
index 7a4d732..454d0c6 100644
--- a/src/pages/blog/instant-death.md
+++ b/src/pages/blog/instant-death.mdx
@@ -6,8 +6,10 @@ description: 'Blog post talking about instant death in FGO, how you can take adv
 author: 'Firq'
 tags: ['fgo', 'games']
 ---
+import thumbnail from "../../assets/thumbnails/UwbNp_dB_VU.jpg"
+import YoutubeEmbed from "../../components/youtubeEmbed.astro"
 
-> **Disclaimer**<br>
+> **Disclaimer**<br/>
 > While writing this, Requiem and I faced a bit of a challenge concerning death rate calculations. Case in point is the passive "Item Construction"
 and its interaction with Instant Kill, as we could not reach a final verdict if it affects Instant Kill Hit rate or not. In case of this article, I will assume
 it doesn't interact with the hitrate, but if you have proof that this is different, I will gladly incorporate this in the article.
@@ -103,9 +105,8 @@ For other skill levels, this looks like this (_Her S1 scales from 50% to 100%_)
 
 In the end, this resulted in the following comp that worked like a charm.
 
-<div style="width: 100%; display: flex; justify-content: center; padding-top: 0.75rem">
-<iframe width="640" height="360" src="https://www.youtube-nocookie.com/embed/UwbNp_dB_VU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
-</div>
+<YoutubeEmbed id="UwbNp_dB_VU" thumbnail={thumbnail.src}/>
+
 
 ## Conclusion
 
diff --git a/src/pages/ta-collection.astro b/src/pages/ta-collection.astro
index 991f7b9..bf3799b 100644
--- a/src/pages/ta-collection.astro
+++ b/src/pages/ta-collection.astro
@@ -11,6 +11,7 @@ import TaSection from '../layouts/taSection.astro'
 import TaCard from '../components/taCard.astro'
 import tadata from '../../static/data/_tadata.json'
 import featured_data from '../../static/data/_featureddata.json'
+import FgotaHero from '../components/fgotaHero.astro'
 
 const important_data = tadata.filter(function (el) {
   return [
@@ -36,6 +37,7 @@ const description = 'A collection of TAs previously completed be Firq.'
   currentpage="ta-collection"
   descriptionOverride={description}
 >
+  <FgotaHero />
   <TaSection title="Notable TAs" abovetext="My most notable TAs">
     {important_data.map((item) => <TaCard {...item} />)}
   </TaSection>
diff --git a/src/types/generic.ts b/src/types/generic.ts
new file mode 100644
index 0000000..65db641
--- /dev/null
+++ b/src/types/generic.ts
@@ -0,0 +1,10 @@
+export interface IconsLookup {
+  [key: string]: ImageMetadata
+}
+
+interface GlobGeneric<T> { 
+  default: T
+}
+
+export type GlobAny = GlobGeneric<any>
+export type GlobImage = GlobGeneric<ImageMetadata>
diff --git a/src/utils/tools.ts b/src/utils/tools.ts
new file mode 100644
index 0000000..4dc88c9
--- /dev/null
+++ b/src/utils/tools.ts
@@ -0,0 +1,5 @@
+export function plsLoadImage(record: Record<string, () => Promise<{default: ImageMetadata}>>, path: string) {
+  const loadedImage = record[path]?.();
+  if (!loadedImage) throw new Error("Asset was not found:" + path);
+  return loadedImage;
+}
diff --git a/static/data/_cedata.json b/static/data/_cedata.json
index 84f7df3..c40f365 100644
--- a/static/data/_cedata.json
+++ b/static/data/_cedata.json
@@ -1,57 +1,57 @@
 [
 	{
 		"name": "The Merciless One",
-		"imageFile": "merciless_one.webp",
-		"mlb": "true"
+		"imageFile": "merciless_one.png",
+		"mlb": true
 	},
 	{
 		"name": "Ox-Demon King",
-		"imageFile": "oxdemon.webp",
-		"mlb": "true"
+		"imageFile": "ox-demon.png",
+		"mlb": true
 	},
 	{
 		"name": "Holy Maiden's Teachings",
-		"imageFile": "maidensteachings.webp",
-		"mlb": "true"
+		"imageFile": "maidens_teachings.png",
+		"mlb": true
 	},
 	{
 		"name": "Kaleidoscope",
-		"imageFile": "kaleidoscope.webp",
-		"mlb": "true"
+		"imageFile": "kaleidoscope.png",
+		"mlb": true
 	},
 	{
 		"name": "The Black Grail",
-		"imageFile": "bg.webp",
-		"mlb": "true"
+		"imageFile": "black_grail.png",
+		"mlb": true
 	},
 	{
 		"name": "A Fragment Of 2030",
-		"imageFile": "2030.webp",
-		"mlb": "true"
+		"imageFile": "2030.png",
+		"mlb": true
 	},
 	{
 		"name": "Outrage",
-		"imageFile": "outrage.webp",
-		"mlb": "false"
+		"imageFile": "outrage.png",
+		"mlb": false
 	},
 	{
 		"name": "Vessel of the Saint",
-		"imageFile": "vessel.webp",
-		"mlb": "false"
+		"imageFile": "vessel.png",
+		"mlb": false
 	},
 	{
 		"name": "Devilish Bodhisattva",
-		"imageFile": "db.webp",
-		"mlb": "true"
+		"imageFile": "devilish_bodhisattva.png",
+		"mlb": true
 	},
 	{
 		"name": "500-Year Obsession",
-		"imageFile": "500.webp",
-		"mlb": "true"
+		"imageFile": "500.png",
+		"mlb": true
 	},
 	{
 		"name": "Prisma Cosmos",
-		"imageFile": "prisma.webp",
-		"mlb": "true"
+		"imageFile": "prisma_cosmos.png",
+		"mlb": true
 	}
 ]
diff --git a/static/data/_favouritesdata.json b/static/data/_favouritesdata.json
index 80c8bd7..d3554d8 100644
--- a/static/data/_favouritesdata.json
+++ b/static/data/_favouritesdata.json
@@ -2,13 +2,13 @@
     {
         "name": "Scathach",
         "origin": "Fate/Grand Order",
-        "imageFile": "scathach.webp",
+        "imageFile": "scathach.png",
         "link": "https://twitter.com/firq_ow/status/1541064034618904578"
     },
     {
         "name": "Skadi",
         "origin": "Fate/Grand Order",
-        "imageFile": "skadi.webp",
+        "imageFile": "skadi.png",
         "link": "https://twitter.com/firq_ow/status/1544321985995489280"
     }
 ]
\ No newline at end of file
diff --git a/static/data/_featureddata.json b/static/data/_featureddata.json
index 620f4dd..eccb8ea 100644
--- a/static/data/_featureddata.json
+++ b/static/data/_featureddata.json
@@ -5,7 +5,7 @@
 		"targetImageFile": "db.webp",
 		"date": "2022-07-14",
 		"user": "KOG",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "7T"
 	},
 	{
@@ -14,7 +14,7 @@
 		"targetImageFile": "db.webp",
 		"date": "2022-07-07",
 		"user": "Requiem",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "7T"
 	},
 	{
@@ -23,7 +23,7 @@
 		"targetImageFile": "orion.webp",
 		"date": "2023-02-23",
 		"user": "Requiem",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "5T"
 	},
 	{
@@ -32,7 +32,7 @@
 		"targetImageFile": "ibuki.webp",
 		"date": "2022-11-22",
 		"user": "Requiem",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -41,7 +41,7 @@
 		"targetImageFile": "kingprotea.webp",
 		"date": "2022-09-13",
 		"user": "Requiem",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "1T"
 	},
 	{
@@ -50,7 +50,7 @@
 		"targetImageFile": "caenis.webp",
 		"date": "2022-04-22",
 		"user": "Requiem",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -59,7 +59,7 @@
 		"targetImageFile": "shibata.webp",
 		"date": "2022-04-26",
 		"user": "Requiem",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -68,7 +68,7 @@
 		"targetImageFile": "orion.webp",
 		"date": "2023-02-25",
 		"user": "KOG",
-		"servantImageFile": "summershishou.webp",
+		"servantImageFile": "summershishou.png",
 		"turns": "4T"
 	},
 	{
@@ -77,7 +77,7 @@
 		"targetImageFile": "kiyohime.webp",
 		"date": "2022-08-12",
 		"user": "KOG",
-		"servantImageFile": "summershishou.webp",
+		"servantImageFile": "summershishou.png",
 		"turns": "4T"
 	},
 	{
@@ -86,7 +86,7 @@
 		"targetImageFile": "penth.webp",
 		"date": "2022-01-22",
 		"user": "KOG",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -95,7 +95,7 @@
 		"targetImageFile": "santagale.webp",
 		"date": "2021-12-20",
 		"user": "KOG",
-		"servantImageFile": "summershishou.webp",
+		"servantImageFile": "summershishou.png",
 		"turns": "4T"
 	},
 	{
@@ -104,7 +104,7 @@
 		"targetImageFile": "shibata.webp",
 		"date": "2021-06-29",
 		"user": "KOG",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -113,7 +113,7 @@
 		"targetImageFile": "nobunaga.webp",
 		"date": "2022-09-24",
 		"user": "Ray",
-		"servantImageFile": "jalter.webp",
+		"servantImageFile": "jalter.png",
 		"turns": "4T"
 	},
 	{
@@ -122,7 +122,7 @@
 		"targetImageFile": "nobunaga.webp",
 		"date": "2022-09-23",
 		"user": "Ray",
-		"servantImageFile": "summerjalter.webp",
+		"servantImageFile": "summerjalter.png",
 		"turns": "4T"
 	},
 	{
@@ -131,7 +131,7 @@
 		"targetImageFile": "ibuki.webp",
 		"date": "2022-11-26",
 		"user": "Ray",
-		"servantImageFile": "jalter.webp",
+		"servantImageFile": "jalter.png",
 		"turns": "3T"
 	},
 	{
@@ -140,7 +140,7 @@
 		"targetImageFile": "douman.webp",
 		"date": "2022-11-27",
 		"user": "Ray",
-		"servantImageFile": "musashi.webp",
+		"servantImageFile": "musashi.png",
 		"turns": "3T"
 	},
 	{
@@ -149,7 +149,7 @@
 		"targetImageFile": "dioscuri.webp",
 		"date": "2022-12-18",
 		"user": "Ray",
-		"servantImageFile": "jalter.webp",
+		"servantImageFile": "jalter.png",
 		"turns": "3T"
 	},
 	{
@@ -158,7 +158,7 @@
 		"targetImageFile": "moriarty.webp",
 		"date": "2023-03-10",
 		"user": "Ray",
-		"servantImageFile": "jalter.webp",
+		"servantImageFile": "jalter.png",
 		"turns": "5T"
 	},
 	{
@@ -167,7 +167,7 @@
 		"targetImageFile": "taira.webp",
 		"date": "2023-01-29",
 		"user": "Ray",
-		"servantImageFile": "jalter.webp",
+		"servantImageFile": "jalter.png",
 		"turns": "4T"
 	},
 	{
@@ -176,7 +176,7 @@
 		"targetImageFile": "db.webp",
 		"date": "2023-03-21",
 		"user": "Ray",
-		"servantImageFile": "jalter.webp",
+		"servantImageFile": "jalter.png",
 		"turns": "7T"
 	},
 	{
@@ -185,7 +185,7 @@
 		"targetImageFile": "galatea.webp",
 		"date": "2023-03-20",
 		"user": "Requiem",
-		"servantImageFile": "skadi.webp",
+		"servantImageFile": "skadi.png",
 		"turns": "3T"
 	},
 	{
@@ -194,7 +194,7 @@
 		"targetImageFile": "arthur.webp",
 		"date": "2023-04-26",
 		"user": "Roz",
-		"servantImageFile": "caren.webp",
+		"servantImageFile": "caren.png",
 		"turns": "4T"
 	  },
 	  {
@@ -203,7 +203,7 @@
 		"targetImageFile": "db.webp",
 		"date": "2023-01-13",
 		"user": "Roz",
-		"servantImageFile": "kama.webp",
+		"servantImageFile": "kama.png",
 		"turns": "7T"
 	  },
 	  {
@@ -212,7 +212,7 @@
 		"targetImageFile": "arthur.webp",
 		"date": "2023-04-26",
 		"user": "Ray",
-		"servantImageFile": "jalter.webp",
+		"servantImageFile": "jalter.png",
 		"turns": "6T"
 	  },
 	  {
@@ -221,7 +221,7 @@
 		"targetImageFile": "arthur.webp",
 		"date": "2023-04-25",
 		"user": "Requiem",
-		"servantImageFile": "tamamocat.webp",
+		"servantImageFile": "tamamocat.png",
 		"turns": "4T"
 	  }
 ]
diff --git a/static/data/_navdata.json b/static/data/_navdata.json
index bf03d7f..9397c84 100644
--- a/static/data/_navdata.json
+++ b/static/data/_navdata.json
@@ -2,26 +2,26 @@
 	{
         "link": "/",
         "text": "Home",
-        "icon": "iconoir-home"
+        "icon": "home"
 	},
     {
         "link": "/servants",
         "text": "Servants",
-        "icon": "iconoir-task-list"
+        "icon": "servants"
 	},
     {
         "link": "/ta-collection",
         "text": "TA Collection",
-        "icon": "iconoir-database"
+        "icon": "ta_collection"
 	},
     {
         "link": "/blog",
         "text": "Blog",
-        "icon": "iconoir-bookmark-book"
+        "icon": "blog"
 	},
     {
         "link": "/about",
         "text": "About",
-        "icon": "iconoir-mail"
+        "icon": "about"
 	}
 ]
\ No newline at end of file
diff --git a/static/data/_servantdata.json b/static/data/_servantdata.json
index ca056bd..339940a 100644
--- a/static/data/_servantdata.json
+++ b/static/data/_servantdata.json
@@ -1,242 +1,272 @@
 [
+	{
+		"name": "Scathach",
+		"level": "120",
+		"np": "5",
+		"skills": "10 / 10 / 10",
+		"ml": "10",
+		"servantImageFile": "scathach_03.png",
+		"bondceImageFile": "scathach.png",
+		"bond10": true
+	},
 	{
 		"name": "Skadi",
 		"level": "120",
 		"np": "5",
-		"skills": "10 / 10 / 10 ",
+		"skills": "10 / 10 / 10",
 		"ml": "10",
-		"servantImageFile": "skadi_03.webp",
-		"bondceImageFile": "skadi.webp",
+		"servantImageFile": "skadi_03.png",
+		"bondceImageFile": "skadi.png",
 		"bond10": true
 	},
 	{
 		"name": "Skadi",
 		"level": "70",
 		"np": "1",
-		"skills": "10 / 10 / 10 ",
+		"skills": "10 / 10 / 10",
 		"ml": "1",
-		"servantImageFile": "skadi_02.webp",
-		"bondceImageFile": "skadi.webp",
+		"servantImageFile": "skadi_02.png",
+		"bondceImageFile": "skadi.png",
 		"bond10": true
 	},
 	{
 		"name": "Skadi",
 		"level": "1",
 		"np": "1",
-		"skills": "10 / X / X ",
+		"skills": "10 / X / X",
 		"ml": "1",
-		"servantImageFile": "skadi_01.webp",
-		"bondceImageFile": "skadi.webp",
+		"servantImageFile": "skadi_01.png",
+		"bondceImageFile": "skadi.png",
 		"bond10": true
 	},
 	{
 		"name": "Koyanskaya of Light",
 		"level": "90",
 		"np": "1",
-		"skills": "10 / 10 / 10 ",
+		"skills": "10 / 10 / 10",
 		"ml": "Not Unlocked",
-		"servantImageFile": "koyanlight_01.webp",
-		"bondceImageFile": "koyanlight.webp",
-		"bond10": false
+		"servantImageFile": "koyanlight_01.png",
+		"bondceImageFile": "koyanlight.png",
+		"bond10": true
 	},
 	{
 		"name": "Castoria",
 		"level": "90",
 		"np": "1",
-		"skills": "10 / 10 / 10 ",
-		"ml": "7",
-		"servantImageFile": "castoria_02.webp",
-		"bondceImageFile": "castoria.webp",
+		"skills": "10 / 10 / 10",
+		"ml": "10",
+		"servantImageFile": "castoria_02.png",
+		"bondceImageFile": "castoria.png",
 		"bond10": true
 	},
 	{
 		"name": "Castoria",
 		"level": "70",
 		"np": "1",
-		"skills": "10 / 10 / 10 ",
+		"skills": "10 / 10 / 10",
 		"ml": "1",
-		"servantImageFile": "castoria_01.webp",
-		"bondceImageFile": "castoria.webp",
+		"servantImageFile": "castoria_01.png",
+		"bondceImageFile": "castoria.png",
 		"bond10": true
 	},
 	{
 		"name": "Oberon",
 		"level": "90",
 		"np": "1",
-		"skills": "10 / 10 / 10 ",
-		"ml": "Not Unlocked",
-		"servantImageFile": "oberon_01.webp",
-		"bondceImageFile": "oberon.webp",
-		"bond10": false
+		"skills": "10 / 10 / 10",
+		"ml": "1",
+		"servantImageFile": "oberon_02.png",
+		"bondceImageFile": "oberon.png",
+		"bond10": true
 	},
 	{
 		"name": "Merlin",
 		"level": "90",
 		"np": "1",
-		"skills": "10 / 10 / 10 ",
+		"skills": "10 / 10 / 10",
 		"ml": "Not Unlocked",
-		"servantImageFile": "merlin_03.webp",
-		"bondceImageFile": "merlin.webp",
+		"servantImageFile": "merlin_03.png",
+		"bondceImageFile": "merlin.png",
 		"bond10": true
 	},
 	{
 		"name": "Merlin",
 		"level": "70",
 		"np": "1",
-		"skills": "9 / 1 / 9 ",
+		"skills": "9 / 1 / 9",
 		"ml": "Not Unlocked",
-		"servantImageFile": "merlin_01.webp",
-		"bondceImageFile": "merlin.webp",
+		"servantImageFile": "merlin_01.png",
+		"bondceImageFile": "merlin.png",
 		"bond10": true
 	},
 	{
 		"name": "Waver",
 		"level": "90",
 		"np": "1",
-		"skills": "10 / 10 / 10 ",
+		"skills": "10 / 10 / 10",
 		"ml": "Not Unlocked",
-		"servantImageFile": "waver_02.webp",
-		"bondceImageFile": "waver.webp",
+		"servantImageFile": "waver_02.png",
+		"bondceImageFile": "waver.png",
 		"bond10": true
 	},
 	{
 		"name": "Reines",
 		"level": "90",
 		"np": "1",
-		"skills": "10 / 10 / 10 ",
+		"skills": "10 / 10 / 10",
 		"ml": "9",
-		"servantImageFile": "reines_01.webp",
-		"bondceImageFile": "reines.webp",
+		"servantImageFile": "reines_01.png",
+		"bondceImageFile": "reines.png",
 		"bond10": true
 	},
 	{
 		"name": "Tamamo-no-Mae",
 		"level": "90",
 		"np": "2",
-		"skills": "10 / 10 / 10 ",
+		"skills": "10 / 10 / 10",
 		"ml": "Not Unlocked",
-		"servantImageFile": "tamamo_03.webp",
-		"bondceImageFile": "tamamo.webp",
+		"servantImageFile": "tamamo_03.png",
+		"bondceImageFile": "tamamo.png",
 		"bond10": true
 	},
 	{
 		"name": "Van Gogh",
 		"level": "90",
 		"np": "1",
-		"skills": "10 / 10 / 10 ",
+		"skills": "10 / 10 / 10",
 		"ml": "10",
-		"servantImageFile": "gogh_01.webp",
-		"bondceImageFile": "gogh.webp",
+		"servantImageFile": "gogh_01.png",
+		"bondceImageFile": "gogh.png",
 		"bond10": true
 	},
 	{
 		"name": "Miss Crane",
 		"level": "90",
 		"np": "1",
-		"skills": "10 / 10 / 10 ",
+		"skills": "10 / 10 / 10",
 		"ml": "Not Unlocked",
-		"servantImageFile": "crane_01.webp",
-		"bondceImageFile": "crane.webp",
+		"servantImageFile": "crane_01.png",
+		"bondceImageFile": "crane.png",
 		"bond10": false
 	},
 	{
 		"name": "Ashiya Douman",
 		"level": "90",
 		"np": "1",
-		"skills": "9 / 9 / 10 ",
-		"ml": "Not Unlocked",
-		"servantImageFile": "douman_01.webp",
-		"bondceImageFile": "douman.webp",
+		"skills": "9 / 9 / 10",
+		"ml": "10",
+		"servantImageFile": "douman_01.png",
+		"bondceImageFile": "douman.png",
 		"bond10": false
 	},
 	{
 		"name": "Himiko",
 		"level": "90",
 		"np": "1",
-		"skills": "9 / 9 / 9 ",
+		"skills": "9 / 9 / 9",
 		"ml": "Not Unlocked",
-		"servantImageFile": "himiko_03.webp",
-		"bondceImageFile": "himiko.webp",
+		"servantImageFile": "himiko_03.png",
+		"bondceImageFile": "himiko.png",
+		"bond10": false
+	},
+	{
+		"name": "Sherlock Holmes",
+		"level": "90",
+		"np": "1",
+		"skills": "9 / 10 / 9",
+		"ml": "Not Unlocked",
+		"servantImageFile": "sherlock_03.png",
+		"bondceImageFile": "sherlock.png",
 		"bond10": false
 	},
 	{
 		"name": "Nero (Bride)",
 		"level": "90",
 		"np": "1",
-		"skills": "10 / 10 / 9 ",
+		"skills": "10 / 10 / 10",
 		"ml": "Not Unlocked",
-		"servantImageFile": "bride_03.webp",
-		"bondceImageFile": "bride.webp",
+		"servantImageFile": "bride_03.png",
+		"bondceImageFile": "bride.png",
+		"bond10": false
+	},
+	{
+		"name": "Taigon Wang",
+		"level": "70",
+		"np": "1",
+		"skills": "10 / 9 / 10",
+		"ml": "Not Unlocked",
+		"servantImageFile": "taigong_03.png",
+		"bondceImageFile": "taigong.png",
 		"bond10": false
 	},
 	{
 		"name": "Nightingale (Santa)",
 		"level": "80",
 		"np": "5",
-		"skills": "9 / 10 / 10 ",
+		"skills": "9 / 10 / 9",
 		"ml": "Not Unlocked",
-		"servantImageFile": "santagale_01.webp",
-		"bondceImageFile": "santagale.webp",
+		"servantImageFile": "santagale_01.png",
+		"bondceImageFile": "santagale.png",
 		"bond10": true
 	},
 	{
 		"name": "Nightingale (Santa)",
 		"level": "60",
 		"np": "1",
-		"skills": "1 / 10 / 10 ",
+		"skills": "1 / 10 / 10",
 		"ml": "Not Unlocked",
-		"servantImageFile": "santagale_01.webp",
-		"bondceImageFile": "santagale.webp",
+		"servantImageFile": "santagale_01.png",
+		"bondceImageFile": "santagale.png",
 		"bond10": true
 	},
 	{
 		"name": "Elisabeth Báthory",
 		"level": "40",
 		"np": "1",
-		"skills": "9 / 9 / X ",
+		"skills": "9 / 9 / X",
 		"ml": "Not Unlocked",
-		"servantImageFile": "liz_01.webp",
-		"bondceImageFile": "liz.webp",
+		"servantImageFile": "liz_01.png",
+		"bondceImageFile": "liz.png",
 		"bond10": false
 	},
 	{
 		"name": "Wu Zetian",
 		"level": "60",
 		"np": "1",
-		"skills": "9 / 1 / 9 ",
+		"skills": "10 / 9 / 10",
 		"ml": "Not Unlocked",
-		"servantImageFile": "wu_01.webp",
-		"bondceImageFile": "wu.webp",
+		"servantImageFile": "wu_01.png",
+		"bondceImageFile": "wu.png",
 		"bond10": true
 	},
 	{
 		"name": "Ibaraki-Douji",
 		"level": "40",
 		"np": "1",
-		"skills": "8 / 8 / X ",
+		"skills": "9 / 10 / X ",
 		"ml": "Not Unlocked",
-		"servantImageFile": "ibaraki_02.webp",
-		"bondceImageFile": "ibaraki.webp",
+		"servantImageFile": "ibaraki_02.png",
+		"bondceImageFile": "ibaraki.png",
 		"bond10": false
 	},
 	{
 		"name": "Calamity Jane",
 		"level": "60",
 		"np": "1",
-		"skills": "1 / 9 / 9 ",
+		"skills": "1 / 9 / 9",
 		"ml": "Not Unlocked",
-		"servantImageFile": "jane_03.webp",
-		"bondceImageFile": "jane.webp",
+		"servantImageFile": "jane_02.png",
+		"bondceImageFile": "jane.png",
 		"bond10": false
 	},
 	{
 		"name": "Chiron",
 		"level": "60",
 		"np": "1",
-		"skills": "1 / 9 / 9 ",
+		"skills": "1 / 10 / 10",
 		"ml": "Not Unlocked",
-		"servantImageFile": "chiron_01.webp",
-		"bondceImageFile": "chiron.webp",
+		"servantImageFile": "chiron_01.png",
+		"bondceImageFile": "chiron.png",
 		"bond10": false
 	}
 ]
diff --git a/static/data/_tadata.json b/static/data/_tadata.json
index af2436b..b09079a 100644
--- a/static/data/_tadata.json
+++ b/static/data/_tadata.json
@@ -4,7 +4,7 @@
 		"link": "https://www.youtube.com/watch?v=d1ftVeitR6c",
 		"targetImageFile": "db.webp",
 		"date": "2022-07-09",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "7T"
 	},
 	{
@@ -12,7 +12,7 @@
 		"link": "https://www.youtube.com/watch?v=m3SATSOfpt4",
 		"targetImageFile": "kingprotea.webp",
 		"date": "2022-06-21",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "1T"
 	},
 	{
@@ -20,7 +20,7 @@
 		"link": "https://www.youtube.com/watch?v=01Qx4Hs-X4M",
 		"targetImageFile": "solomon.webp",
 		"date": "2022-06-28",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "1T"
 	},
 	{
@@ -28,7 +28,7 @@
 		"link": "https://www.youtube.com/watch?v=AaqRN73dO5k",
 		"targetImageFile": "ibuki.webp",
 		"date": "2022-11-22",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -36,7 +36,7 @@
 		"link": "https://www.youtube.com/watch?v=S8OQ7yWldJY",
 		"targetImageFile": "dioscuri.webp",
 		"date": "2022-12-24",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -44,7 +44,7 @@
 		"link": "https://www.youtube.com/watch?v=lz6iBZvoDuw",
 		"targetImageFile": "mhxx.webp",
 		"date": "2023-01-12",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "2T"
 	},
 	{
@@ -52,7 +52,7 @@
 		"link": "https://www.youtube.com/watch?v=YtRvahqFA0Y",
 		"targetImageFile": "taira.webp",
 		"date": "2022-11-22",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -60,7 +60,7 @@
 		"link": "https://www.youtube.com/watch?v=6cstr3vTd8Y",
 		"targetImageFile": "douman.webp",
 		"date": "2022-11-23",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -68,7 +68,7 @@
 		"link": "https://www.youtube.com/watch?v=cpqhx9dUgTU",
 		"targetImageFile": "santagale.webp",
 		"date": "2022-10-15",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "5T"
 	},
 	{
@@ -76,7 +76,7 @@
 		"link": "https://www.youtube.com/watch?v=u72o7PDBtks",
 		"targetImageFile": "fuuma.webp",
 		"date": "2022-06-04",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -84,7 +84,7 @@
 		"link": "https://www.youtube.com/watch?v=k7vGC4kpEFg",
 		"targetImageFile": "erice.webp",
 		"date": "2022-05-11",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -92,7 +92,7 @@
 		"link": "https://www.youtube.com/watch?v=aYlyfAzuFw0",
 		"targetImageFile": "kirschtaria.webp",
 		"date": "2022-04-04",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -100,7 +100,7 @@
 		"link": "https://www.youtube.com/watch?v=uo3jI9xuVwI",
 		"targetImageFile": "odysseus.webp",
 		"date": "2022-03-06",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -108,7 +108,7 @@
 		"link": "https://www.youtube.com/watch?v=MOCMXZ17FkU",
 		"targetImageFile": "sei.webp",
 		"date": "2022-02-09",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "4T"
 	},
 	{
@@ -116,7 +116,7 @@
 		"link": "https://www.youtube.com/watch?v=MU_Hw2KKYRU",
 		"targetImageFile": "penth.webp",
 		"date": "2022-01-23",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -124,7 +124,7 @@
 		"link": "https://www.youtube.com/watch?v=fwCmEiaocQo",
 		"targetImageFile": "orion.webp",
 		"date": "2023-02-25",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "4T"
 	},
 	{
@@ -132,7 +132,7 @@
 		"link": "https://www.youtube.com/watch?v=fQImgJirFeo",
 		"targetImageFile": "moriarty.webp",
 		"date": "2023-03-10",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "5T"
 	},
 	{
@@ -140,7 +140,7 @@
 		"link": "https://www.youtube.com/watch?v=3scILqsgobU",
 		"targetImageFile": "nobunaga.webp",
 		"date": "2022-09-21",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "4T"
 	},
 	{
@@ -148,7 +148,7 @@
 		"link": "https://www.youtube.com/watch?v=HY95cWsjC08",
 		"targetImageFile": "shibata.webp",
 		"date": "2022-04-30",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -156,7 +156,7 @@
 		"link": "https://www.youtube.com/watch?v=7iO2WQt64-8",
 		"targetImageFile": "shibata.webp",
 		"date": "2022-04-26",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -164,7 +164,7 @@
 		"link": "https://www.youtube.com/watch?v=gUtBYNxH4Ck",
 		"targetImageFile": "galatea.webp",
 		"date": "2023-03-20",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -172,7 +172,7 @@
 		"link": "https://www.youtube.com/watch?v=lZHgSVpPv24",
 		"targetImageFile": "goetia.webp",
 		"date": "2023-07-04",
-		"servantImageFile": "skadi.webp",
+		"servantImageFile": "skadi.png",
 		"turns": "2T"
 	},
 	{
@@ -180,7 +180,7 @@
 		"link": "https://www.youtube.com/watch?v=f35hlBXuR3w",
 		"targetImageFile": "melusine.webp",
 		"date": "2023-06-26",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -188,7 +188,7 @@
 		"link": "https://www.youtube.com/watch?v=7wQ6iabqgEc",
 		"targetImageFile": "morgan.webp",
 		"date": "2023-06-26",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -196,7 +196,7 @@
 		"link": "https://www.youtube.com/watch?v=sQ7HHl1Pb3c",
 		"targetImageFile": "morgan.webp",
 		"date": "2023-06-25",
-		"servantImageFile": "skadi.webp",
+		"servantImageFile": "skadi.png",
 		"turns": "3T"
 	},
 	{
@@ -204,7 +204,7 @@
 		"link": "https://www.youtube.com/watch?v=ZPgIDZjrGA0",
 		"targetImageFile": "woodwose.webp",
 		"date": "2023-06-23",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -212,7 +212,7 @@
 		"link": "https://www.youtube.com/watch?v=kjMAccbq7-A",
 		"targetImageFile": "barghest.webp",
 		"date": "2023-06-21",
-		"servantImageFile": "tomoe.webp",
+		"servantImageFile": "tomoe.png",
 		"turns": "2T"
 	},
 	{
@@ -220,7 +220,7 @@
 		"link": "https://www.youtube.com/watch?v=IwkCnVej_PY",
 		"targetImageFile": "calamityofnorwich.webp",
 		"date": "2023-06-08",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -228,7 +228,7 @@
 		"link": "https://www.youtube.com/watch?v=MKhkvG0CHko",
 		"targetImageFile": "reddragon.webp",
 		"date": "2023-07-10",
-		"servantImageFile": "tomoesummer.webp",
+		"servantImageFile": "tomoesummer.png",
 		"turns": "1T"
 	},
 	{
@@ -236,7 +236,7 @@
 		"link": "https://www.youtube.com/watch?v=tejeiYpzfqo",
 		"targetImageFile": "albion.webp",
 		"date": "2023-07-11",
-		"servantImageFile": "skadi.webp",
+		"servantImageFile": "skadi.png",
 		"turns": "3T"
 	},
 	{
@@ -244,7 +244,7 @@
 		"link": "https://www.youtube.com/watch?v=E8fjEYFqrWI",
 		"targetImageFile": "albion.webp",
 		"date": "2023-07-12",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -252,7 +252,7 @@
 		"link": "https://www.youtube.com/watch?v=5U42nu-vPnk",
 		"targetImageFile": "albion.webp",
 		"date": "2023-07-12",
-		"servantImageFile": "saberalter.webp",
+		"servantImageFile": "saberalter.png",
 		"turns": "3T"
 	},
 	{
@@ -260,7 +260,7 @@
 		"link": "https://www.youtube.com/watch?v=WrHudtdfivA",
 		"targetImageFile": "cernnunos.webp",
 		"date": "2023-07-19",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "4T"
 	},
 	{
@@ -268,7 +268,7 @@
 		"link": "https://www.youtube.com/watch?v=i8LfxctXhlA",
 		"targetImageFile": "abyssalworm.webp",
 		"date": "2023-07-20",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -276,7 +276,7 @@
 		"link": "https://www.youtube.com/watch?v=9db9BZ4ZzUo",
 		"targetImageFile": "koyo.webp",
 		"date": "2023-09-24",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -284,7 +284,7 @@
 		"link": "https://www.youtube.com/watch?v=u44lOISIpHo",
 		"targetImageFile": "kamasummer.webp",
 		"date": "2023-09-25",
-		"servantImageFile": "skadi.webp",
+		"servantImageFile": "skadi.png",
 		"turns": "3T"
 	},
 	{
@@ -292,7 +292,7 @@
 		"link": "https://www.youtube.com/watch?v=bgt6z0Sfpl8",
 		"targetImageFile": "zenobia.webp",
 		"date": "2023-10-26",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -300,7 +300,7 @@
 		"link": "https://www.youtube.com/watch?v=RWco4pduGUM",
 		"targetImageFile": "izumo.webp",
 		"date": "2023-11-27",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
@@ -308,7 +308,23 @@
 		"link": "https://www.youtube.com/watch?v=qEI8wZbnWww",
 		"targetImageFile": "skadi.webp",
 		"date": "2023-12-16",
-		"servantImageFile": "shishou.webp",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
+	},
+	{
+		"title": "Tunguska - Beast of Taming 4T (FLO)",
+		"link": "https://www.youtube.com/watch?v=g6aASJeL-ao",
+		"targetImageFile": "koyanskayaofdark.png",
+		"date": "2023-12-26",
+		"servantImageFile": "shishou.png",
+		"turns": "4T"
+	},
+	{
+		"title": "Tunguska - Beast IV:L 4T",
+		"link": "https://www.youtube.com/watch?v=brz21NKMMsY",
+		"targetImageFile": "beast_4_l.png",
+		"date": "2023-12-31",
+		"servantImageFile": "shishou.png",
+		"turns": "4T"
 	}
 ]
diff --git a/static/data/_technologydata.json b/static/data/_technologydata.json
index e8d4dc9..1a3f70a 100644
--- a/static/data/_technologydata.json
+++ b/static/data/_technologydata.json
@@ -14,6 +14,11 @@
       "link": "https://www.docker.com/",
       "imageFile": "docker.webp"
     },
+    {
+      "title": "Dockge",
+      "link": "https://github.com/louislam/dockge",
+      "imageFile": "dockge.png"
+    },
     {
       "title": "Typescript",
       "link": "https://www.typescriptlang.org/",
diff --git a/unlighthouse.config.ts b/unlighthouse.config.ts
index d289ab5..4d2881a 100644
--- a/unlighthouse.config.ts
+++ b/unlighthouse.config.ts
@@ -3,7 +3,7 @@ export default {
         args: ["--no-sandbox", "--disable-setuid-sandbox"],
     },
     ci: {
-        budget: 90,
+        budget: 50,
         buildStatic: true
     },
     outputPath: "unlighthouse-reports",