diff --git a/package.json b/package.json
index 45fecad04..4ef61cf24 100644
--- a/package.json
+++ b/package.json
@@ -33,7 +33,7 @@
 		"@eslint/eslintrc": "^3.1.0",
 		"@eslint/js": "^9.11.1",
 		"@playwright/test": "^1.46.0",
-		"@sveltejs/kit": "^2.5.27",
+		"@sveltejs/kit": "^2.8.3",
 		"@sveltejs/vite-plugin-svelte": "^4.0.0",
 		"@types/chroma-js": "^2.4.4",
 		"@types/js-cookie": "^3.0.6",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c274669cc..8eb4f0420 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -34,7 +34,7 @@ importers:
         version: 8.28.0
       '@sentry/sveltekit':
         specifier: ^8.28.0
-        version: 8.28.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0)(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
+        version: 8.28.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0)(@sveltejs/kit@2.8.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
       '@sparticuz/chromium':
         specifier: ^122.0.0
         version: 122.0.0
@@ -43,7 +43,7 @@ importers:
         version: 3.1.1(svelte@5.0.4)
       '@sveltejs/adapter-vercel':
         specifier: ^5.4.3
-        version: 5.4.3(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))
+        version: 5.4.3(@sveltejs/kit@2.8.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))
       '@types/core-js':
         specifier: ^2.5.8
         version: 2.5.8
@@ -133,7 +133,7 @@ importers:
         version: 0.8.0(svelte@5.0.4)
       sveltekit-search-params:
         specifier: ^2.1.2
