diff --git a/web/package-lock.json b/web/package-lock.json
index e1cf15ab..97e1f5df 100644
--- a/web/package-lock.json
+++ b/web/package-lock.json
@@ -19,8 +19,8 @@
 				"tailwindcss": "^3.3.2"
 			},
 			"devDependencies": {
-				"@types/gtag.js": "^0.0.14",
-				"@types/node": "18.18.0",
+				"@types/gtag.js": "^0.0.18",
+				"@types/node": "18.19.4",
 				"@types/react": "^18.2.17",
 				"autoprefixer": "^10.4.14",
 				"postcss": "^8.4.21",
@@ -102,14 +102,14 @@
 			"integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
 		},
 		"node_modules/@next/env": {
-			"version": "13.5.3",
-			"resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.3.tgz",
-			"integrity": "sha512-X4te86vsbjsB7iO4usY9jLPtZ827Mbx+WcwNBGUOIuswuTAKQtzsuoxc/6KLxCMvogKG795MhrR1LDhYgDvasg=="
+			"version": "13.5.6",
+			"resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.6.tgz",
+			"integrity": "sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw=="
 		},
 		"node_modules/@next/swc-darwin-arm64": {
-			"version": "13.5.3",
-			"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.3.tgz",
-			"integrity": "sha512-6hiYNJxJmyYvvKGrVThzo4nTcqvqUTA/JvKim7Auaj33NexDqSNwN5YrrQu+QhZJCIpv2tULSHt+lf+rUflLSw==",
+			"version": "13.5.6",
+			"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.6.tgz",
+			"integrity": "sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA==",
 			"cpu": [
 				"arm64"
 			],
@@ -122,9 +122,9 @@
 			}
 		},
 		"node_modules/@next/swc-darwin-x64": {
-			"version": "13.5.3",
-			"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.3.tgz",
-			"integrity": "sha512-UpBKxu2ob9scbpJyEq/xPgpdrgBgN3aLYlxyGqlYX5/KnwpJpFuIHU2lx8upQQ7L+MEmz+fA1XSgesoK92ppwQ==",
+			"version": "13.5.6",
+			"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.6.tgz",
+			"integrity": "sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA==",
 			"cpu": [
 				"x64"
 			],
@@ -137,9 +137,9 @@
 			}
 		},
 		"node_modules/@next/swc-linux-arm64-gnu": {
-			"version": "13.5.3",
-			"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.3.tgz",
-			"integrity": "sha512-5AzM7Yx1Ky+oLY6pHs7tjONTF22JirDPd5Jw/3/NazJ73uGB05NqhGhB4SbeCchg7SlVYVBeRMrMSZwJwq/xoA==",
+			"version": "13.5.6",
+			"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.6.tgz",
+			"integrity": "sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg==",
 			"cpu": [
 				"arm64"
 			],
@@ -152,9 +152,9 @@
 			}
 		},
 		"node_modules/@next/swc-linux-arm64-musl": {
-			"version": "13.5.3",
-			"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.3.tgz",
-			"integrity": "sha512-A/C1shbyUhj7wRtokmn73eBksjTM7fFQoY2v/0rTM5wehpkjQRLOXI8WJsag2uLhnZ4ii5OzR1rFPwoD9cvOgA==",
+			"version": "13.5.6",
+			"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.6.tgz",
+			"integrity": "sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q==",
 			"cpu": [
 				"arm64"
 			],
@@ -167,9 +167,9 @@
 			}
 		},
 		"node_modules/@next/swc-linux-x64-gnu": {
-			"version": "13.5.3",
-			"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.3.tgz",
-			"integrity": "sha512-FubPuw/Boz8tKkk+5eOuDHOpk36F80rbgxlx4+xty/U71e3wZZxVYHfZXmf0IRToBn1Crb8WvLM9OYj/Ur815g==",
+			"version": "13.5.6",
+			"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.6.tgz",
+			"integrity": "sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw==",
 			"cpu": [
 				"x64"
 			],
@@ -182,9 +182,9 @@
 			}
 		},
 		"node_modules/@next/swc-linux-x64-musl": {
-			"version": "13.5.3",
-			"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.3.tgz",
-			"integrity": "sha512-DPw8nFuM1uEpbX47tM3wiXIR0Qa+atSzs9Q3peY1urkhofx44o7E1svnq+a5Q0r8lAcssLrwiM+OyJJgV/oj7g==",
+			"version": "13.5.6",
+			"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.6.tgz",
+			"integrity": "sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ==",
 			"cpu": [
 				"x64"
 			],
@@ -197,9 +197,9 @@
 			}
 		},
 		"node_modules/@next/swc-win32-arm64-msvc": {
-			"version": "13.5.3",
-			"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.3.tgz",
-			"integrity": "sha512-zBPSP8cHL51Gub/YV8UUePW7AVGukp2D8JU93IHbVDu2qmhFAn9LWXiOOLKplZQKxnIPUkJTQAJDCWBWU4UWUA==",
+			"version": "13.5.6",
+			"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.6.tgz",
+			"integrity": "sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg==",
 			"cpu": [
 				"arm64"
 			],
@@ -212,9 +212,9 @@
 			}
 		},
 		"node_modules/@next/swc-win32-ia32-msvc": {
-			"version": "13.5.3",
-			"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.3.tgz",
-			"integrity": "sha512-ONcL/lYyGUj4W37D4I2I450SZtSenmFAvapkJQNIJhrPMhzDU/AdfLkW98NvH1D2+7FXwe7yclf3+B7v28uzBQ==",
+			"version": "13.5.6",
+			"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.6.tgz",
+			"integrity": "sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg==",
 			"cpu": [
 				"ia32"
 			],
@@ -227,9 +227,9 @@
 			}
 		},
 		"node_modules/@next/swc-win32-x64-msvc": {
-			"version": "13.5.3",
-			"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.3.tgz",
-			"integrity": "sha512-2Vz2tYWaLqJvLcWbbTlJ5k9AN6JD7a5CN2pAeIzpbecK8ZF/yobA39cXtv6e+Z8c5UJuVOmaTldEAIxvsIux/Q==",
+			"version": "13.5.6",
+			"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.6.tgz",
+			"integrity": "sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ==",
 			"cpu": [
 				"x64"
 			],
@@ -274,9 +274,9 @@
 			}
 		},
 		"node_modules/@phosphor-icons/react": {
-			"version": "2.0.13",
-			"resolved": "https://registry.npmjs.org/@phosphor-icons/react/-/react-2.0.13.tgz",
-			"integrity": "sha512-lRjFfCv4pU8vDnPgZ8/QFzYmAJS08Vx+J2/+Ldh217pXaxvaayBZMC/3EinuMwmMylc97+XYCMPdH+y10I+f0g==",
+			"version": "2.0.15",
+			"resolved": "https://registry.npmjs.org/@phosphor-icons/react/-/react-2.0.15.tgz",
+			"integrity": "sha512-PQKNcRrfERlC8gJGNz0su0i9xVmeubXSNxucPcbCLDd9u0cwJVTEyYK87muul/svf0UXFdL2Vl6bbeOhT1Mwow==",
 			"engines": {
 				"node": ">=10"
 			},
@@ -294,20 +294,20 @@
 			}
 		},
 		"node_modules/@tanstack/query-core": {
-			"version": "4.35.3",
-			"resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.35.3.tgz",
-			"integrity": "sha512-PS+WEjd9wzKTyNjjQymvcOe1yg8f3wYc6mD+vb6CKyZAKvu4sIJwryfqfBULITKCla7P9C4l5e9RXePHvZOZeQ==",
+			"version": "4.36.1",
+			"resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.36.1.tgz",
+			"integrity": "sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==",
 			"funding": {
 				"type": "github",
 				"url": "https://github.com/sponsors/tannerlinsley"
 			}
 		},
 		"node_modules/@tanstack/react-query": {
-			"version": "4.35.3",
-			"resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.35.3.tgz",
-			"integrity": "sha512-UgTPioip/rGG3EQilXfA2j4BJkhEQsR+KAbF+KIuvQ7j4MkgnTCJF01SfRpIRNtQTlEfz/+IL7+jP8WA8bFbsw==",
+			"version": "4.36.1",
+			"resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.36.1.tgz",
+			"integrity": "sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==",
 			"dependencies": {
-				"@tanstack/query-core": "4.35.3",
+				"@tanstack/query-core": "4.36.1",
 				"use-sync-external-store": "^1.2.0"
 			},
 			"funding": {
@@ -329,16 +329,19 @@
 			}
 		},
 		"node_modules/@types/gtag.js": {
-			"version": "0.0.14",
-			"resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.14.tgz",
-			"integrity": "sha512-NcR9rf3B93ie5T086NIpXGTtoIJeOeQ14+IBIBwfNBztb175e/0gONc60ywUU4+f9dwctgz9L3I4h5Gs/hl31g==",
+			"version": "0.0.18",
+			"resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.18.tgz",
+			"integrity": "sha512-GJxnIvuXuVhKaHfsOdzGipoOoXq72y3mdcncc9h6i6E7nlz89zBEj2wrLM7bqO5Xk9Lm2B94MwdQsSwRlaPSWw==",
 			"dev": true
 		},
 		"node_modules/@types/node": {
-			"version": "18.18.0",
-			"resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.0.tgz",
-			"integrity": "sha512-3xA4X31gHT1F1l38ATDIL9GpRLdwVhnEFC8Uikv5ZLlXATwrCYyPq7ZWHxzxc3J/30SUiwiYT+bQe0/XvKlWbw==",
-			"dev": true
+			"version": "18.19.4",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.4.tgz",
+			"integrity": "sha512-xNzlUhzoHotIsnFoXmJB+yWmBvFZgKCI9TtPIEdYIMM1KWfwuY8zh7wvc1u1OAXlC7dlf6mZVx/s+Y5KfFz19A==",
+			"dev": true,
+			"dependencies": {
+				"undici-types": "~5.26.4"
+			}
 		},
 		"node_modules/@types/prop-types": {
 			"version": "15.7.4",
@@ -346,9 +349,9 @@
 			"license": "MIT"
 		},
 		"node_modules/@types/react": {
-			"version": "18.2.23",
-			"resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.23.tgz",
-			"integrity": "sha512-qHLW6n1q2+7KyBEYnrZpcsAmU/iiCh9WGCKgXvMxx89+TYdJWRjZohVIo9XTcoLhfX3+/hP0Pbulu3bCZQ9PSA==",
+			"version": "18.2.47",
+			"resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.47.tgz",
+			"integrity": "sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ==",
 			"dev": true,
 			"dependencies": {
 				"@types/prop-types": "*",
@@ -556,9 +559,9 @@
 			}
 		},
 		"node_modules/classnames": {
-			"version": "2.3.2",
-			"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
-			"integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
+			"version": "2.5.1",
+			"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz",
+			"integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="
 		},
 		"node_modules/client-only": {
 			"version": "0.0.1",
@@ -618,9 +621,9 @@
 			}
 		},
 		"node_modules/fast-glob": {
-			"version": "3.2.12",
-			"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
-			"integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+			"version": "3.3.2",
+			"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+			"integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
 			"dependencies": {
 				"@nodelib/fs.stat": "^2.0.2",
 				"@nodelib/fs.walk": "^1.2.3",
@@ -675,9 +678,9 @@
 			}
 		},
 		"node_modules/framer-motion": {
-			"version": "10.16.4",
-			"resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.16.4.tgz",
-			"integrity": "sha512-p9V9nGomS3m6/CALXqv6nFGMuFOxbWsmaOrdmhyQimMIlLl3LC7h7l86wge/Js/8cRu5ktutS/zlzgR7eBOtFA==",
+			"version": "10.17.9",
+			"resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.17.9.tgz",
+			"integrity": "sha512-z2NpP8r+XuALoPA7ZVZHm/OoTnwkQNJFBu91sC86o/FYvJ4x7ar3eQnixgwYWFK7kEqOtQ6whtNM37tn1KrOOA==",
 			"dependencies": {
 				"tslib": "^2.4.0"
 			},
@@ -828,9 +831,9 @@
 			}
 		},
 		"node_modules/jiti": {
-			"version": "1.18.2",
-			"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz",
-			"integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==",
+			"version": "1.21.0",
+			"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
+			"integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
 			"bin": {
 				"jiti": "bin/jiti.js"
 			}
@@ -904,9 +907,9 @@
 			}
 		},
 		"node_modules/nanoid": {
-			"version": "3.3.6",
-			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
-			"integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+			"version": "3.3.7",
+			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+			"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
 			"funding": [
 				{
 					"type": "github",
@@ -921,18 +924,17 @@
 			}
 		},
 		"node_modules/next": {
-			"version": "13.5.3",
-			"resolved": "https://registry.npmjs.org/next/-/next-13.5.3.tgz",
-			"integrity": "sha512-4Nt4HRLYDW/yRpJ/QR2t1v63UOMS55A38dnWv3UDOWGezuY0ZyFO1ABNbD7mulVzs9qVhgy2+ppjdsANpKP1mg==",
+			"version": "13.5.6",
+			"resolved": "https://registry.npmjs.org/next/-/next-13.5.6.tgz",
+			"integrity": "sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==",
 			"dependencies": {
-				"@next/env": "13.5.3",
+				"@next/env": "13.5.6",
 				"@swc/helpers": "0.5.2",
 				"busboy": "1.6.0",
 				"caniuse-lite": "^1.0.30001406",
-				"postcss": "8.4.14",
+				"postcss": "8.4.31",
 				"styled-jsx": "5.1.1",
-				"watchpack": "2.4.0",
-				"zod": "3.21.4"
+				"watchpack": "2.4.0"
 			},
 			"bin": {
 				"next": "dist/bin/next"
@@ -941,15 +943,15 @@
 				"node": ">=16.14.0"
 			},
 			"optionalDependencies": {
-				"@next/swc-darwin-arm64": "13.5.3",
-				"@next/swc-darwin-x64": "13.5.3",
-				"@next/swc-linux-arm64-gnu": "13.5.3",
-				"@next/swc-linux-arm64-musl": "13.5.3",
-				"@next/swc-linux-x64-gnu": "13.5.3",
-				"@next/swc-linux-x64-musl": "13.5.3",
-				"@next/swc-win32-arm64-msvc": "13.5.3",
-				"@next/swc-win32-ia32-msvc": "13.5.3",
-				"@next/swc-win32-x64-msvc": "13.5.3"
+				"@next/swc-darwin-arm64": "13.5.6",
+				"@next/swc-darwin-x64": "13.5.6",
+				"@next/swc-linux-arm64-gnu": "13.5.6",
+				"@next/swc-linux-arm64-musl": "13.5.6",
+				"@next/swc-linux-x64-gnu": "13.5.6",
+				"@next/swc-linux-x64-musl": "13.5.6",
+				"@next/swc-win32-arm64-msvc": "13.5.6",
+				"@next/swc-win32-ia32-msvc": "13.5.6",
+				"@next/swc-win32-x64-msvc": "13.5.6"
 			},
 			"peerDependencies": {
 				"@opentelemetry/api": "^1.1.0",
@@ -967,9 +969,9 @@
 			}
 		},
 		"node_modules/next/node_modules/postcss": {
-			"version": "8.4.14",
-			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
-			"integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
+			"version": "8.4.31",
+			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+			"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
 			"funding": [
 				{
 					"type": "opencollective",
@@ -978,10 +980,14 @@
 				{
 					"type": "tidelift",
 					"url": "https://tidelift.com/funding/github/npm/postcss"
+				},
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/ai"
 				}
 			],
 			"dependencies": {
-				"nanoid": "^3.3.4",
+				"nanoid": "^3.3.6",
 				"picocolors": "^1.0.0",
 				"source-map-js": "^1.0.2"
 			},
@@ -1078,9 +1084,9 @@
 			}
 		},
 		"node_modules/postcss": {
-			"version": "8.4.30",
-			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz",
-			"integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==",
+			"version": "8.4.33",
+			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz",
+			"integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==",
 			"funding": [
 				{
 					"type": "opencollective",
@@ -1096,7 +1102,7 @@
 				}
 			],
 			"dependencies": {
-				"nanoid": "^3.3.6",
+				"nanoid": "^3.3.7",
 				"picocolors": "^1.0.0",
 				"source-map-js": "^1.0.2"
 			},
@@ -1387,19 +1393,19 @@
 			}
 		},
 		"node_modules/tailwindcss": {
-			"version": "3.3.3",
-			"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz",
-			"integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==",
+			"version": "3.4.1",
+			"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz",
+			"integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==",
 			"dependencies": {
 				"@alloc/quick-lru": "^5.2.0",
 				"arg": "^5.0.2",
 				"chokidar": "^3.5.3",
 				"didyoumean": "^1.2.2",
 				"dlv": "^1.1.3",
-				"fast-glob": "^3.2.12",
+				"fast-glob": "^3.3.0",
 				"glob-parent": "^6.0.2",
 				"is-glob": "^4.0.3",
-				"jiti": "^1.18.2",
+				"jiti": "^1.19.1",
 				"lilconfig": "^2.1.0",
 				"micromatch": "^4.0.5",
 				"normalize-path": "^3.0.0",
@@ -1462,9 +1468,9 @@
 			"integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA=="
 		},
 		"node_modules/typescript": {
-			"version": "5.2.2",
-			"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
-			"integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
+			"version": "5.3.3",
+			"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
+			"integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
 			"dev": true,
 			"bin": {
 				"tsc": "bin/tsc",
@@ -1474,6 +1480,12 @@
 				"node": ">=14.17"
 			}
 		},
+		"node_modules/undici-types": {
+			"version": "5.26.5",
+			"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+			"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+			"dev": true
+		},
 		"node_modules/update-browserslist-db": {
 			"version": "1.0.11",
 			"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
@@ -1541,14 +1553,6 @@
 			"engines": {
 				"node": ">= 14"
 			}
-		},
-		"node_modules/zod": {
-			"version": "3.21.4",
-			"resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz",
-			"integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==",
-			"funding": {
-				"url": "https://github.com/sponsors/colinhacks"
-			}
 		}
 	}
 }
diff --git a/web/package.json b/web/package.json
index 6ffde194..47c6b6bc 100644
--- a/web/package.json
+++ b/web/package.json
@@ -19,8 +19,8 @@
 		"tailwindcss": "^3.3.2"
 	},
 	"devDependencies": {
-		"@types/gtag.js": "^0.0.14",
-		"@types/node": "18.18.0",
+		"@types/gtag.js": "^0.0.18",
+		"@types/node": "18.19.4",
 		"@types/react": "^18.2.17",
 		"autoprefixer": "^10.4.14",
 		"postcss": "^8.4.21",