-        version: 2.1.2(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
+        version: 2.1.2(@sveltejs/kit@2.8.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
       ts-node:
         specifier: ^10.9.2
         version: 10.9.2(@types/node@22.2.0)(typescript@5.5.4)
@@ -155,7 +155,7 @@ importers:
     devDependencies:
       '@codecov/sveltekit-plugin':
         specifier: 0.0.1-beta.12
-        version: 0.0.1-beta.12(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
+        version: 0.0.1-beta.12(@sveltejs/kit@2.8.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
       '@eslint/compat':
         specifier: ^1.1.1
         version: 1.1.1
@@ -169,8 +169,8 @@ importers:
         specifier: ^1.46.0
         version: 1.46.0
       '@sveltejs/kit':
-        specifier: ^2.5.27
-        version: 2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
+        specifier: ^2.8.3
+        version: 2.8.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
       '@sveltejs/vite-plugin-svelte':
         specifier: ^4.0.0
         version: 4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
@@ -1311,8 +1311,8 @@ packages:
     peerDependencies:
       '@sveltejs/kit': ^2.4.0
 
-  '@sveltejs/kit@2.7.2':
-    resolution: {integrity: sha512-bFwrl+0bNr0/DHQZM0INwwSPNYqDjfsKRhUoa6rj9d8tDZzszBrJ3La6/HVFxWGONEigtG+SzHXa1BEa1BLdwA==}
+  '@sveltejs/kit@2.8.3':
+    resolution: {integrity: sha512-DVBVwugfzzn0SxKA+eAmKqcZ7aHZROCHxH7/pyrOi+HLtQ721eEsctGb9MkhEuqj6q/9S/OFYdn37vdxzFPdvw==}
     engines: {node: '>=18.13'}
     hasBin: true
     peerDependencies:
@@ -1550,6 +1550,7 @@ packages:
 
   acorn-import-assertions@1.9.0:
     resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==}
+    deprecated: package has been renamed to acorn-import-attributes
     peerDependencies:
       acorn: ^8
 
@@ -1869,7 +1870,7 @@ packages:
     resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
 
   concat-map@0.0.1:
-    resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
+    resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
 
   console-control-strings@1.1.0:
     resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
@@ -4610,11 +4611,11 @@ snapshots:
       unplugin: 1.10.1
       zod: 3.23.8
 
-  '@codecov/sveltekit-plugin@0.0.1-beta.12(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))':
+  '@codecov/sveltekit-plugin@0.0.1-beta.12(@sveltejs/kit@2.8.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))':
     dependencies:
       '@codecov/bundler-plugin-core': 0.0.1-beta.12
       '@codecov/vite-plugin': 0.0.1-beta.12(vite@5.4.9(@types/node@22.2.0))
-      '@sveltejs/kit': 2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
+      '@sveltejs/kit': 2.8.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
       svelte: 5.0.4
       unplugin: 1.10.1
     transitivePeerDependencies:
@@ -5000,7 +5001,7 @@ snapshots:
   '@jridgewell/gen-mapping@0.3.5':
     dependencies:
       '@jridgewell/set-array': 1.2.1
-      '@jridgewell/sourcemap-codec': 1.4.15
+      '@jridgewell/sourcemap-codec': 1.5.0
       '@jridgewell/trace-mapping': 0.3.25
 
   '@jridgewell/resolve-uri@3.1.1': {}
@@ -5021,7 +5022,7 @@ snapshots:
   '@jridgewell/trace-mapping@0.3.9':
     dependencies:
       '@jridgewell/resolve-uri': 3.1.1
-      '@jridgewell/sourcemap-codec': 1.4.15
+      '@jridgewell/sourcemap-codec': 1.5.0
 
   '@leveluptuts/svelte-side-menu@1.1.0(svelte@5.0.4)':
     dependencies:
@@ -5553,10 +5554,10 @@ snapshots:
       '@sentry/core': 8.28.0
       '@sentry/types': 8.28.0
       '@sentry/utils': 8.28.0
-      magic-string: 0.30.10
+      magic-string: 0.30.12
       svelte: 5.0.4
 
-  '@sentry/sveltekit@8.28.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0)(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))':
+  '@sentry/sveltekit@8.28.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0)(@sveltejs/kit@2.8.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))':
     dependencies:
       '@sentry/core': 8.28.0
       '@sentry/node': 8.28.0
@@ -5565,7 +5566,7 @@ snapshots:
       '@sentry/types': 8.28.0
       '@sentry/utils': 8.28.0
       '@sentry/vite-plugin': 2.22.3
-      '@sveltejs/kit': 2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
+      '@sveltejs/kit': 2.8.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
       magic-string: 0.30.7
       magicast: 0.2.8
       sorcery: 0.11.0
@@ -5606,16 +5607,16 @@ snapshots:
     dependencies:
       svelte: 5.0.4
 
-  '@sveltejs/adapter-vercel@5.4.3(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))':
+  '@sveltejs/adapter-vercel@5.4.3(@sveltejs/kit@2.8.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))':
     dependencies:
-      '@sveltejs/kit': 2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
+      '@sveltejs/kit': 2.8.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
       '@vercel/nft': 0.27.2
       esbuild: 0.21.5
     transitivePeerDependencies:
       - encoding
       - supports-color
 
-  '@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))':
+  '@sveltejs/kit@2.8.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))':
     dependencies:
       '@sveltejs/vite-plugin-svelte': 4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
       '@types/cookie': 0.6.0
@@ -5624,7 +5625,7 @@ snapshots:
       esm-env: 1.0.0
       import-meta-resolve: 4.1.0
       kleur: 4.1.5
-      magic-string: 0.30.10
+      magic-string: 0.30.12
       mrmime: 2.0.0
       sade: 1.8.1
       set-cookie-parser: 2.6.0
@@ -5657,7 +5658,7 @@ snapshots:
       debug: 4.3.7
       deepmerge: 4.3.1
       kleur: 4.1.5
-      magic-string: 0.30.10
+      magic-string: 0.30.12
       svelte: 5.0.4
       svelte-hmr: 0.16.0(svelte@5.0.4)
       vite: 5.4.9(@types/node@22.2.0)
@@ -5905,7 +5906,7 @@ snapshots:
   '@vitest/snapshot@2.0.5':
     dependencies:
       '@vitest/pretty-format': 2.0.5
-      magic-string: 0.30.10
+      magic-string: 0.30.12
       pathe: 1.1.2
 
   '@vitest/spy@2.0.5':
@@ -7252,7 +7253,7 @@ snapshots:
 
   magic-string@0.30.8:
     dependencies:
-      '@jridgewell/sourcemap-codec': 1.4.15
+      '@jridgewell/sourcemap-codec': 1.5.0
 
   magicast@0.2.8:
     dependencies:
@@ -8695,9 +8696,9 @@ snapshots:
       magic-string: 0.30.12
       zimmerframe: 1.1.2
 
-  sveltekit-search-params@2.1.2(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)):
+  sveltekit-search-params@2.1.2(@sveltejs/kit@2.8.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)):
     dependencies:
-      '@sveltejs/kit': 2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
+      '@sveltejs/kit': 2.8.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0)))(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
       '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@5.0.4)(vite@5.4.9(@types/node@22.2.0))
       svelte: 5.0.4
     transitivePeerDependencies: