diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..cd01f46
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,42 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.*
+.yarn/*
+!.yarn/patches
+!.yarn/plugins
+!.yarn/releases
+!.yarn/versions
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+.pnpm-debug.log*
+
+# env files (can opt-in for committing if needed)
+.env*
+.env.local
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 0000000..05e726d
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,18 @@
+import { defineConfig, globalIgnores } from "eslint/config";
+import nextVitals from "eslint-config-next/core-web-vitals";
+import nextTs from "eslint-config-next/typescript";
+
+const eslintConfig = defineConfig([
+ ...nextVitals,
+ ...nextTs,
+ // Override default ignores of eslint-config-next.
+ globalIgnores([
+ // Default ignores of eslint-config-next:
+ ".next/**",
+ "out/**",
+ "build/**",
+ "next-env.d.ts",
+ ]),
+]);
+
+export default eslintConfig;
diff --git a/next.config.ts b/next.config.ts
new file mode 100644
index 0000000..e9ffa30
--- /dev/null
+++ b/next.config.ts
@@ -0,0 +1,7 @@
+import type { NextConfig } from "next";
+
+const nextConfig: NextConfig = {
+ /* config options here */
+};
+
+export default nextConfig;
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..e35f7be
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,6189 @@
+{
+ "name": "hoanghapc",
+ "version": "0.1.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "hoanghapc",
+ "version": "0.1.0",
+ "dependencies": {
+ "next": "16.1.0",
+ "react": "19.2.3",
+ "react-dom": "19.2.3",
+ "swiper": "^12.0.3"
+ },
+ "devDependencies": {
+ "@tailwindcss/postcss": "^4",
+ "@types/node": "^20",
+ "@types/react": "^19",
+ "@types/react-dom": "^19",
+ "autoprefixer": "^10.4.23",
+ "eslint": "^9",
+ "eslint-config-next": "16.1.0",
+ "postcss": "^8.5.6",
+ "tailwindcss": "^4.1.18",
+ "typescript": "^5"
+ }
+ },
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz",
+ "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz",
+ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.5",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-module-transforms": "^7.28.3",
+ "@babel/helpers": "^7.28.4",
+ "@babel/parser": "^7.28.5",
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.28.5",
+ "@babel/types": "^7.28.5",
+ "@jridgewell/remapping": "^2.3.5",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz",
+ "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.28.5",
+ "@babel/types": "^7.28.5",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
+ "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.27.2",
+ "@babel/helper-validator-option": "^7.27.1",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-globals": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
+ "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
+ "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
+ "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/traverse": "^7.28.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
+ "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz",
+ "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.28.5"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
+ "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/parser": "^7.27.2",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz",
+ "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.5",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/parser": "^7.28.5",
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.5",
+ "debug": "^4.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz",
+ "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@emnapi/core": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz",
+ "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "@emnapi/wasi-threads": "1.1.0",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/runtime": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz",
+ "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/wasi-threads": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz",
+ "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
+ "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.2",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+ "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/config-array": {
+ "version": "0.21.1",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz",
+ "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==",
+ "dev": true,
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.7",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz",
+ "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==",
+ "dev": true,
+ "dependencies": {
+ "@eslint/core": "^0.17.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/core": {
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz",
+ "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz",
+ "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.1",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "9.39.2",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz",
+ "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ }
+ },
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz",
+ "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz",
+ "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==",
+ "dev": true,
+ "dependencies": {
+ "@eslint/core": "^0.17.0",
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@humanfs/core": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+ "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node": {
+ "version": "0.16.7",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz",
+ "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==",
+ "dev": true,
+ "dependencies": {
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.4.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
+ "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@img/colour": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz",
+ "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==",
+ "optional": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@img/sharp-darwin-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz",
+ "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-arm64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-darwin-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz",
+ "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-x64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz",
+ "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-x64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz",
+ "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz",
+ "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz",
+ "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-ppc64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz",
+ "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-riscv64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz",
+ "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-s390x": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz",
+ "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-x64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz",
+ "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz",
+ "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz",
+ "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz",
+ "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz",
+ "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-ppc64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz",
+ "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-ppc64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-riscv64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz",
+ "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-riscv64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-s390x": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz",
+ "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-s390x": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz",
+ "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-x64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz",
+ "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-arm64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz",
+ "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-x64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-wasm32": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz",
+ "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==",
+ "cpu": [
+ "wasm32"
+ ],
+ "optional": true,
+ "dependencies": {
+ "@emnapi/runtime": "^1.7.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz",
+ "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-ia32": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz",
+ "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz",
+ "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/remapping": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "dev": true
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@napi-rs/wasm-runtime": {
+ "version": "0.2.12",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz",
+ "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "@emnapi/core": "^1.4.3",
+ "@emnapi/runtime": "^1.4.3",
+ "@tybys/wasm-util": "^0.10.0"
+ }
+ },
+ "node_modules/@next/env": {
+ "version": "16.1.0",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-16.1.0.tgz",
+ "integrity": "sha512-Dd23XQeFHmhf3KBW76leYVkejHlCdB7erakC2At2apL1N08Bm+dLYNP+nNHh0tzUXfPQcNcXiQyacw0PG4Fcpw=="
+ },
+ "node_modules/@next/eslint-plugin-next": {
+ "version": "16.1.0",
+ "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.1.0.tgz",
+ "integrity": "sha512-sooC/k0LCF4/jLXYHpgfzJot04lZQqsttn8XJpTguP8N3GhqXN3wSkh68no2OcZzS/qeGwKDFTqhZ8WofdXmmQ==",
+ "dev": true,
+ "dependencies": {
+ "fast-glob": "3.3.1"
+ }
+ },
+ "node_modules/@next/swc-darwin-arm64": {
+ "version": "16.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.1.0.tgz",
+ "integrity": "sha512-onHq8dl8KjDb8taANQdzs3XmIqQWV3fYdslkGENuvVInFQzZnuBYYOG2HGHqqtvgmEU7xWzhgndXXxnhk4Z3fQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-darwin-x64": {
+ "version": "16.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.1.0.tgz",
+ "integrity": "sha512-Am6VJTp8KhLuAH13tPrAoVIXzuComlZlMwGr++o2KDjWiKPe3VwpxYhgV6I4gKls2EnsIMggL4y7GdXyDdJcFA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "16.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.1.0.tgz",
+ "integrity": "sha512-fVicfaJT6QfghNyg8JErZ+EMNQ812IS0lmKfbmC01LF1nFBcKfcs4Q75Yy8IqnsCqH/hZwGhqzj3IGVfWV6vpA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-musl": {
+ "version": "16.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.1.0.tgz",
+ "integrity": "sha512-TojQnDRoX7wJWXEEwdfuJtakMDW64Q7NrxQPviUnfYJvAx5/5wcGE+1vZzQ9F17m+SdpFeeXuOr6v3jbyusYMQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "16.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.1.0.tgz",
+ "integrity": "sha512-quhNFVySW4QwXiZkZ34SbfzNBm27vLrxZ2HwTfFFO1BBP0OY1+pI0nbyewKeq1FriqU+LZrob/cm26lwsiAi8Q==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-musl": {
+ "version": "16.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.1.0.tgz",
+ "integrity": "sha512-6JW0z2FZUK5iOVhUIWqE4RblAhUj1EwhZ/MwteGb//SpFTOHydnhbp3868gxalwea+mbOLWO6xgxj9wA9wNvNw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "16.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.1.0.tgz",
+ "integrity": "sha512-+DK/akkAvvXn5RdYN84IOmLkSy87SCmpofJPdB8vbLmf01BzntPBSYXnMvnEEv/Vcf3HYJwt24QZ/s6sWAwOMQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-x64-msvc": {
+ "version": "16.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.1.0.tgz",
+ "integrity": "sha512-Tr0j94MphimCCks+1rtYPzQFK+faJuhHWCegU9S9gDlgyOk8Y3kPmO64UcjyzZAlligeBtYZ/2bEyrKq0d2wqQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nolyfill/is-core-module": {
+ "version": "1.0.39",
+ "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz",
+ "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.4.0"
+ }
+ },
+ "node_modules/@rtsao/scc": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
+ "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==",
+ "dev": true
+ },
+ "node_modules/@swc/helpers": {
+ "version": "0.5.15",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
+ "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==",
+ "dependencies": {
+ "tslib": "^2.8.0"
+ }
+ },
+ "node_modules/@tailwindcss/node": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz",
+ "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/remapping": "^2.3.4",
+ "enhanced-resolve": "^5.18.3",
+ "jiti": "^2.6.1",
+ "lightningcss": "1.30.2",
+ "magic-string": "^0.30.21",
+ "source-map-js": "^1.2.1",
+ "tailwindcss": "4.1.18"
+ }
+ },
+ "node_modules/@tailwindcss/oxide": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz",
+ "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@tailwindcss/oxide-android-arm64": "4.1.18",
+ "@tailwindcss/oxide-darwin-arm64": "4.1.18",
+ "@tailwindcss/oxide-darwin-x64": "4.1.18",
+ "@tailwindcss/oxide-freebsd-x64": "4.1.18",
+ "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18",
+ "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18",
+ "@tailwindcss/oxide-linux-arm64-musl": "4.1.18",
+ "@tailwindcss/oxide-linux-x64-gnu": "4.1.18",
+ "@tailwindcss/oxide-linux-x64-musl": "4.1.18",
+ "@tailwindcss/oxide-wasm32-wasi": "4.1.18",
+ "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18",
+ "@tailwindcss/oxide-win32-x64-msvc": "4.1.18"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-android-arm64": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz",
+ "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-arm64": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz",
+ "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-x64": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz",
+ "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-freebsd-x64": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz",
+ "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz",
+ "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz",
+ "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-musl": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz",
+ "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-gnu": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz",
+ "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-musl": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz",
+ "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-wasm32-wasi": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz",
+ "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==",
+ "bundleDependencies": [
+ "@napi-rs/wasm-runtime",
+ "@emnapi/core",
+ "@emnapi/runtime",
+ "@tybys/wasm-util",
+ "@emnapi/wasi-threads",
+ "tslib"
+ ],
+ "cpu": [
+ "wasm32"
+ ],
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "@emnapi/core": "^1.7.1",
+ "@emnapi/runtime": "^1.7.1",
+ "@emnapi/wasi-threads": "^1.1.0",
+ "@napi-rs/wasm-runtime": "^1.1.0",
+ "@tybys/wasm-util": "^0.10.1",
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz",
+ "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-x64-msvc": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz",
+ "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/postcss": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.18.tgz",
+ "integrity": "sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==",
+ "dev": true,
+ "dependencies": {
+ "@alloc/quick-lru": "^5.2.0",
+ "@tailwindcss/node": "4.1.18",
+ "@tailwindcss/oxide": "4.1.18",
+ "postcss": "^8.4.41",
+ "tailwindcss": "4.1.18"
+ }
+ },
+ "node_modules/@tybys/wasm-util": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
+ "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
+ "dev": true
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true
+ },
+ "node_modules/@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "20.19.27",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.27.tgz",
+ "integrity": "sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~6.21.0"
+ }
+ },
+ "node_modules/@types/react": {
+ "version": "19.2.7",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz",
+ "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==",
+ "dev": true,
+ "dependencies": {
+ "csstype": "^3.2.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "19.2.3",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz",
+ "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
+ "dev": true,
+ "peerDependencies": {
+ "@types/react": "^19.2.0"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "8.50.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.50.0.tgz",
+ "integrity": "sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "8.50.0",
+ "@typescript-eslint/type-utils": "8.50.0",
+ "@typescript-eslint/utils": "8.50.0",
+ "@typescript-eslint/visitor-keys": "8.50.0",
+ "ignore": "^7.0.0",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^8.50.0",
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
+ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "8.50.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.50.0.tgz",
+ "integrity": "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "8.50.0",
+ "@typescript-eslint/types": "8.50.0",
+ "@typescript-eslint/typescript-estree": "8.50.0",
+ "@typescript-eslint/visitor-keys": "8.50.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/project-service": {
+ "version": "8.50.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.50.0.tgz",
+ "integrity": "sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/tsconfig-utils": "^8.50.0",
+ "@typescript-eslint/types": "^8.50.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "8.50.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.50.0.tgz",
+ "integrity": "sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "8.50.0",
+ "@typescript-eslint/visitor-keys": "8.50.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/tsconfig-utils": {
+ "version": "8.50.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.50.0.tgz",
+ "integrity": "sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "8.50.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.50.0.tgz",
+ "integrity": "sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "8.50.0",
+ "@typescript-eslint/typescript-estree": "8.50.0",
+ "@typescript-eslint/utils": "8.50.0",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.50.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.50.0.tgz",
+ "integrity": "sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.50.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.50.0.tgz",
+ "integrity": "sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/project-service": "8.50.0",
+ "@typescript-eslint/tsconfig-utils": "8.50.0",
+ "@typescript-eslint/types": "8.50.0",
+ "@typescript-eslint/visitor-keys": "8.50.0",
+ "debug": "^4.3.4",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "tinyglobby": "^0.2.15",
+ "ts-api-utils": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.50.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.50.0.tgz",
+ "integrity": "sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.7.0",
+ "@typescript-eslint/scope-manager": "8.50.0",
+ "@typescript-eslint/types": "8.50.0",
+ "@typescript-eslint/typescript-estree": "8.50.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.50.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.50.0.tgz",
+ "integrity": "sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "8.50.0",
+ "eslint-visitor-keys": "^4.2.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@unrs/resolver-binding-android-arm-eabi": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz",
+ "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-android-arm64": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz",
+ "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-darwin-arm64": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz",
+ "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-darwin-x64": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz",
+ "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-freebsd-x64": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz",
+ "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz",
+ "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz",
+ "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-arm64-gnu": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz",
+ "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-arm64-musl": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz",
+ "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz",
+ "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz",
+ "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-riscv64-musl": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz",
+ "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-s390x-gnu": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz",
+ "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-x64-gnu": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz",
+ "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-x64-musl": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz",
+ "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-wasm32-wasi": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz",
+ "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==",
+ "cpu": [
+ "wasm32"
+ ],
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "@napi-rs/wasm-runtime": "^0.2.11"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@unrs/resolver-binding-win32-arm64-msvc": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz",
+ "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-win32-ia32-msvc": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz",
+ "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-win32-x64-msvc": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz",
+ "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/acorn": {
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "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==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/aria-query": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
+ "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz",
+ "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "is-array-buffer": "^3.0.5"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-includes": {
+ "version": "3.1.9",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz",
+ "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.24.0",
+ "es-object-atoms": "^1.1.1",
+ "get-intrinsic": "^1.3.0",
+ "is-string": "^1.1.1",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.findlast": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz",
+ "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.findlastindex": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz",
+ "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.9",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "es-shim-unscopables": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flat": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz",
+ "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz",
+ "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.tosorted": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz",
+ "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.3",
+ "es-errors": "^1.3.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz",
+ "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ast-types-flow": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz",
+ "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==",
+ "dev": true
+ },
+ "node_modules/async-function": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz",
+ "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.23",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz",
+ "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==",
+ "dev": true,
+ "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.28.1",
+ "caniuse-lite": "^1.0.30001760",
+ "fraction.js": "^5.3.4",
+ "picocolors": "^1.1.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dev": true,
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/axe-core": {
+ "version": "4.11.0",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.0.tgz",
+ "integrity": "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/axobject-query": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
+ "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.9.11",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz",
+ "integrity": "sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.js"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
+ "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "baseline-browser-mapping": "^2.9.0",
+ "caniuse-lite": "^1.0.30001759",
+ "electron-to-chromium": "^1.5.263",
+ "node-releases": "^2.0.27",
+ "update-browserslist-db": "^1.2.0"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+ "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
+ "dev": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001761",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001761.tgz",
+ "integrity": "sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/client-only": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
+ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
+ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
+ "dev": true
+ },
+ "node_modules/damerau-levenshtein": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
+ "dev": true
+ },
+ "node_modules/data-view-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
+ "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz",
+ "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/inspect-js"
+ }
+ },
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz",
+ "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.267",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz",
+ "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==",
+ "dev": true
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.18.4",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz",
+ "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.24.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz",
+ "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.2",
+ "arraybuffer.prototype.slice": "^1.0.4",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "data-view-buffer": "^1.0.2",
+ "data-view-byte-length": "^1.0.2",
+ "data-view-byte-offset": "^1.0.1",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "es-set-tostringtag": "^2.1.0",
+ "es-to-primitive": "^1.3.0",
+ "function.prototype.name": "^1.1.8",
+ "get-intrinsic": "^1.3.0",
+ "get-proto": "^1.0.1",
+ "get-symbol-description": "^1.1.0",
+ "globalthis": "^1.0.4",
+ "gopd": "^1.2.0",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "internal-slot": "^1.1.0",
+ "is-array-buffer": "^3.0.5",
+ "is-callable": "^1.2.7",
+ "is-data-view": "^1.0.2",
+ "is-negative-zero": "^2.0.3",
+ "is-regex": "^1.2.1",
+ "is-set": "^2.0.3",
+ "is-shared-array-buffer": "^1.0.4",
+ "is-string": "^1.1.1",
+ "is-typed-array": "^1.1.15",
+ "is-weakref": "^1.1.1",
+ "math-intrinsics": "^1.1.0",
+ "object-inspect": "^1.13.4",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.7",
+ "own-keys": "^1.0.1",
+ "regexp.prototype.flags": "^1.5.4",
+ "safe-array-concat": "^1.1.3",
+ "safe-push-apply": "^1.0.0",
+ "safe-regex-test": "^1.1.0",
+ "set-proto": "^1.0.0",
+ "stop-iteration-iterator": "^1.1.0",
+ "string.prototype.trim": "^1.2.10",
+ "string.prototype.trimend": "^1.0.9",
+ "string.prototype.trimstart": "^1.0.8",
+ "typed-array-buffer": "^1.0.3",
+ "typed-array-byte-length": "^1.0.3",
+ "typed-array-byte-offset": "^1.0.4",
+ "typed-array-length": "^1.0.7",
+ "unbox-primitive": "^1.1.0",
+ "which-typed-array": "^1.1.19"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-iterator-helpers": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz",
+ "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.24.1",
+ "es-errors": "^1.3.0",
+ "es-set-tostringtag": "^2.1.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.3.0",
+ "globalthis": "^1.0.4",
+ "gopd": "^1.2.0",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "internal-slot": "^1.1.0",
+ "iterator.prototype": "^1.1.5",
+ "safe-array-concat": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz",
+ "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
+ "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.2.7",
+ "is-date-object": "^1.0.5",
+ "is-symbol": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "9.39.2",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz",
+ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.8.0",
+ "@eslint-community/regexpp": "^4.12.1",
+ "@eslint/config-array": "^0.21.1",
+ "@eslint/config-helpers": "^0.4.2",
+ "@eslint/core": "^0.17.0",
+ "@eslint/eslintrc": "^3.3.1",
+ "@eslint/js": "9.39.2",
+ "@eslint/plugin-kit": "^0.4.1",
+ "@humanfs/node": "^0.16.6",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@humanwhocodes/retry": "^0.4.2",
+ "@types/estree": "^1.0.6",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "debug": "^4.3.2",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^8.4.0",
+ "eslint-visitor-keys": "^4.2.1",
+ "espree": "^10.4.0",
+ "esquery": "^1.5.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^8.0.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-config-next": {
+ "version": "16.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-16.1.0.tgz",
+ "integrity": "sha512-RlPb8E2uO/Ix/w3kizxz6+6ogw99WqtNzTG0ArRZ5NEkIYcsfRb8U0j7aTG7NjRvcrsak5QtUSuxGNN2UcA58g==",
+ "dev": true,
+ "dependencies": {
+ "@next/eslint-plugin-next": "16.1.0",
+ "eslint-import-resolver-node": "^0.3.6",
+ "eslint-import-resolver-typescript": "^3.5.2",
+ "eslint-plugin-import": "^2.32.0",
+ "eslint-plugin-jsx-a11y": "^6.10.0",
+ "eslint-plugin-react": "^7.37.0",
+ "eslint-plugin-react-hooks": "^7.0.0",
+ "globals": "16.4.0",
+ "typescript-eslint": "^8.46.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=9.0.0",
+ "typescript": ">=3.3.1"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-config-next/node_modules/globals": {
+ "version": "16.4.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz",
+ "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
+ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7",
+ "is-core-module": "^2.13.0",
+ "resolve": "^1.22.4"
+ }
+ },
+ "node_modules/eslint-import-resolver-node/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-import-resolver-typescript": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz",
+ "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==",
+ "dev": true,
+ "dependencies": {
+ "@nolyfill/is-core-module": "1.0.39",
+ "debug": "^4.4.0",
+ "get-tsconfig": "^4.10.0",
+ "is-bun-module": "^2.0.0",
+ "stable-hash": "^0.0.5",
+ "tinyglobby": "^0.2.13",
+ "unrs-resolver": "^1.6.2"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint-import-resolver-typescript"
+ },
+ "peerDependencies": {
+ "eslint": "*",
+ "eslint-plugin-import": "*",
+ "eslint-plugin-import-x": "*"
+ },
+ "peerDependenciesMeta": {
+ "eslint-plugin-import": {
+ "optional": true
+ },
+ "eslint-plugin-import-x": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-module-utils": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz",
+ "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import": {
+ "version": "2.32.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz",
+ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==",
+ "dev": true,
+ "dependencies": {
+ "@rtsao/scc": "^1.1.0",
+ "array-includes": "^3.1.9",
+ "array.prototype.findlastindex": "^1.2.6",
+ "array.prototype.flat": "^1.3.3",
+ "array.prototype.flatmap": "^1.3.3",
+ "debug": "^3.2.7",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.9",
+ "eslint-module-utils": "^2.12.1",
+ "hasown": "^2.0.2",
+ "is-core-module": "^2.16.1",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.8",
+ "object.groupby": "^1.0.3",
+ "object.values": "^1.2.1",
+ "semver": "^6.3.1",
+ "string.prototype.trimend": "^1.0.9",
+ "tsconfig-paths": "^3.15.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y": {
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz",
+ "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==",
+ "dev": true,
+ "dependencies": {
+ "aria-query": "^5.3.2",
+ "array-includes": "^3.1.8",
+ "array.prototype.flatmap": "^1.3.2",
+ "ast-types-flow": "^0.0.8",
+ "axe-core": "^4.10.0",
+ "axobject-query": "^4.1.0",
+ "damerau-levenshtein": "^1.0.8",
+ "emoji-regex": "^9.2.2",
+ "hasown": "^2.0.2",
+ "jsx-ast-utils": "^3.3.5",
+ "language-tags": "^1.0.9",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.8",
+ "safe-regex-test": "^1.0.3",
+ "string.prototype.includes": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9"
+ }
+ },
+ "node_modules/eslint-plugin-react": {
+ "version": "7.37.5",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz",
+ "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.8",
+ "array.prototype.findlast": "^1.2.5",
+ "array.prototype.flatmap": "^1.3.3",
+ "array.prototype.tosorted": "^1.1.4",
+ "doctrine": "^2.1.0",
+ "es-iterator-helpers": "^1.2.1",
+ "estraverse": "^5.3.0",
+ "hasown": "^2.0.2",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.9",
+ "object.fromentries": "^2.0.8",
+ "object.values": "^1.2.1",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.5",
+ "semver": "^6.3.1",
+ "string.prototype.matchall": "^4.0.12",
+ "string.prototype.repeat": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz",
+ "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.24.4",
+ "@babel/parser": "^7.24.4",
+ "hermes-parser": "^0.25.1",
+ "zod": "^3.25.0 || ^4.0.0",
+ "zod-validation-error": "^3.5.0 || ^4.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.5",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
+ "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
+ "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.15.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.2.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
+ "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastq": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
+ "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
+ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+ "dev": true
+ },
+ "node_modules/for-each": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
+ "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.2.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "5.3.4",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz",
+ "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz",
+ "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "define-properties": "^1.2.1",
+ "functions-have-names": "^1.2.3",
+ "hasown": "^2.0.2",
+ "is-callable": "^1.2.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/generator-function": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz",
+ "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dev": true,
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz",
+ "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-tsconfig": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz",
+ "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==",
+ "dev": true,
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
+ },
+ "node_modules/has-bigints": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
+ "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
+ "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
+ "dev": true,
+ "dependencies": {
+ "dunder-proto": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hermes-estree": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz",
+ "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==",
+ "dev": true
+ },
+ "node_modules/hermes-parser": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz",
+ "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==",
+ "dev": true,
+ "dependencies": {
+ "hermes-estree": "0.25.1"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/internal-slot": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
+ "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.2",
+ "side-channel": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
+ "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-async-function": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz",
+ "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==",
+ "dev": true,
+ "dependencies": {
+ "async-function": "^1.0.0",
+ "call-bound": "^1.0.3",
+ "get-proto": "^1.0.1",
+ "has-tostringtag": "^1.0.2",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bigint": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
+ "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz",
+ "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bun-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz",
+ "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.7.1"
+ }
+ },
+ "node_modules/is-bun-module/node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-view": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz",
+ "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz",
+ "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-finalizationregistry": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz",
+ "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz",
+ "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.4",
+ "generator-function": "^2.0.0",
+ "get-proto": "^1.0.1",
+ "has-tostringtag": "^1.0.2",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+ "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz",
+ "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
+ "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-set": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+ "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz",
+ "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
+ "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz",
+ "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "has-symbols": "^1.1.0",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
+ "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
+ "dev": true,
+ "dependencies": {
+ "which-typed-array": "^1.1.16"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakmap": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+ "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz",
+ "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz",
+ "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/iterator.prototype": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz",
+ "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.6",
+ "get-proto": "^1.0.0",
+ "has-symbols": "^1.1.0",
+ "set-function-name": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz",
+ "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
+ "dev": true,
+ "bin": {
+ "jiti": "lib/jiti-cli.mjs"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsx-ast-utils": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
+ "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.6",
+ "array.prototype.flat": "^1.3.1",
+ "object.assign": "^4.1.4",
+ "object.values": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/language-subtag-registry": {
+ "version": "0.3.23",
+ "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz",
+ "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==",
+ "dev": true
+ },
+ "node_modules/language-tags": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz",
+ "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==",
+ "dev": true,
+ "dependencies": {
+ "language-subtag-registry": "^0.3.20"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lightningcss": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz",
+ "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==",
+ "dev": true,
+ "dependencies": {
+ "detect-libc": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-android-arm64": "1.30.2",
+ "lightningcss-darwin-arm64": "1.30.2",
+ "lightningcss-darwin-x64": "1.30.2",
+ "lightningcss-freebsd-x64": "1.30.2",
+ "lightningcss-linux-arm-gnueabihf": "1.30.2",
+ "lightningcss-linux-arm64-gnu": "1.30.2",
+ "lightningcss-linux-arm64-musl": "1.30.2",
+ "lightningcss-linux-x64-gnu": "1.30.2",
+ "lightningcss-linux-x64-musl": "1.30.2",
+ "lightningcss-win32-arm64-msvc": "1.30.2",
+ "lightningcss-win32-x64-msvc": "1.30.2"
+ }
+ },
+ "node_modules/lightningcss-android-arm64": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz",
+ "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz",
+ "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz",
+ "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz",
+ "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz",
+ "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz",
+ "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz",
+ "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz",
+ "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz",
+ "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-arm64-msvc": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz",
+ "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz",
+ "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/napi-postinstall": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz",
+ "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==",
+ "dev": true,
+ "bin": {
+ "napi-postinstall": "lib/cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/napi-postinstall"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/next": {
+ "version": "16.1.0",
+ "resolved": "https://registry.npmjs.org/next/-/next-16.1.0.tgz",
+ "integrity": "sha512-Y+KbmDbefYtHDDQKLNrmzE/YYzG2msqo2VXhzh5yrJ54tx/6TmGdkR5+kP9ma7i7LwZpZMfoY3m/AoPPPKxtVw==",
+ "dependencies": {
+ "@next/env": "16.1.0",
+ "@swc/helpers": "0.5.15",
+ "baseline-browser-mapping": "^2.8.3",
+ "caniuse-lite": "^1.0.30001579",
+ "postcss": "8.4.31",
+ "styled-jsx": "5.1.6"
+ },
+ "bin": {
+ "next": "dist/bin/next"
+ },
+ "engines": {
+ "node": ">=20.9.0"
+ },
+ "optionalDependencies": {
+ "@next/swc-darwin-arm64": "16.1.0",
+ "@next/swc-darwin-x64": "16.1.0",
+ "@next/swc-linux-arm64-gnu": "16.1.0",
+ "@next/swc-linux-arm64-musl": "16.1.0",
+ "@next/swc-linux-x64-gnu": "16.1.0",
+ "@next/swc-linux-x64-musl": "16.1.0",
+ "@next/swc-win32-arm64-msvc": "16.1.0",
+ "@next/swc-win32-x64-msvc": "16.1.0",
+ "sharp": "^0.34.4"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.1.0",
+ "@playwright/test": "^1.51.1",
+ "babel-plugin-react-compiler": "*",
+ "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0",
+ "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "@playwright/test": {
+ "optional": true
+ },
+ "babel-plugin-react-compiler": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/next/node_modules/postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.27",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
+ "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==",
+ "dev": true
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
+ "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0",
+ "has-symbols": "^1.1.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.entries": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz",
+ "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.fromentries": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
+ "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.groupby": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz",
+ "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.values": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz",
+ "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/own-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
+ "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.6",
+ "object-keys": "^1.1.1",
+ "safe-push-apply": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/possible-typed-array-names": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
+ "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.6",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "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==",
+ "dev": true
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "dev": true,
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/react": {
+ "version": "19.2.3",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz",
+ "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "19.2.3",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz",
+ "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==",
+ "dependencies": {
+ "scheduler": "^0.27.0"
+ },
+ "peerDependencies": {
+ "react": "^19.2.3"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true
+ },
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz",
+ "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.9",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.7",
+ "get-proto": "^1.0.1",
+ "which-builtin-type": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
+ "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "set-function-name": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.11",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
+ "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.16.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-array-concat": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
+ "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
+ "has-symbols": "^1.1.0",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-push-apply": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz",
+ "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
+ "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/scheduler": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
+ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-function-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-proto": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz",
+ "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==",
+ "dev": true,
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/sharp": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz",
+ "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==",
+ "hasInstallScript": true,
+ "optional": true,
+ "dependencies": {
+ "@img/colour": "^1.0.0",
+ "detect-libc": "^2.1.2",
+ "semver": "^7.7.3"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-darwin-arm64": "0.34.5",
+ "@img/sharp-darwin-x64": "0.34.5",
+ "@img/sharp-libvips-darwin-arm64": "1.2.4",
+ "@img/sharp-libvips-darwin-x64": "1.2.4",
+ "@img/sharp-libvips-linux-arm": "1.2.4",
+ "@img/sharp-libvips-linux-arm64": "1.2.4",
+ "@img/sharp-libvips-linux-ppc64": "1.2.4",
+ "@img/sharp-libvips-linux-riscv64": "1.2.4",
+ "@img/sharp-libvips-linux-s390x": "1.2.4",
+ "@img/sharp-libvips-linux-x64": "1.2.4",
+ "@img/sharp-libvips-linuxmusl-arm64": "1.2.4",
+ "@img/sharp-libvips-linuxmusl-x64": "1.2.4",
+ "@img/sharp-linux-arm": "0.34.5",
+ "@img/sharp-linux-arm64": "0.34.5",
+ "@img/sharp-linux-ppc64": "0.34.5",
+ "@img/sharp-linux-riscv64": "0.34.5",
+ "@img/sharp-linux-s390x": "0.34.5",
+ "@img/sharp-linux-x64": "0.34.5",
+ "@img/sharp-linuxmusl-arm64": "0.34.5",
+ "@img/sharp-linuxmusl-x64": "0.34.5",
+ "@img/sharp-wasm32": "0.34.5",
+ "@img/sharp-win32-arm64": "0.34.5",
+ "@img/sharp-win32-ia32": "0.34.5",
+ "@img/sharp-win32-x64": "0.34.5"
+ }
+ },
+ "node_modules/sharp/node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "optional": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-list": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/stable-hash": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz",
+ "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==",
+ "dev": true
+ },
+ "node_modules/stop-iteration-iterator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz",
+ "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "internal-slot": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/string.prototype.includes": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz",
+ "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/string.prototype.matchall": {
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz",
+ "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.6",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.6",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "internal-slot": "^1.1.0",
+ "regexp.prototype.flags": "^1.5.3",
+ "set-function-name": "^2.0.2",
+ "side-channel": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.repeat": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz",
+ "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.10",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
+ "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "define-data-property": "^1.1.4",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-object-atoms": "^1.0.0",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz",
+ "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/styled-jsx": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
+ "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==",
+ "dependencies": {
+ "client-only": "0.0.1"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/swiper": {
+ "version": "12.0.3",
+ "resolved": "https://registry.npmjs.org/swiper/-/swiper-12.0.3.tgz",
+ "integrity": "sha512-BHd6U1VPEIksrXlyXjMmRWO0onmdNPaTAFduzqR3pgjvi7KfmUCAm/0cj49u2D7B0zNjMw02TSeXfinC1hDCXg==",
+ "funding": [
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/swiperjs"
+ },
+ {
+ "type": "open_collective",
+ "url": "http://opencollective.com/swiper"
+ }
+ ],
+ "engines": {
+ "node": ">= 4.7.0"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz",
+ "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==",
+ "dev": true
+ },
+ "node_modules/tapable": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
+ "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.15",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
+ "dev": true,
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/tinyglobby/node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tinyglobby/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/ts-api-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
+ "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.12"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4"
+ }
+ },
+ "node_modules/tsconfig-paths": {
+ "version": "3.15.0",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
+ "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json5": "^0.0.29",
+ "json5": "^1.0.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "node_modules/tsconfig-paths/node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz",
+ "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "for-each": "^0.3.3",
+ "gopd": "^1.2.0",
+ "has-proto": "^1.2.0",
+ "is-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz",
+ "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "for-each": "^0.3.3",
+ "gopd": "^1.2.0",
+ "has-proto": "^1.2.0",
+ "is-typed-array": "^1.1.15",
+ "reflect.getprototypeof": "^1.0.9"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz",
+ "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0",
+ "reflect.getprototypeof": "^1.0.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/typescript-eslint": {
+ "version": "8.50.0",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.50.0.tgz",
+ "integrity": "sha512-Q1/6yNUmCpH94fbgMUMg2/BSAr/6U7GBk61kZTv1/asghQOWOjTlp9K8mixS5NcJmm2creY+UFfGeW/+OcA64A==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "8.50.0",
+ "@typescript-eslint/parser": "8.50.0",
+ "@typescript-eslint/typescript-estree": "8.50.0",
+ "@typescript-eslint/utils": "8.50.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
+ "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.1.0",
+ "which-boxed-primitive": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
+ "dev": true
+ },
+ "node_modules/unrs-resolver": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz",
+ "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "napi-postinstall": "^0.3.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unrs-resolver"
+ },
+ "optionalDependencies": {
+ "@unrs/resolver-binding-android-arm-eabi": "1.11.1",
+ "@unrs/resolver-binding-android-arm64": "1.11.1",
+ "@unrs/resolver-binding-darwin-arm64": "1.11.1",
+ "@unrs/resolver-binding-darwin-x64": "1.11.1",
+ "@unrs/resolver-binding-freebsd-x64": "1.11.1",
+ "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1",
+ "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1",
+ "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1",
+ "@unrs/resolver-binding-linux-arm64-musl": "1.11.1",
+ "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1",
+ "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1",
+ "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1",
+ "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1",
+ "@unrs/resolver-binding-linux-x64-gnu": "1.11.1",
+ "@unrs/resolver-binding-linux-x64-musl": "1.11.1",
+ "@unrs/resolver-binding-wasm32-wasi": "1.11.1",
+ "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1",
+ "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1",
+ "@unrs/resolver-binding-win32-x64-msvc": "1.11.1"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
+ "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz",
+ "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==",
+ "dev": true,
+ "dependencies": {
+ "is-bigint": "^1.1.0",
+ "is-boolean-object": "^1.2.1",
+ "is-number-object": "^1.1.1",
+ "is-string": "^1.1.1",
+ "is-symbol": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-builtin-type": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz",
+ "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "function.prototype.name": "^1.1.6",
+ "has-tostringtag": "^1.0.2",
+ "is-async-function": "^2.0.0",
+ "is-date-object": "^1.1.0",
+ "is-finalizationregistry": "^1.1.0",
+ "is-generator-function": "^1.0.10",
+ "is-regex": "^1.2.1",
+ "is-weakref": "^1.0.2",
+ "isarray": "^2.0.5",
+ "which-boxed-primitive": "^1.1.0",
+ "which-collection": "^1.0.2",
+ "which-typed-array": "^1.1.16"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-collection": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+ "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+ "dev": true,
+ "dependencies": {
+ "is-map": "^2.0.3",
+ "is-set": "^2.0.3",
+ "is-weakmap": "^2.0.2",
+ "is-weakset": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.19",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz",
+ "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "for-each": "^0.3.5",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zod": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.2.1.tgz",
+ "integrity": "sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/zod-validation-error": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz",
+ "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "zod": "^3.25.0 || ^4.0.0"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..e87634d
--- /dev/null
+++ b/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "hoanghapc",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "eslint"
+ },
+ "dependencies": {
+ "next": "16.1.0",
+ "react": "19.2.3",
+ "react-dom": "19.2.3",
+ "swiper": "^12.0.3"
+ },
+ "devDependencies": {
+ "@tailwindcss/postcss": "^4",
+ "@types/node": "^20",
+ "@types/react": "^19",
+ "@types/react-dom": "^19",
+ "autoprefixer": "^10.4.23",
+ "eslint": "^9",
+ "eslint-config-next": "16.1.0",
+ "postcss": "^8.5.6",
+ "tailwindcss": "^4.1.18",
+ "typescript": "^5"
+ }
+}
diff --git a/postcss.config.mjs b/postcss.config.mjs
new file mode 100644
index 0000000..61e3684
--- /dev/null
+++ b/postcss.config.mjs
@@ -0,0 +1,7 @@
+const config = {
+ plugins: {
+ "@tailwindcss/postcss": {},
+ },
+};
+
+export default config;
diff --git a/public/images/avatar-admin.png b/public/images/avatar-admin.png
new file mode 100644
index 0000000..90fbbba
Binary files /dev/null and b/public/images/avatar-admin.png differ
diff --git a/public/images/bg-deal-home.png b/public/images/bg-deal-home.png
new file mode 100644
index 0000000..901d857
Binary files /dev/null and b/public/images/bg-deal-home.png differ
diff --git a/public/images/bg-footer-info.png b/public/images/bg-footer-info.png
new file mode 100644
index 0000000..5547d6b
Binary files /dev/null and b/public/images/bg-footer-info.png differ
diff --git a/public/images/brand/brand-1.png b/public/images/brand/brand-1.png
new file mode 100644
index 0000000..ed57950
Binary files /dev/null and b/public/images/brand/brand-1.png differ
diff --git a/public/images/brand/brand-2.png b/public/images/brand/brand-2.png
new file mode 100644
index 0000000..84788f1
Binary files /dev/null and b/public/images/brand/brand-2.png differ
diff --git a/public/images/brand/brand-3.png b/public/images/brand/brand-3.png
new file mode 100644
index 0000000..3b79f46
Binary files /dev/null and b/public/images/brand/brand-3.png differ
diff --git a/public/images/brand/brand-4.png b/public/images/brand/brand-4.png
new file mode 100644
index 0000000..35d8ed4
Binary files /dev/null and b/public/images/brand/brand-4.png differ
diff --git a/public/images/brand/brand-5.png b/public/images/brand/brand-5.png
new file mode 100644
index 0000000..bd64b90
Binary files /dev/null and b/public/images/brand/brand-5.png differ
diff --git a/public/images/brand/brand-6.png b/public/images/brand/brand-6.png
new file mode 100644
index 0000000..2294fca
Binary files /dev/null and b/public/images/brand/brand-6.png differ
diff --git a/public/images/cart-empty.png b/public/images/cart-empty.png
new file mode 100644
index 0000000..075a377
Binary files /dev/null and b/public/images/cart-empty.png differ
diff --git a/public/images/cart-ticket.png b/public/images/cart-ticket.png
new file mode 100644
index 0000000..7286015
Binary files /dev/null and b/public/images/cart-ticket.png differ
diff --git a/public/images/category/slide-category.png b/public/images/category/slide-category.png
new file mode 100644
index 0000000..cfa1ef6
Binary files /dev/null and b/public/images/category/slide-category.png differ
diff --git a/public/images/deal-bg.png b/public/images/deal-bg.png
new file mode 100644
index 0000000..3807081
Binary files /dev/null and b/public/images/deal-bg.png differ
diff --git a/public/images/deal-icon-bolt.png b/public/images/deal-icon-bolt.png
new file mode 100644
index 0000000..56cd340
Binary files /dev/null and b/public/images/deal-icon-bolt.png differ
diff --git a/public/images/footer-newsletter-bg.png b/public/images/footer-newsletter-bg.png
new file mode 100644
index 0000000..5a55b38
Binary files /dev/null and b/public/images/footer-newsletter-bg.png differ
diff --git a/public/images/footer-newsletter.png b/public/images/footer-newsletter.png
new file mode 100644
index 0000000..5472db1
Binary files /dev/null and b/public/images/footer-newsletter.png differ
diff --git a/public/images/global-deal-line.png b/public/images/global-deal-line.png
new file mode 100644
index 0000000..23eae0c
Binary files /dev/null and b/public/images/global-deal-line.png differ
diff --git a/public/images/global-footer-bct.png b/public/images/global-footer-bct.png
new file mode 100644
index 0000000..c00dd51
Binary files /dev/null and b/public/images/global-footer-bct.png differ
diff --git a/public/images/global/cat-1.png b/public/images/global/cat-1.png
new file mode 100644
index 0000000..478437c
Binary files /dev/null and b/public/images/global/cat-1.png differ
diff --git a/public/images/global/cat-10.png b/public/images/global/cat-10.png
new file mode 100644
index 0000000..295b017
Binary files /dev/null and b/public/images/global/cat-10.png differ
diff --git a/public/images/global/cat-11.png b/public/images/global/cat-11.png
new file mode 100644
index 0000000..4a0670e
Binary files /dev/null and b/public/images/global/cat-11.png differ
diff --git a/public/images/global/cat-12.png b/public/images/global/cat-12.png
new file mode 100644
index 0000000..ee8f2aa
Binary files /dev/null and b/public/images/global/cat-12.png differ
diff --git a/public/images/global/cat-13.png b/public/images/global/cat-13.png
new file mode 100644
index 0000000..7a92552
Binary files /dev/null and b/public/images/global/cat-13.png differ
diff --git a/public/images/global/cat-14.png b/public/images/global/cat-14.png
new file mode 100644
index 0000000..1ec66d4
Binary files /dev/null and b/public/images/global/cat-14.png differ
diff --git a/public/images/global/cat-15.png b/public/images/global/cat-15.png
new file mode 100644
index 0000000..f7273e6
Binary files /dev/null and b/public/images/global/cat-15.png differ
diff --git a/public/images/global/cat-2.png b/public/images/global/cat-2.png
new file mode 100644
index 0000000..2393396
Binary files /dev/null and b/public/images/global/cat-2.png differ
diff --git a/public/images/global/cat-3.png b/public/images/global/cat-3.png
new file mode 100644
index 0000000..b40b0db
Binary files /dev/null and b/public/images/global/cat-3.png differ
diff --git a/public/images/global/cat-4.png b/public/images/global/cat-4.png
new file mode 100644
index 0000000..7069d79
Binary files /dev/null and b/public/images/global/cat-4.png differ
diff --git a/public/images/global/cat-5.png b/public/images/global/cat-5.png
new file mode 100644
index 0000000..0aeaf6d
Binary files /dev/null and b/public/images/global/cat-5.png differ
diff --git a/public/images/global/cat-6.png b/public/images/global/cat-6.png
new file mode 100644
index 0000000..878a750
Binary files /dev/null and b/public/images/global/cat-6.png differ
diff --git a/public/images/global/cat-7.png b/public/images/global/cat-7.png
new file mode 100644
index 0000000..c9d2453
Binary files /dev/null and b/public/images/global/cat-7.png differ
diff --git a/public/images/global/cat-8.png b/public/images/global/cat-8.png
new file mode 100644
index 0000000..0bec8bc
Binary files /dev/null and b/public/images/global/cat-8.png differ
diff --git a/public/images/global/cat-9.png b/public/images/global/cat-9.png
new file mode 100644
index 0000000..8baa804
Binary files /dev/null and b/public/images/global/cat-9.png differ
diff --git a/public/images/header-banner.png b/public/images/header-banner.png
new file mode 100644
index 0000000..48bedef
Binary files /dev/null and b/public/images/header-banner.png differ
diff --git a/public/images/hoang-ha-pc-cau-giay.png b/public/images/hoang-ha-pc-cau-giay.png
new file mode 100644
index 0000000..f47e530
Binary files /dev/null and b/public/images/hoang-ha-pc-cau-giay.png differ
diff --git a/public/images/hoang-ha-pc-dong-da-5.jpg b/public/images/hoang-ha-pc-dong-da-5.jpg
new file mode 100644
index 0000000..0a0bae7
Binary files /dev/null and b/public/images/hoang-ha-pc-dong-da-5.jpg differ
diff --git a/public/images/hoang-ha-pc-hcm.jpg b/public/images/hoang-ha-pc-hcm.jpg
new file mode 100644
index 0000000..36dcba4
Binary files /dev/null and b/public/images/hoang-ha-pc-hcm.jpg differ
diff --git a/public/images/hoang_ha_pc_vinh.jpg b/public/images/hoang_ha_pc_vinh.jpg
new file mode 100644
index 0000000..bb1356e
Binary files /dev/null and b/public/images/hoang_ha_pc_vinh.jpg differ
diff --git a/public/images/homepage/banner-cate.png b/public/images/homepage/banner-cate.png
new file mode 100644
index 0000000..dcc531d
Binary files /dev/null and b/public/images/homepage/banner-cate.png differ
diff --git a/public/images/homepage/home-slide.png b/public/images/homepage/home-slide.png
new file mode 100644
index 0000000..b53b6a4
Binary files /dev/null and b/public/images/homepage/home-slide.png differ
diff --git a/public/images/homepage/right-1.png b/public/images/homepage/right-1.png
new file mode 100644
index 0000000..5b7eeb8
Binary files /dev/null and b/public/images/homepage/right-1.png differ
diff --git a/public/images/homepage/right-2.png b/public/images/homepage/right-2.png
new file mode 100644
index 0000000..5111ba6
Binary files /dev/null and b/public/images/homepage/right-2.png differ
diff --git a/public/images/homepage/under-1.png b/public/images/homepage/under-1.png
new file mode 100644
index 0000000..d483377
Binary files /dev/null and b/public/images/homepage/under-1.png differ
diff --git a/public/images/homepage/under-2.png b/public/images/homepage/under-2.png
new file mode 100644
index 0000000..52e4835
Binary files /dev/null and b/public/images/homepage/under-2.png differ
diff --git a/public/images/homepage/under-3.png b/public/images/homepage/under-3.png
new file mode 100644
index 0000000..52e4835
Binary files /dev/null and b/public/images/homepage/under-3.png differ
diff --git a/public/images/homepage/under-4.png b/public/images/homepage/under-4.png
new file mode 100644
index 0000000..387e94b
Binary files /dev/null and b/public/images/homepage/under-4.png differ
diff --git a/public/images/homepage/under-slide-1.png b/public/images/homepage/under-slide-1.png
new file mode 100644
index 0000000..f78deb7
Binary files /dev/null and b/public/images/homepage/under-slide-1.png differ
diff --git a/public/images/homepage/under-slide-2.png b/public/images/homepage/under-slide-2.png
new file mode 100644
index 0000000..f8c6a18
Binary files /dev/null and b/public/images/homepage/under-slide-2.png differ
diff --git a/public/images/homepage/under-slide-3.png b/public/images/homepage/under-slide-3.png
new file mode 100644
index 0000000..9a37fb3
Binary files /dev/null and b/public/images/homepage/under-slide-3.png differ
diff --git a/public/images/icon-bolt.png b/public/images/icon-bolt.png
new file mode 100644
index 0000000..8e54529
Binary files /dev/null and b/public/images/icon-bolt.png differ
diff --git a/public/images/icon-cart.png b/public/images/icon-cart.png
new file mode 100644
index 0000000..155d2a7
Binary files /dev/null and b/public/images/icon-cart.png differ
diff --git a/public/images/icon-desktop.png b/public/images/icon-desktop.png
new file mode 100644
index 0000000..4866686
Binary files /dev/null and b/public/images/icon-desktop.png differ
diff --git a/public/images/icon-installment.png b/public/images/icon-installment.png
new file mode 100644
index 0000000..42217ea
Binary files /dev/null and b/public/images/icon-installment.png differ
diff --git a/public/images/icon-laptop.png b/public/images/icon-laptop.png
new file mode 100644
index 0000000..ad65dbb
Binary files /dev/null and b/public/images/icon-laptop.png differ
diff --git a/public/images/icon-mess-1.png b/public/images/icon-mess-1.png
new file mode 100644
index 0000000..b990220
Binary files /dev/null and b/public/images/icon-mess-1.png differ
diff --git a/public/images/icon-mess-2.png b/public/images/icon-mess-2.png
new file mode 100644
index 0000000..53f6611
Binary files /dev/null and b/public/images/icon-mess-2.png differ
diff --git a/public/images/icon-mess.png b/public/images/icon-mess.png
new file mode 100644
index 0000000..f93e0a7
Binary files /dev/null and b/public/images/icon-mess.png differ
diff --git a/public/images/icon-metal.png b/public/images/icon-metal.png
new file mode 100644
index 0000000..0c3660b
Binary files /dev/null and b/public/images/icon-metal.png differ
diff --git a/public/images/icon-planet.png b/public/images/icon-planet.png
new file mode 100644
index 0000000..8be6349
Binary files /dev/null and b/public/images/icon-planet.png differ
diff --git a/public/images/icon-playlist.png b/public/images/icon-playlist.png
new file mode 100644
index 0000000..0c95d8c
Binary files /dev/null and b/public/images/icon-playlist.png differ
diff --git a/public/images/icon-truck.png b/public/images/icon-truck.png
new file mode 100644
index 0000000..51f4875
Binary files /dev/null and b/public/images/icon-truck.png differ
diff --git a/public/images/icon-zalo.png b/public/images/icon-zalo.png
new file mode 100644
index 0000000..7c977de
Binary files /dev/null and b/public/images/icon-zalo.png differ
diff --git a/public/images/icon_add_desktop.png b/public/images/icon_add_desktop.png
new file mode 100644
index 0000000..6964fe7
Binary files /dev/null and b/public/images/icon_add_desktop.png differ
diff --git a/public/images/logo-tiktok.png b/public/images/logo-tiktok.png
new file mode 100644
index 0000000..14db006
Binary files /dev/null and b/public/images/logo-tiktok.png differ
diff --git a/public/images/logo.png b/public/images/logo.png
new file mode 100644
index 0000000..9e92825
Binary files /dev/null and b/public/images/logo.png differ
diff --git a/public/images/logo/logo-anphat.png b/public/images/logo/logo-anphat.png
new file mode 100644
index 0000000..9722e63
Binary files /dev/null and b/public/images/logo/logo-anphat.png differ
diff --git a/public/images/logo/logo-fpt.png b/public/images/logo/logo-fpt.png
new file mode 100644
index 0000000..8f44fc2
Binary files /dev/null and b/public/images/logo/logo-fpt.png differ
diff --git a/public/images/logo/logo-gearvn.png b/public/images/logo/logo-gearvn.png
new file mode 100644
index 0000000..68ae7f3
Binary files /dev/null and b/public/images/logo/logo-gearvn.png differ
diff --git a/public/images/logo/logo-hacom.png b/public/images/logo/logo-hacom.png
new file mode 100644
index 0000000..b755bd4
Binary files /dev/null and b/public/images/logo/logo-hacom.png differ
diff --git a/public/images/logo/logo-mygear.png b/public/images/logo/logo-mygear.png
new file mode 100644
index 0000000..1e76925
Binary files /dev/null and b/public/images/logo/logo-mygear.png differ
diff --git a/public/images/logo/logo-phongvu.png b/public/images/logo/logo-phongvu.png
new file mode 100644
index 0000000..f3fdd0a
Binary files /dev/null and b/public/images/logo/logo-phongvu.png differ
diff --git a/public/images/logo/logo-phucanh.png b/public/images/logo/logo-phucanh.png
new file mode 100644
index 0000000..8967704
Binary files /dev/null and b/public/images/logo/logo-phucanh.png differ
diff --git a/public/images/no_image.jpg b/public/images/no_image.jpg
new file mode 100644
index 0000000..eeed0a7
Binary files /dev/null and b/public/images/no_image.jpg differ
diff --git a/public/images/product-1.jpg b/public/images/product-1.jpg
new file mode 100644
index 0000000..9f8cbf8
Binary files /dev/null and b/public/images/product-1.jpg differ
diff --git a/public/images/product-2.jpg b/public/images/product-2.jpg
new file mode 100644
index 0000000..52a0025
Binary files /dev/null and b/public/images/product-2.jpg differ
diff --git a/public/images/product-3.jpg b/public/images/product-3.jpg
new file mode 100644
index 0000000..086e765
Binary files /dev/null and b/public/images/product-3.jpg differ
diff --git a/public/images/product-4.jpg b/public/images/product-4.jpg
new file mode 100644
index 0000000..a600205
Binary files /dev/null and b/public/images/product-4.jpg differ
diff --git a/public/images/product-5.jpg b/public/images/product-5.jpg
new file mode 100644
index 0000000..938e21f
Binary files /dev/null and b/public/images/product-5.jpg differ
diff --git a/public/images/product-6.jpg b/public/images/product-6.jpg
new file mode 100644
index 0000000..a4e0d8c
Binary files /dev/null and b/public/images/product-6.jpg differ
diff --git a/public/images/product-7.jpg b/public/images/product-7.jpg
new file mode 100644
index 0000000..6ed2b92
Binary files /dev/null and b/public/images/product-7.jpg differ
diff --git a/public/images/product-8.jpg b/public/images/product-8.jpg
new file mode 100644
index 0000000..c128975
Binary files /dev/null and b/public/images/product-8.jpg differ
diff --git a/public/images/send-cart-face.png b/public/images/send-cart-face.png
new file mode 100644
index 0000000..3559f1f
Binary files /dev/null and b/public/images/send-cart-face.png differ
diff --git a/public/images/send-cart-image.png b/public/images/send-cart-image.png
new file mode 100644
index 0000000..90e2f1e
Binary files /dev/null and b/public/images/send-cart-image.png differ
diff --git a/public/images/social_media/global-deal-line.png b/public/images/social_media/global-deal-line.png
new file mode 100644
index 0000000..c84a733
Binary files /dev/null and b/public/images/social_media/global-deal-line.png differ
diff --git a/public/images/sprite-2.png b/public/images/sprite-2.png
new file mode 100644
index 0000000..7c3cb1b
Binary files /dev/null and b/public/images/sprite-2.png differ
diff --git a/public/images/sprite.png b/public/images/sprite.png
new file mode 100644
index 0000000..9cadab2
Binary files /dev/null and b/public/images/sprite.png differ
diff --git a/public/images/star-black.png b/public/images/star-black.png
new file mode 100644
index 0000000..d4596fc
Binary files /dev/null and b/public/images/star-black.png differ
diff --git a/public/images/star.png b/public/images/star.png
new file mode 100644
index 0000000..19b1966
Binary files /dev/null and b/public/images/star.png differ
diff --git a/public/images/star_rating.png b/public/images/star_rating.png
new file mode 100644
index 0000000..f9fb338
Binary files /dev/null and b/public/images/star_rating.png differ
diff --git a/public/images/zalo.png b/public/images/zalo.png
new file mode 100644
index 0000000..a06672c
Binary files /dev/null and b/public/images/zalo.png differ
diff --git a/public/styles/library.css b/public/styles/library.css
new file mode 100644
index 0000000..52741f8
--- /dev/null
+++ b/public/styles/library.css
@@ -0,0 +1,240 @@
+/**
+ * Fancybox 3.5.7
+**/
+:root{--f-spinner-width: 36px;--f-spinner-height: 36px;--f-spinner-color-1: rgba(0, 0, 0, 0.1);--f-spinner-color-2: rgba(17, 24, 28, 0.8);--f-spinner-stroke: 2.75}.f-spinner{margin:auto;padding:0;width:var(--f-spinner-width);height:var(--f-spinner-height)}.f-spinner svg{width:100%;height:100%;vertical-align:top;animation:f-spinner-rotate 2s linear infinite}.f-spinner svg *{stroke-width:var(--f-spinner-stroke);fill:none}.f-spinner svg *:first-child{stroke:var(--f-spinner-color-1)}.f-spinner svg *:last-child{stroke:var(--f-spinner-color-2);animation:f-spinner-dash 2s ease-in-out infinite}@keyframes f-spinner-rotate{100%{transform:rotate(360deg)}}@keyframes f-spinner-dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.f-throwOutUp{animation:.175s ease-out both f-throwOutUp}.f-throwOutDown{animation:.175s ease-out both f-throwOutDown}@keyframes f-throwOutUp{to{transform:translate3d(0, -150px, 0);opacity:0}}@keyframes f-throwOutDown{to{transform:translate3d(0, 150px, 0);opacity:0}}.f-zoomInUp{animation:var(--f-transition-duration, 0.2s) ease-out .1s both f-zoomInUp}.f-zoomOutDown{animation:var(--f-transition-duration, 0.2s) ease-out both f-zoomOutDown}@keyframes f-zoomInUp{from{transform:scale(0.975) translate3d(0, 16px, 0);opacity:0}to{transform:scale(1) translate3d(0, 0, 0);opacity:1}}@keyframes f-zoomOutDown{to{transform:scale(0.975) translate3d(0, 16px, 0);opacity:0}}.f-fadeIn{animation:var(--f-transition-duration, 0.2s) ease both f-fadeIn;z-index:2}.f-fadeOut{animation:var(--f-transition-duration, 0.2s) ease both f-fadeOut;z-index:1}@keyframes f-fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes f-fadeOut{100%{opacity:0}}.f-fadeSlowIn{animation:var(--f-transition-duration, 0.5s) ease both f-fadeSlowIn;z-index:2}.f-fadeSlowOut{animation:var(--f-transition-duration, 0.5s) ease both f-fadeSlowOut;z-index:1}@keyframes f-fadeSlowIn{0%{opacity:0}100%{opacity:1}}@keyframes f-fadeSlowOut{100%{opacity:0}}.f-fadeFastIn{animation:var(--f-transition-duration, 0.2s) ease-out both f-fadeFastIn;z-index:2}.f-fadeFastOut{animation:var(--f-transition-duration, 0.2s) ease-out both f-fadeFastOut;z-index:2}@keyframes f-fadeFastIn{0%{opacity:.75}100%{opacity:1}}@keyframes f-fadeFastOut{100%{opacity:0}}.f-crossfadeIn{animation:var(--f-transition-duration, 0.2s) ease-out both f-crossfadeIn;z-index:2}.f-crossfadeOut{animation:calc(var(--f-transition-duration, 0.2s)*.5) linear .1s both f-crossfadeOut;z-index:1}@keyframes f-crossfadeIn{0%{opacity:0}100%{opacity:1}}@keyframes f-crossfadeOut{100%{opacity:0}}.f-slideIn.from-next{animation:var(--f-transition-duration, 0.85s) cubic-bezier(0.16, 1, 0.3, 1) f-slideInNext}.f-slideIn.from-prev{animation:var(--f-transition-duration, 0.85s) cubic-bezier(0.16, 1, 0.3, 1) f-slideInPrev}.f-slideOut.to-next{animation:var(--f-transition-duration, 0.85s) cubic-bezier(0.16, 1, 0.3, 1) f-slideOutNext}.f-slideOut.to-prev{animation:var(--f-transition-duration, 0.85s) cubic-bezier(0.16, 1, 0.3, 1) f-slideOutPrev}@keyframes f-slideInPrev{0%{transform:translateX(100%)}100%{transform:translate3d(0, 0, 0)}}@keyframes f-slideInNext{0%{transform:translateX(-100%)}100%{transform:translate3d(0, 0, 0)}}@keyframes f-slideOutNext{100%{transform:translateX(-100%)}}@keyframes f-slideOutPrev{100%{transform:translateX(100%)}}.f-classicIn.from-next{animation:var(--f-transition-duration, 0.85s) cubic-bezier(0.16, 1, 0.3, 1) f-classicInNext;z-index:2}.f-classicIn.from-prev{animation:var(--f-transition-duration, 0.85s) cubic-bezier(0.16, 1, 0.3, 1) f-classicInPrev;z-index:2}.f-classicOut.to-next{animation:var(--f-transition-duration, 0.85s) cubic-bezier(0.16, 1, 0.3, 1) f-classicOutNext;z-index:1}.f-classicOut.to-prev{animation:var(--f-transition-duration, 0.85s) cubic-bezier(0.16, 1, 0.3, 1) f-classicOutPrev;z-index:1}@keyframes f-classicInNext{0%{transform:translateX(-75px);opacity:0}100%{transform:translate3d(0, 0, 0);opacity:1}}@keyframes f-classicInPrev{0%{transform:translateX(75px);opacity:0}100%{transform:translate3d(0, 0, 0);opacity:1}}@keyframes f-classicOutNext{100%{transform:translateX(-75px);opacity:0}}@keyframes f-classicOutPrev{100%{transform:translateX(75px);opacity:0}}:root{--f-button-width: 40px;--f-button-height: 40px;--f-button-border: 0;--f-button-border-radius: 0;--f-button-color: #374151;--f-button-bg: #f8f8f8;--f-button-hover-bg: #e0e0e0;--f-button-active-bg: #d0d0d0;--f-button-shadow: none;--f-button-transition: all 0.15s ease;--f-button-transform: none;--f-button-svg-width: 20px;--f-button-svg-height: 20px;--f-button-svg-stroke-width: 1.5;--f-button-svg-fill: none;--f-button-svg-filter: none;--f-button-svg-disabled-opacity: 0.65}.f-button{display:flex;justify-content:center;align-items:center;box-sizing:content-box;position:relative;margin:0;padding:0;width:var(--f-button-width);height:var(--f-button-height);border:var(--f-button-border);border-radius:var(--f-button-border-radius);color:var(--f-button-color);background:var(--f-button-bg);box-shadow:var(--f-button-shadow);pointer-events:all;cursor:pointer;transition:var(--f-button-transition)}@media(hover: hover){.f-button:hover:not([disabled]){color:var(--f-button-hover-color);background-color:var(--f-button-hover-bg)}}.f-button:active:not([disabled]){background-color:var(--f-button-active-bg)}.f-button:focus:not(:focus-visible){outline:none}.f-button:focus-visible{outline:none;box-shadow:inset 0 0 0 var(--f-button-outline, 2px) var(--f-button-outline-color, var(--f-button-color))}.f-button svg{width:var(--f-button-svg-width);height:var(--f-button-svg-height);fill:var(--f-button-svg-fill);stroke:currentColor;stroke-width:var(--f-button-svg-stroke-width);stroke-linecap:round;stroke-linejoin:round;transition:opacity .15s ease;transform:var(--f-button-transform);filter:var(--f-button-svg-filter);pointer-events:none}.f-button[disabled]{cursor:default}.f-button[disabled] svg{opacity:var(--f-button-svg-disabled-opacity)}.f-carousel__nav .f-button.is-prev,.f-carousel__nav .f-button.is-next,.fancybox__nav .f-button.is-prev,.fancybox__nav .f-button.is-next{position:absolute;z-index:1}.is-horizontal .f-carousel__nav .f-button.is-prev,.is-horizontal .f-carousel__nav .f-button.is-next,.is-horizontal .fancybox__nav .f-button.is-prev,.is-horizontal .fancybox__nav .f-button.is-next{top:50%;transform:translateY(-50%)}.is-horizontal .f-carousel__nav .f-button.is-prev,.is-horizontal .fancybox__nav .f-button.is-prev{left:var(--f-button-prev-pos)}.is-horizontal .f-carousel__nav .f-button.is-next,.is-horizontal .fancybox__nav .f-button.is-next{right:var(--f-button-next-pos)}.is-horizontal.is-rtl .f-carousel__nav .f-button.is-prev,.is-horizontal.is-rtl .fancybox__nav .f-button.is-prev{left:auto;right:var(--f-button-next-pos)}.is-horizontal.is-rtl .f-carousel__nav .f-button.is-next,.is-horizontal.is-rtl .fancybox__nav .f-button.is-next{right:auto;left:var(--f-button-prev-pos)}.is-vertical .f-carousel__nav .f-button.is-prev,.is-vertical .f-carousel__nav .f-button.is-next,.is-vertical .fancybox__nav .f-button.is-prev,.is-vertical .fancybox__nav .f-button.is-next{top:auto;left:50%;transform:translateX(-50%)}.is-vertical .f-carousel__nav .f-button.is-prev,.is-vertical .fancybox__nav .f-button.is-prev{top:var(--f-button-next-pos)}.is-vertical .f-carousel__nav .f-button.is-next,.is-vertical .fancybox__nav .f-button.is-next{bottom:var(--f-button-next-pos)}.is-vertical .f-carousel__nav .f-button.is-prev svg,.is-vertical .f-carousel__nav .f-button.is-next svg,.is-vertical .fancybox__nav .f-button.is-prev svg,.is-vertical .fancybox__nav .f-button.is-next svg{transform:rotate(90deg)}html.with-fancybox{width:auto;overflow:visible;scroll-behavior:auto}html.with-fancybox body{touch-action:none}html.with-fancybox body.hide-scrollbar{width:auto;margin-right:calc(var(--fancybox-body-margin, 0px) + var(--fancybox-scrollbar-compensate, 0px));overflow:hidden !important;overscroll-behavior-y:none}.fancybox__container{--fancybox-color: #dbdbdb;--fancybox-hover-color: #fff;--fancybox-bg: rgba(24, 24, 27, 0.98);--fancybox-slide-gap: 10px;--f-spinner-width: 50px;--f-spinner-height: 50px;--f-spinner-color-1: rgba(255, 255, 255, 0.1);--f-spinner-color-2: #bbb;--f-spinner-stroke: 3.65;position:fixed;top:0;left:0;bottom:0;right:0;direction:ltr;display:flex;flex-direction:column;box-sizing:border-box;margin:0;padding:0;color:#f8f8f8;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:visible;z-index:1050;outline:none;transform-origin:top left;-webkit-text-size-adjust:100%;-moz-text-size-adjust:none;-ms-text-size-adjust:100%;text-size-adjust:100%;overscroll-behavior-y:contain}.fancybox__container *,.fancybox__container *::before,.fancybox__container *::after{box-sizing:inherit}.fancybox__backdrop{position:fixed;top:0;left:0;bottom:0;right:0;z-index:-1;background:var(--fancybox-bg);opacity:var(--fancybox-opacity, 1);will-change:opacity}.fancybox__carousel{position:relative;box-sizing:border-box;flex:1;min-height:0;z-index:10;overflow-y:visible;overflow-x:clip}.fancybox__viewport{width:100%;height:100%}.fancybox__track{display:flex;margin:0 auto;height:100%}.fancybox__slide{flex:0 0 auto;position:relative;display:flex;flex-direction:column;align-items:center;width:100%;height:100%;margin:0 var(--fancybox-slide-gap) 0 0;padding:4px;overflow:auto;transform:translate3d(0, 0, 0);backface-visibility:hidden}.fancybox__container:not(.is-compact) .fancybox__slide.has-close-btn{padding-top:40px}.fancybox__slide.has-iframe,.fancybox__slide.has-video,.fancybox__slide.has-html5video{overflow:hidden}.fancybox__slide.has-image{overflow:hidden}.fancybox__slide.has-image.is-animating,.fancybox__slide.has-image.is-selected{overflow:visible}.fancybox__slide::before,.fancybox__slide::after{content:"";flex:0 0 0;margin:auto}.fancybox__content{align-self:center;display:flex;flex-direction:column;position:relative;margin:0;padding:2rem;max-width:100%;color:var(--fancybox-content-color, #374151);background:var(--fancybox-content-bg, #fff);cursor:default;border-radius:0;z-index:20}.is-loading .fancybox__content{opacity:0}.is-draggable .fancybox__content{cursor:move;cursor:grab}.can-zoom_in .fancybox__content{cursor:zoom-in}.can-zoom_out .fancybox__content{cursor:zoom-out}.is-dragging .fancybox__content{cursor:move;cursor:grabbing}.fancybox__content [data-selectable],.fancybox__content [contenteditable]{cursor:auto}.fancybox__slide.has-image>.fancybox__content{padding:0;background:rgba(0,0,0,0);min-height:1px;background-repeat:no-repeat;background-size:contain;background-position:center center;transition:none;transform:translate3d(0, 0, 0);backface-visibility:hidden}.fancybox__slide.has-image>.fancybox__content>picture>img{width:100%;height:auto;max-height:100%}.is-zooming-in .fancybox__viewport:not(.is-dragging) .fancybox__slide:not(.is-selected) .fancybox__content,.is-zooming-out .fancybox__slide:not(.is-selected) .fancybox__content{visibility:hidden}.is-animating .fancybox__content,.is-dragging .fancybox__content{filter:blur(0px);will-change:transform,width,height}.fancybox-image{margin:auto;display:block;width:100%;height:100%;min-height:0;object-fit:contain;user-select:none}.fancybox__caption{align-self:center;max-width:100%;flex-shrink:0;margin:0;padding:14px 0 4px 0;overflow-wrap:anywhere;line-height:1.375;color:var(--fancybox-color, currentColor);opacity:var(--fancybox-opacity, 1);cursor:auto;visibility:visible}.is-loading .fancybox__caption,.is-closing .fancybox__caption{opacity:0;visibility:hidden}.is-compact .fancybox__caption{padding-bottom:0}.f-button.is-close-btn{--f-button-svg-stroke-width: 2;position:absolute;top:0;right:8px;z-index:40}.fancybox__content>.f-button.is-close-btn{--f-button-width: 34px;--f-button-height: 34px;--f-button-border-radius: 4px;--f-button-color: var(--fancybox-color, #fff);--f-button-hover-color: var(--fancybox-color, #fff);--f-button-bg: transparent;--f-button-hover-bg: transparent;--f-button-active-bg: transparent;--f-button-svg-width: 22px;--f-button-svg-height: 22px;position:absolute;top:-38px;right:0;opacity:.75}.is-loading .fancybox__content>.f-button.is-close-btn{visibility:hidden}.is-zooming-out .fancybox__content>.f-button.is-close-btn{visibility:hidden}.fancybox__content>.f-button.is-close-btn:hover{opacity:1}.fancybox__footer{padding:0;margin:0;position:relative}.fancybox__footer .fancybox__caption{width:100%;padding:24px;opacity:var(--fancybox-opacity, 1);transition:all .25s ease}.is-compact .fancybox__footer{position:absolute;bottom:0;left:0;right:0;z-index:20;background:rgba(24,24,27,.5)}.is-compact .fancybox__footer .fancybox__caption{padding:12px}.is-compact .fancybox__content>.f-button.is-close-btn{--f-button-border-radius: 50%;--f-button-color: #fff;--f-button-hover-color: #fff;--f-button-outline-color: #000;--f-button-bg: rgba(0, 0, 0, 0.6);--f-button-active-bg: rgba(0, 0, 0, 0.6);--f-button-hover-bg: rgba(0, 0, 0, 0.6);--f-button-svg-width: 18px;--f-button-svg-height: 18px;--f-button-svg-filter: none;top:5px;right:5px}.fancybox__nav{--f-button-width: 50px;--f-button-height: 50px;--f-button-border: 0;--f-button-border-radius: 50%;--f-button-color: var(--fancybox-color);--f-button-hover-color: var(--fancybox-hover-color);--f-button-bg: transparent;--f-button-hover-bg: rgba(24, 24, 27, 0.3);--f-button-active-bg: rgba(24, 24, 27, 0.5);--f-button-shadow: none;--f-button-transition: all 0.15s ease;--f-button-transform: none;--f-button-svg-width: 26px;--f-button-svg-height: 26px;--f-button-svg-stroke-width: 2.5;--f-button-svg-fill: none;--f-button-svg-filter: drop-shadow(1px 1px 1px rgba(24, 24, 27, 0.5));--f-button-svg-disabled-opacity: 0.65;--f-button-next-pos: 1rem;--f-button-prev-pos: 1rem;opacity:var(--fancybox-opacity, 1)}.fancybox__nav .f-button:before{position:absolute;content:"";top:-30px;right:-20px;left:-20px;bottom:-30px;z-index:1}.is-idle .fancybox__nav{animation:.15s ease-out both f-fadeOut}.is-idle.is-compact .fancybox__footer{pointer-events:none;animation:.15s ease-out both f-fadeOut}.fancybox__slide>.f-spinner{position:absolute;top:50%;left:50%;margin:var(--f-spinner-top, calc(var(--f-spinner-width) * -0.5)) 0 0 var(--f-spinner-left, calc(var(--f-spinner-height) * -0.5));z-index:30;cursor:pointer}.fancybox-protected{position:absolute;top:0;left:0;right:0;bottom:0;z-index:40;user-select:none}.fancybox-ghost{position:absolute;top:0;left:0;width:100%;height:100%;min-height:0;object-fit:contain;z-index:40;user-select:none;pointer-events:none}.fancybox-focus-guard{outline:none;opacity:0;position:fixed;pointer-events:none}.fancybox__container:not([aria-hidden]){opacity:0}.fancybox__container.is-animated[aria-hidden=false]>*:not(.fancybox__backdrop,.fancybox__carousel),.fancybox__container.is-animated[aria-hidden=false] .fancybox__carousel>*:not(.fancybox__viewport),.fancybox__container.is-animated[aria-hidden=false] .fancybox__slide>*:not(.fancybox__content){animation:.25s ease .1s backwards f-fadeIn}.fancybox__container.is-animated[aria-hidden=false] .fancybox__backdrop{animation:.35s ease backwards f-fadeIn}.fancybox__container.is-animated[aria-hidden=true]>*:not(.fancybox__backdrop,.fancybox__carousel),.fancybox__container.is-animated[aria-hidden=true] .fancybox__carousel>*:not(.fancybox__viewport),.fancybox__container.is-animated[aria-hidden=true] .fancybox__slide>*:not(.fancybox__content){animation:.15s ease forwards f-fadeOut}.fancybox__container.is-animated[aria-hidden=true] .fancybox__backdrop{animation:.35s ease forwards f-fadeOut}.has-iframe .fancybox__content,.has-map .fancybox__content,.has-pdf .fancybox__content,.has-youtube .fancybox__content,.has-vimeo .fancybox__content,.has-html5video .fancybox__content{max-width:100%;flex-shrink:1;min-height:1px;overflow:visible}.has-iframe .fancybox__content,.has-map .fancybox__content,.has-pdf .fancybox__content{width:100%;height:100%}.fancybox__container:not(.is-compact) .has-iframe .fancybox__content,.fancybox__container:not(.is-compact) .has-map .fancybox__content,.fancybox__container:not(.is-compact) .has-pdf .fancybox__content{width:calc(100% - 120px);height:90%}.has-youtube .fancybox__content,.has-vimeo .fancybox__content,.has-html5video .fancybox__content{width:960px;height:540px;max-width:100%;max-height:100%}.has-map .fancybox__content,.has-pdf .fancybox__content,.has-youtube .fancybox__content,.has-vimeo .fancybox__content,.has-html5video .fancybox__content{padding:0;background:rgba(24,24,27,.9);color:#fff}.has-map .fancybox__content{background:#e5e3df}.fancybox__html5video,.fancybox__iframe{border:0;display:block;height:100%;width:100%;background:rgba(0,0,0,0)}.fancybox-placeholder{border:0 !important;clip:rect(1px, 1px, 1px, 1px) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.f-carousel__thumbs{--f-thumb-width: 96px;--f-thumb-height: 72px;--f-thumb-outline: 0;--f-thumb-outline-color: #5eb0ef;--f-thumb-opacity: 1;--f-thumb-hover-opacity: 1;--f-thumb-selected-opacity: 1;--f-thumb-border-radius: 2px;--f-thumb-offset: 0px;--f-button-next-pos: 0;--f-button-prev-pos: 0}.f-carousel__thumbs.is-classic{--f-thumb-gap: 8px;--f-thumb-opacity: 0.5;--f-thumb-hover-opacity: 1;--f-thumb-selected-opacity: 1}.f-carousel__thumbs.is-modern{--f-thumb-gap: 4px;--f-thumb-extra-gap: 20px;--f-thumb-clip-width: 46px}.f-thumbs{position:relative;flex:0 0 auto;margin:0;overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0);user-select:none;perspective:1000px;transform:translateZ(0)}.f-thumbs .f-spinner{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:2px;background-image:linear-gradient(#ebeff2, #e2e8f0);z-index:-1}.f-thumbs .f-spinner svg{display:none}.f-thumbs.is-vertical{height:100%}.f-thumbs__viewport{width:100%;height:auto;overflow:hidden}.f-thumbs__track{display:flex;will-change:transform}.f-thumbs__slide{position:relative;flex:0 0 auto;box-sizing:content-box;display:flex;align-items:center;justify-content:center;padding:0;margin:0;width:var(--f-thumb-width);min-width:var(--f-thumb-width);height:var(--f-thumb-height);overflow:visible;cursor:pointer}.f-thumbs__slide.is-loading img{opacity:0}.is-classic .f-thumbs__viewport{height:100%}.is-modern .f-thumbs__track{width:max-content}.is-modern .f-thumbs__track::before{content:"";position:absolute;top:0;bottom:0;left:calc(var(--left, 0)*1px);width:calc(100% - var(--width, 0)*1px);cursor:pointer}.is-modern .f-thumbs__slide{--clip-path: inset( 0 calc( (var(--f-thumb-width, 0) - var(--f-thumb-clip-width, 0)) * 0.5 * (1 - var(--progress, 0)) ) round var(--f-thumb-border-radius, 0) );transform:translate3d(calc(var(--shift, 0) * -1px), 0, 0);transition:none;pointer-events:none}.is-modern .f-thumbs__slide:focus-within:not(.is-selected){filter:drop-shadow(-1px 0px 0px var(--f-thumb-outline-color)) drop-shadow(2px 0px 0px var(--f-thumb-outline-color)) drop-shadow(0px -1px 0px var(--f-thumb-outline-color)) drop-shadow(0px 2px 0px var(--f-thumb-outline-color))}.is-modern .f-thumbs__slide>*{clip-path:var(--clip-path)}.is-modern.in-touch .f-thumbs__slide{filter:none}.is-modern.is-resting .f-thumbs__slide{transition:all .33s ease}.is-modern.is-resting .f-thumbs__slide>*{transition:all .33s ease}.f-thumbs__slide__button{appearance:none;width:100%;height:100%;margin:0;padding:0;border:0;position:relative;border-radius:var(--f-thumb-border-radius);overflow:hidden;background:rgba(0,0,0,0);outline:none;cursor:pointer;pointer-events:auto;touch-action:manipulation;opacity:var(--f-thumb-opacity);transition:opacity .2s ease}.f-thumbs__slide__button:hover{opacity:var(--f-thumb-hover-opacity)}.f-thumbs__slide__button:focus:not(:focus-visible){outline:none}.f-thumbs__slide__button:focus-visible{outline:none;opacity:var(--f-thumb-selected-opacity)}.is-nav-selected .f-thumbs__slide__button{opacity:var(--f-thumb-selected-opacity)}.is-nav-selected .f-thumbs__slide__button::after{content:"";position:absolute;top:0;left:0;right:0;height:auto;bottom:0;border:var(--f-thumb-outline, 0) solid var(--f-thumb-outline-color, transparent);border-radius:var(--f-thumb-border-radius);animation:f-fadeIn .2s ease-out;z-index:10}.f-thumbs__slide__img{position:absolute;overflow:hidden;top:0;right:0;bottom:0;left:0;width:100%;height:100%;padding:var(--f-thumb-offset);box-sizing:border-box;pointer-events:none;object-fit:cover}.f-thumbs.is-horizontal .f-thumbs__track{margin:0 auto;padding:8px 0 12px 0}.f-thumbs.is-horizontal .f-thumbs__slide{margin:0 var(--f-thumb-gap) 0 0}.f-thumbs.is-vertical .f-thumbs__track{flex-wrap:wrap;margin:auto 0;padding:0 8px}.f-thumbs.is-vertical .f-thumbs__slide{margin:0 0 var(--f-thumb-gap) 0}.fancybox__thumbs{--f-thumb-width: 96px;--f-thumb-height: 72px;--f-thumb-border-radius: 2px;--f-thumb-outline: 2px;--f-thumb-outline-color: #ededed;position:relative;opacity:var(--fancybox-opacity, 1);transition:max-height .35s cubic-bezier(0.23, 1, 0.32, 1)}.fancybox__thumbs.is-classic{--f-thumb-gap: 8px;--f-thumb-opacity: 0.5;--f-thumb-hover-opacity: 1}.fancybox__thumbs.is-classic .f-spinner{background-image:linear-gradient(rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05))}.fancybox__thumbs.is-modern{--f-thumb-gap: 4px;--f-thumb-extra-gap: 20px;--f-thumb-clip-width: 46px;--f-thumb-opacity: 1;--f-thumb-hover-opacity: 1}.fancybox__thumbs.is-modern .f-spinner{background-image:linear-gradient(rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05))}.fancybox__thumbs.is-horizontal{padding:0 var(--f-thumb-gap)}.fancybox__thumbs.is-vertical{padding:var(--f-thumb-gap) 0}.is-compact .fancybox__thumbs{--f-thumb-width: 64px;--f-thumb-clip-width: 32px;--f-thumb-height: 48px;--f-thumb-extra-gap: 10px}.fancybox__thumbs.is-masked{max-height:0px !important}.is-closing .fancybox__thumbs{transition:none !important}.fancybox__toolbar{--f-progress-color: var(--fancybox-color, rgba(255, 255, 255, 0.94));--f-button-width: 46px;--f-button-height: 46px;--f-button-color: var(--fancybox-color);--f-button-hover-color: var(--fancybox-hover-color);--f-button-bg: rgba(24, 24, 27, 0.65);--f-button-hover-bg: rgba(70, 70, 73, 0.65);--f-button-active-bg: rgba(90, 90, 93, 0.65);--f-button-border-radius: 0;--f-button-svg-width: 24px;--f-button-svg-height: 24px;--f-button-svg-stroke-width: 1.5;--f-button-svg-filter: drop-shadow(1px 1px 1px rgba(24, 24, 27, 0.15));--f-button-svg-fill: none;--f-button-svg-disabled-opacity: 0.65;display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI Adjusted","Segoe UI","Liberation Sans",sans-serif;color:var(--fancybox-color, currentColor);opacity:var(--fancybox-opacity, 1);text-shadow:var(--fancybox-toolbar-text-shadow, 1px 1px 1px rgba(0, 0, 0, 0.5));pointer-events:none;z-index:20}.fancybox__toolbar :focus-visible{z-index:1}.fancybox__toolbar.is-absolute,.is-compact .fancybox__toolbar{position:absolute;top:0;left:0;right:0}.is-idle .fancybox__toolbar{pointer-events:none;animation:.15s ease-out both f-fadeOut}.fancybox__toolbar__column{display:flex;flex-direction:row;flex-wrap:wrap;align-content:flex-start}.fancybox__toolbar__column.is-left,.fancybox__toolbar__column.is-right{flex-grow:1;flex-basis:0}.fancybox__toolbar__column.is-right{display:flex;justify-content:flex-end;flex-wrap:nowrap}.fancybox__infobar{padding:0 5px;line-height:var(--f-button-height);text-align:center;font-size:17px;font-variant-numeric:tabular-nums;-webkit-font-smoothing:subpixel-antialiased;cursor:default;user-select:none}.fancybox__infobar span{padding:0 5px}.fancybox__infobar:not(:first-child):not(:last-child){background:var(--f-button-bg)}[data-fancybox-toggle-slideshow]{position:relative}[data-fancybox-toggle-slideshow] .f-progress{height:100%;opacity:.3}[data-fancybox-toggle-slideshow] svg g:first-child{display:flex}[data-fancybox-toggle-slideshow] svg g:last-child{display:none}.has-slideshow [data-fancybox-toggle-slideshow] svg g:first-child{display:none}.has-slideshow [data-fancybox-toggle-slideshow] svg g:last-child{display:flex}[data-fancybox-toggle-fullscreen] svg g:first-child{display:flex}[data-fancybox-toggle-fullscreen] svg g:last-child{display:none}:fullscreen [data-fancybox-toggle-fullscreen] svg g:first-child{display:none}:fullscreen [data-fancybox-toggle-fullscreen] svg g:last-child{display:flex}.f-progress{position:absolute;top:0;left:0;right:0;height:3px;transform:scaleX(0);transform-origin:0;transition-property:transform;transition-timing-function:linear;background:var(--f-progress-color, var(--f-carousel-theme-color, #0091ff));z-index:30;user-select:none;pointer-events:none}
+.fancybox__container .for-video.is-selected {border: 2px solid red;}
+
+body{color:#333333;font-size:14px;line-height: 18px;font-family:'SF Pro Display',sans-serif;position:relative;word-break:break-word;counter-reset:section;font-weight:400;}
+
+/* success */
+.success-checkmark{margin:0 auto;width: 100%;display: flex;align-items: center;justify-content: center;}
+.success-checkmark .check-icon{width:80px;height:80px;position:relative;border-radius:50%;box-sizing:content-box;border:4px solid #0542b7;}
+.success-checkmark .check-icon::before{top:3px;left:-2px;width:30px;transform-origin:100% 50%;border-radius:100px 0 0 100px;}
+.success-checkmark .check-icon::after{top:0;left:30px;width:60px;transform-origin:0 50%;border-radius:0 100px 100px 0;animation:rotate-circle 4.25s ease-in;}
+.success-checkmark .check-icon::before, .success-checkmark .check-icon::after{content:'';height:100px;position:absolute;background:#FFFFFF;transform:rotate(-45deg);}
+.success-checkmark .check-icon .icon-line{height:5px;background-color: #0542b7;display:block;border-radius:2px;position:absolute;z-index:10;}
+.success-checkmark .check-icon .icon-line.line-tip{top:46px;left:14px;width:25px;transform:rotate(45deg);animation:icon-line-tip 0.75s;}
+.success-checkmark .check-icon .icon-line.line-long{top:38px;right:8px;width:47px;transform:rotate(-45deg);animation:icon-line-long 0.75s;}
+.success-checkmark .check-icon .icon-circle{top:-4px;left:-4px;z-index:10;width:80px;height:80px;border-radius:50%;position:absolute;box-sizing:content-box;border: 4px solid rgba(0, 131, 255, 0.5);}
+.success-checkmark .check-icon .icon-fix{top:8px;width:5px;left:26px;z-index:1;height:85px;position:absolute;transform:rotate(-45deg);background-color:#FFFFFF;}
+.success-form {position: fixed;top: 0;left: 0;right: 0;bottom: 0;z-index: 99999;background: rgba(0,0,0,0.5);display: block;}
+.content-container {background: #ffffff;max-width: 420px;height: 100%;position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);max-height: 260px;display: flex;flex-wrap: wrap;align-items: center;justify-content: center;padding: 20px;border-radius: 12px;width: 100%;}
+.content-text {font-weight: 500;line-height: 1.5;}
+.success-checkmark .check-icon .icon-circle {border-color: #0542b7;opacity: .5;}
+@keyframes rotate-circle{
+ 0%{transform:rotate(-45deg);}
+ 5%{transform:rotate(-45deg);}
+ 12%{transform:rotate(-405deg);}
+ 100%{transform:rotate(-405deg);}
+}
+@keyframes icon-line-tip{
+ 0%{width:0;left:1px;top:19px;}
+ 54%{width:0;left:1px;top:19px;}
+ 70%{width:50px;left:-8px;top:37px;}
+ 84%{width:17px;left:21px;top:48px;}
+ 100%{width:25px;left:14px;top:45px;}
+}
+@keyframes icon-line-long{
+ 0%{width:0;right:46px;top:54px;}
+ 65%{width:0;right:46px;top:54px;}
+ 84%{width:55px;right:0px;top:35px;}
+ 100%{width:47px;right:8px;top:38px;}
+}
+/* end success */
+@keyframes backInRight{
+ 0%{opacity:.7;transform:translateX(2000px) scale(.7) translateY(-50%)}
+ 80%{opacity:.7;transform:translateX(0) scale(.7) translateY(-50%)}
+ to{opacity:1;transform:scale(1) translateY(-50%)}
+}
+.animate__backInRight{animation-name:backInRight;}
+@keyframes beat { to {transform: scale(1.2)} }
+.animation-beat{ animation: beat 0.4s infinite alternate; animation-timing-function: cubic-bezier(0.19, 0.96, 0.65, 1); transform-origin: center }
+@keyframes bounce {
+ 0% {transform: scaleX(1.1)}
+ 25% {transform: scaleX(.9) translateY(-.25em)}
+ 50% {transform: scale(1.1,.9)}
+ 75% {transform: scale(1)}
+ 87.5% {transform: scale(1) translateY(-.1em)}
+ to {transform: scale(1)}
+}
+.animation-bounce {animation: bounce 1s linear infinite;}
+@keyframes tada {
+ 0% {transform: scaleX(1)}
+ 10%,20% {transform: scale3d(.95,.95,.95) rotate(-10deg)}
+ 30%,50%,70%,90% {transform: scaleX(1) rotate(10deg)}
+ 40%,60%,80% {transform: rotate(-10deg)}
+ to {transform: scaleX(1)}
+}
+.animation-tada { animation: tada 1.5s ease infinite;}
+@keyframes wiggle {
+ 0% {transform: translateX(0)}
+ 30% {transform: translateX(.15em)}
+ 60% {transform: translateX(-.15em)}
+ 75% {transform: translateX(.05em)}
+ 90% {transform: translateX(-.05em)}
+ to {transform: translateX(0)}
+}
+.animation-wiggle{
+ animation: wiggle 1s infinite;
+ animation-timing-function: cubic-bezier(.23, .57, .79, .58);
+}
+@keyframes phonering-alo-circle-img-anim{
+ 0%{-webkit-transform:rotate(0) scale(1) skew(1deg)}
+ 10%{-webkit-transform:rotate(-25deg) scale(1) skew(1deg)}
+ 20%{-webkit-transform:rotate(25deg) scale(1) skew(1deg)}
+ 30%{-webkit-transform:rotate(-25deg) scale(1) skew(1deg)}
+ 40%{-webkit-transform:rotate(25deg) scale(1) skew(1deg)}
+ 50%{-webkit-transform:rotate(0) scale(1) skew(1deg)}
+ 100%{-webkit-transform:rotate(0) scale(1) skew(1deg)}
+}
+.animation-phone-ring {animation: phonering-alo-circle-img-anim 1s infinite ease-in-out;}
+*, ::after, ::before {box-sizing: border-box;}
+a[href="http://www.magictoolbox.com/magiczoomplus/"]{display:none!important;opacity:0;visibility:hidden;z-index: -999;position: absolute;}
+a{text-decoration:none}
+a:hover{text-decoration:none !important}
+.ul,.ol{margin:0;padding:0;list-style:none}
+img{max-width:100%;height:auto}
+.clear{clear:both}
+.h1,h1{font-size:2em}
+.h2,h2{font-size:1.5em}
+.h3,h3{font-size:1.17em}
+.h4,h4,.h5,h5,.h6,h6{font-size:initial}
+.h1,h1,.h2,h2,.h3,h3,.h4,h4,.h5,h5,.h6,h6{font-weight:700}
+button,input,select{outline:none!important;color:#000;border-radius:0}
+button, input {overflow: visible;}
+button, input, optgroup, select, textarea {margin: 0;font-family: inherit;font-size: inherit;line-height: inherit;border-radius: 0;}
+table{width:100%;-webkit-overflow-scrolling:touch;}
+input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button {-webkit-appearance: none;margin: 0;} /* Chrome, Edge, Safari */
+input[type="number"] {-moz-appearance: textfield;}/* Firefox */
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+ select,textarea,input{font-size:16px !important}
+}
+@media (min-width: 1200px) {
+ select,textarea,input{font-size:14px}
+}
+iframe{max-width: 100%;display: block;margin: auto;border: 0;}
+.d-flex{display:flex !important}
+.d-block{display:block}
+.d-none{display:none}
+.d-inline-block{display:inline-block}
+.flex-wrap{flex-wrap:wrap}
+.align-items-center{align-items:center}
+.align-items-baseline{align-items:baseline}
+.align-items-end{align-items:flex-end}
+.align-items-start{align-items:flex-start}
+.justify-content-between{justify-content:space-between}
+.justify-content-center{justify-content:center}
+.justify-content-end{justify-content:end}
+.overflow-hidden{overflow:hidden}
+.overflow-auto{overflow:auto}
+.float-left{float:left}
+.float-right{float:right}
+.float-none{float:none}
+.position-relative{position:relative}
+.text-white{color:#fff}
+.text-center{text-align:center}
+.text-left{text-align:left}
+.text-right{text-align:right}
+.text-uppercase{text-transform:uppercase}
+.text-capitalize{text-transform:capitalize}
+.w-50{width:50%!important}
+.w-100{width:100%!important}
+.w-auto{width:auto!important}
+.h-100{height:100%!important}
+.h-auto{height:auto!important}
+.text-10{font-size:10px}
+.text-11{font-size:11px}
+.text-12{font-size:12px}
+.text-13{font-size:13px}
+.text-14{font-size:14px}
+.text-15{font-size:15px}
+.text-16{font-size:16px}
+.text-17{font-size:17px}
+.text-18{font-size:18px}
+.text-19{font-size:19px}
+.text-20{font-size:20px}
+.text-22{font-size:22px}
+.text-23{font-size:23px}
+.text-24{font-size:24px}
+.text-25{font-size:25px}
+.text-26{font-size:26px}
+.text-27{font-size:27px}
+.text-28{font-size:28px}
+.text-29{font-size:29px}
+.text-30{font-size:30px}
+.font-100{font-weight:100}
+.font-200{font-weight:200}
+.font-300{font-weight:300}
+.font-400{font-weight:400}
+.font-500{font-weight:500}
+.font-600{font-weight:600}
+.font-700{font-weight:700}
+.font-800{font-weight:800}
+.font-900{font-weight:900}
+.font-1000{font-weight:1000}
+.autocomplete-suggestions{position:absolute;width: 100%;;border:solid 1px #ddd;right:0;max-height:300px;overflow:auto;display:none;background:#fff;z-index:5;top: 100%;}
+.autocomplete-suggestions a{display: flex;align-items: flex-start;padding:10px;overflow:hidden;}
+.autocomplete-suggestions a img{width:60px;float:left;margin-right: 12px;}
+.autocomplete-suggestions a .info{width: calc(100% - 72px);}
+.autocomplete-suggestions a .info .name{display:block;color:#333;}
+.autocomplete-suggestions a .info .price{color:#ec1c24;}
+.autocomplete-suggestions a:hover{background-color:#f5f5f5;}
+.autocomplete-suggestions::-webkit-scrollbar-track{-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.1);background-color: #f1f1f1;border-radius: 10px;}
+.autocomplete-suggestions::-webkit-scrollbar{width: 6px;background-color: #f1f1f1;}
+.autocomplete-suggestions::-webkit-scrollbar-thumb{border-radius: 10px;background-color: #ccc;}
+.bg-content {position: relative}
+.bg-content::after {content: '';background: linear-gradient(0deg, #2D2D2D 0%, rgba(45, 45, 45, 0) 100%);height: 110px;width: 100%;position: absolute;bottom: 0;left: 0;right: 0;z-index: 1}
+.static-content * {line-height: inherit !important;font-family: inherit !important;}
+.static-html-group .content-button {border: 1px solid #fff;height: 36px;line-height: 36px;border-radius: 50px;font-size: 16px;font-weight: 700;text-transform: uppercase;padding: 0 18px;display: none;width: fit-content;margin: 12px auto 0}
+.static-html-group .content-button:hover{color: #000;background: #fff;}
+.underline{text-decoration: underline;}
+.btn-html-content{text-align:center;padding:16px}
+.btn-html-content a{display:none;line-height:36px;background:#FFF;color:#1988EC;-webkit-box-shadow:0 0 0 1px #1988EC;box-shadow:0 0 0 1px #1988EC;border-radius:10px;font-size:16px;font-weight:600;margin:auto;max-width:126px;width:100%;-webkit-transition:.15s all;transition:.15s all;font-size:13px}
+.btn-html-content a:hover{background:#1988EC;color:#fff}
+.btn-html-content a i{margin-left:4px}
+.bg-popup{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.4);z-index:99;cursor:pointer}
+.star {display: inline-block;width: 93px;height: 16px;overflow: hidden;background: url(/images/star.png) no-repeat;background-position: -5px -3px;background-size: 100px 105px; }
+.star-1{background-position: -5px -87px;}
+.star-2{background-position: -5px -66px;}
+.star-3{background-position: -5px -45px;}
+.star-4{background-position: -5px -24px;}
+body .h1,body .h2,body .h3,body .h4,body .h5,body .h6,body h1,body h2,body h3,body h4,body h5,body h6{margin-top:0;margin-bottom:.5rem;font-weight:600;line-height:1.2}
+body .h1, body h1{font-size:2em}
+body .h2, body h2{font-size:1.5em}
+body .h3, body h3{font-size:1.17em}
+body .h4, body h4,.h5,h5,.h6,h6{font-size:initial}
+body .h1, body h1,body .h2,body h2,body .h3,body h3,body .h4,body h4,body .h5,body h5,body .h6,body h6{font-weight:700}
+body p{margin-top:0;margin-bottom:1rem}
+body ul {display: block;list-style-type: disc;margin-block-start: 1em;margin-block-end: 1em;margin-inline-start: 0px;margin-inline-end: 0px;padding-inline-start: 40px;unicode-bidi: isolate;}
+body ol {display: block;list-style-type: decimal;margin-block-start: 1em;margin-block-end: 1em;margin-inline-start: 0px;margin-inline-end: 0px;padding-inline-start: 40px;unicode-bidi: isolate;}
+body li {display: list-item;text-align: -webkit-match-parent;unicode-bidi: isolate;}
+table td{padding: 7px;}
+.article-detail-content img, .static-html-group img, .pd-desc-group img {display: block;margin: 10px auto;}
+.article-detail-content table, .static-html-group table, .pd-desc-group table {margin: 13px 0;}
+.article-detail-content table td, .static-html-group table td, .article-detail-content table th, .static-html-group table th, .pd-desc-group table th, .pd-desc-group table th {border-width: 1px;padding: 10px;}
+.rounded-full{border-radius: 999px}
+.fancybox-instruction {height: 94%;margin: auto;padding: 0}
+.fancybox-instruction img {display: block;margin: auto;max-width: 100%;max-height: 100%;}
+.clearfix::after{content:'';display: block;clear: both}
+.loading-screen{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(255,255,255,.9);z-index:99999}
+.loading-screen:after{content:" ";width:80px;height:80px;border-radius:50%;border:6px solid #a50e43;border-color:#a50e43 transparent #a50e43 transparent;-webkit-animation:lds-dual-ring 1.2s linear infinite;animation:lds-dual-ring 1.2s linear infinite;top:48%;left:48%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute}
+@-webkit-keyframes lds-dual-ring{
+ 0%{-webkit-transform:rotate(0);transform:rotate(0)}
+ 100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}
+}
+@keyframes lds-dual-ring{
+ 0%{-webkit-transform:rotate(0);transform:rotate(0)}
+ 100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}
+}
+@keyframes phonering {
+ 0% { transform: rotate(0) scale(1) skew(1deg); }
+ 10% { transform: rotate(-25deg) scale(1) skew(1deg); }
+ 20% { transform: rotate(25deg) scale(1) skew(1deg); }
+ 30% { transform: rotate(-25deg) scale(1) skew(1deg); }
+ 40% { transform: rotate(25deg) scale(1) skew(1deg); }
+ 50% { transform: rotate(0) scale(1) skew(1deg); }
+ 100% { transform: rotate(0) scale(1) skew(1deg); }
+}
+::-webkit-scrollbar-track{background-color:transparent;border-radius:5px}
+::-webkit-scrollbar{width:10px;height: 5px}
+::-webkit-scrollbar-thumb{border-radius:5px;background-color:#0676DA}
\ No newline at end of file
diff --git a/public/styles/tailwind.css b/public/styles/tailwind.css
new file mode 100644
index 0000000..6e9196e
--- /dev/null
+++ b/public/styles/tailwind.css
@@ -0,0 +1 @@
+/*! tailwindcss v3.3.6 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.not-sr-only{clip:auto;height:auto;margin:0;overflow:visible;padding:0;position:static;white-space:normal;width:auto}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-\[-100\%\]{bottom:-100%}.left-0{left:0}.left-\[-8px\]{left:-8px}.right-0{right:0}.right-4{right:1rem}.right-5{right:1.25rem}.right-\[-4px\]{right:-4px}.right-\[8px\]{right:8px}.top-0{top:0}.top-3{top:.75rem}.top-4{top:1rem}.top-\[-4px\]{top:-4px}.top-\[-999px\]{top:-999px}.top-\[100\%\]{top:100%}.top-\[150\%\]{top:150%}.top-\[68px\]{top:68px}.top-\[90px\]{top:90px}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-\[-1\]{z-index:-1}.z-\[-9\]{z-index:-9}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.z-\[999\]{z-index:999}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.float-right{float:right}.float-left{float:left}.float-none{float:none}.clear-left{clear:left}.clear-right{clear:right}.clear-both{clear:both}.clear-none{clear:none}.m-0{margin:0}.m-\[auto_0_auto_auto\]{margin:auto 0 auto auto}.m-auto{margin:auto}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-bottom:2.5rem;margin-top:2.5rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-3{margin-bottom:.75rem;margin-top:.75rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-5{margin-bottom:1.25rem;margin-top:1.25rem}.my-6{margin-bottom:1.5rem;margin-top:1.5rem}.my-8{margin-bottom:2rem;margin-top:2rem}.my-\[3rem\]{margin-bottom:3rem;margin-top:3rem}.\!-mt-5{margin-top:-1.25rem!important}.\!mb-2{margin-bottom:.5rem!important}.\!mt-8{margin-top:2rem!important}.-ml-1{margin-left:-.25rem}.-mt-1{margin-top:-.25rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-9{margin-bottom:2.25rem}.mb-\[10px\]{margin-bottom:10px}.mb-\[1px\]{margin-bottom:1px}.ml-\[-2px\]{margin-left:-2px}.ml-\[-7px\]{margin-left:-7px}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mr-\[10px\]{margin-right:10px}.mr-\[6px\]{margin-right:6px}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[-1px\]{margin-top:-1px}.mt-\[-3px\]{margin-top:-3px}.box-border{box-sizing:border-box}.box-content{box-sizing:content-box}.line-clamp-2{-webkit-line-clamp:2}.line-clamp-2,.line-clamp-3{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3}.line-clamp-4{-webkit-line-clamp:4}.line-clamp-4,.line-clamp-5{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-5{-webkit-line-clamp:5}.line-clamp-none{-webkit-box-orient:horizontal;-webkit-line-clamp:none;display:block;overflow:visible}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.\!flex{display:flex!important}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.inline-table{display:inline-table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row-group{display:table-row-group}.table-row{display:table-row}.flow-root{display:flow-root}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.\!h-6{height:1.5rem!important}.\!h-7{height:1.75rem!important}.\!h-\[22px\]{height:22px!important}.\!h-full{height:100%!important}.h-10{height:2.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[100px\]{height:100px}.h-\[112px\]{height:112px}.h-\[12px\]{height:12px}.h-\[14px\]{height:14px}.h-\[156px\]{height:156px}.h-\[18px\]{height:18px}.h-\[22px\]{height:22px}.h-\[28px\]{height:28px}.h-\[34px\]{height:34px}.h-\[385px\]{height:385px}.h-\[39px\]{height:39px}.h-\[42px\]{height:42px}.h-\[46px\]{height:46px}.h-\[50px\]{height:50px}.h-\[52px\]{height:52px}.h-\[85vh\]{height:85vh}.h-\[96px\]{height:96px}.h-\[calc\(100\%-92px\)\]{height:calc(100% - 92px)}.h-auto{height:auto}.h-full{height:100%}.max-h-\[48px\]{max-height:48px}.max-h-\[56px\]{max-height:56px}.min-h-\[160px\]{min-height:160px}.min-h-\[200px\]{min-height:200px}.min-h-\[245px\]{min-height:245px}.min-h-\[300px\]{min-height:300px}.min-h-\[42px\]{min-height:42px}.min-h-\[450px\]{min-height:450px}.min-h-\[845px\]{min-height:845px}.\!w-6{width:1.5rem!important}.\!w-7{width:1.75rem!important}.\!w-\[22px\]{width:22px!important}.\!w-full{width:100%!important}.w-1{width:.25rem}.w-10{width:2.5rem}.w-5{width:1.25rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[1\.5px\]{width:1.5px}.w-\[103px\]{width:103px}.w-\[110px\]{width:110px}.w-\[120px\]{width:120px}.w-\[135px\]{width:135px}.w-\[14px\]{width:14px}.w-\[168px\]{width:168px}.w-\[18px\]{width:18px}.w-\[1px\]{width:1px}.w-\[200px\]{width:200px}.w-\[205px\]{width:205px}.w-\[22px\]{width:22px}.w-\[25px\]{width:25px}.w-\[264px\]{width:264px}.w-\[30px\]{width:30px}.w-\[420px\]{width:420px}.w-\[424px\]{width:424px}.w-\[42px\]{width:42px}.w-\[440px\]{width:440px}.w-\[450px\]{width:450px}.w-\[45px\]{width:45px}.w-\[464px\]{width:464px}.w-\[576px\]{width:576px}.w-\[583px\]{width:583px}.w-\[756px\]{width:756px}.w-\[784px\]{width:784px}.w-\[83\%\]{width:83%}.w-\[932px\]{width:932px}.w-\[968px\]{width:968px}.w-\[calc\(100\%-116px\)\]{width:calc(100% - 116px)}.w-\[calc\(100\%-464px\)\]{width:calc(100% - 464px)}.w-\[calc\(100\%-98px\)\]{width:calc(100% - 98px)}.w-\[calc\(100\%_-_20px\)\]{width:calc(100% - 20px)}.w-\[calc\(100\%_-_224px\)\]{width:calc(100% - 224px)}.w-\[calc\(100\%_-_36px\)\]{width:calc(100% - 36px)}.w-\[calc\(100\%_-_52px\)\]{width:calc(100% - 52px)}.w-\[calc\(100\%_-_71px\)\]{width:calc(100% - 71px)}.w-auto{width:auto}.w-full{width:100%}.min-w-\[140px\]{min-width:140px}.min-w-\[170px\]{min-width:170px}.min-w-\[220px\]{min-width:220px}.max-w-\[100\%\]{max-width:100%}.max-w-\[150px\]{max-width:150px}.max-w-\[240px\]{max-width:240px}.max-w-\[320px\]{max-width:320px}.max-w-\[400px\]{max-width:400px}.max-w-\[620px\]{max-width:620px}.max-w-\[656px\]{max-width:656px}.max-w-\[714px\]{max-width:714px}.max-w-\[720px\]{max-width:720px}.max-w-\[800px\]{max-width:800px}.max-w-\[824px\]{max-width:824px}.max-w-\[924px\]{max-width:924px}.flex-shrink,.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.table-fixed{table-layout:fixed}.caption-top{caption-side:top}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.border-separate{border-collapse:separate}.rotate-180{--tw-rotate:180deg}.rotate-180,.scale-\[0\.8\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\[0\.8\]{--tw-scale-x:0.8;--tw-scale-y:0.8}.scale-\[1\.2\]{--tw-scale-x:1.2;--tw-scale-y:1.2}.scale-\[1\.2\],.transform,.transform-cpu{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-gpu{transform:translate3d(var(--tw-translate-x),var(--tw-translate-y),0) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-none{transform:none}.cursor-pointer{cursor:pointer}.touch-auto{touch-action:auto}.touch-none{touch-action:none}.touch-pan-x{--tw-pan-x:pan-x}.touch-pan-left,.touch-pan-x{touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pan-left{--tw-pan-x:pan-left}.touch-pan-right{--tw-pan-x:pan-right}.touch-pan-right,.touch-pan-y{touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pan-y{--tw-pan-y:pan-y}.touch-pan-up{--tw-pan-y:pan-up}.touch-pan-down,.touch-pan-up{touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pan-down{--tw-pan-y:pan-down}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-manipulation{touch-action:manipulation}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.select-auto{-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.resize-none{resize:none}.resize-y{resize:vertical}.resize-x{resize:horizontal}.resize{resize:both}.snap-none{scroll-snap-type:none}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-y{scroll-snap-type:y var(--tw-scroll-snap-strictness)}.snap-both{scroll-snap-type:both var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.snap-proximity{--tw-scroll-snap-strictness:proximity}.snap-start{scroll-snap-align:start}.snap-end{scroll-snap-align:end}.snap-center{scroll-snap-align:center}.snap-align-none{scroll-snap-align:none}.snap-normal{scroll-snap-stop:normal}.snap-always{scroll-snap-stop:always}.list-inside{list-style-position:inside}.list-outside{list-style-position:outside}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.break-before-auto{-moz-column-break-before:auto;break-before:auto}.break-before-avoid{-moz-column-break-before:avoid;break-before:avoid}.break-before-all{-moz-column-break-before:all;break-before:all}.break-before-avoid-page{-moz-column-break-before:avoid;break-before:avoid-page}.break-before-page{-moz-column-break-before:page;break-before:page}.break-before-left{-moz-column-break-before:left;break-before:left}.break-before-right{-moz-column-break-before:right;break-before:right}.break-before-column{-moz-column-break-before:column;break-before:column}.break-inside-auto{-moz-column-break-inside:auto;break-inside:auto}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.break-inside-avoid-page{break-inside:avoid-page}.break-inside-avoid-column{-moz-column-break-inside:avoid;break-inside:avoid-column}.break-after-auto{-moz-column-break-after:auto;break-after:auto}.break-after-avoid{-moz-column-break-after:avoid;break-after:avoid}.break-after-all{-moz-column-break-after:all;break-after:all}.break-after-avoid-page{-moz-column-break-after:avoid;break-after:avoid-page}.break-after-page{-moz-column-break-after:page;break-after:page}.break-after-left{-moz-column-break-after:left;break-after:left}.break-after-right{-moz-column-break-after:right;break-after:right}.break-after-column{-moz-column-break-after:column;break-after:column}.grid-flow-row{grid-auto-flow:row}.grid-flow-col{grid-auto-flow:column}.grid-flow-dense{grid-auto-flow:dense}.grid-flow-row-dense{grid-auto-flow:row dense}.grid-flow-col-dense{grid-auto-flow:column dense}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.flex-nowrap{flex-wrap:nowrap}.place-content-center{place-content:center}.place-content-start{place-content:start}.place-content-end{place-content:end}.place-content-between{place-content:space-between}.place-content-around{place-content:space-around}.place-content-evenly{place-content:space-evenly}.place-content-baseline{place-content:baseline}.place-content-stretch{place-content:stretch}.place-items-start{place-items:start}.place-items-end{place-items:end}.place-items-center{place-items:center}.place-items-baseline{place-items:baseline}.place-items-stretch{place-items:stretch}.content-normal{align-content:normal}.content-center{align-content:center}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-between{align-content:space-between}.content-around{align-content:space-around}.content-evenly{align-content:space-evenly}.content-baseline{align-content:baseline}.content-stretch{align-content:stretch}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-normal{justify-content:normal}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.justify-stretch{justify-content:stretch}.justify-items-start{justify-items:start}.justify-items-end{justify-items:end}.justify-items-center{justify-items:center}.justify-items-stretch{justify-items:stretch}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[0\.5px\]{gap:.5px}.gap-\[10px\]{gap:10px}.gap-\[2px\]{gap:2px}.gap-\[3px\]{gap:3px}.gap-\[6px\]{gap:6px}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-\[16px\]{-moz-column-gap:16px;column-gap:16px}.gap-y-4{row-gap:1rem}.gap-y-5{row-gap:1.25rem}.gap-y-8{row-gap:2rem}.gap-y-\[24px\]{row-gap:24px}.space-y-reverse>:not([hidden])~:not([hidden]){--tw-space-y-reverse:1}.space-x-reverse>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(1px*var(--tw-divide-x-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-y-reverse>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:1}.divide-x-reverse>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}.divide-solid>:not([hidden])~:not([hidden]){border-style:solid}.divide-dashed>:not([hidden])~:not([hidden]){border-style:dashed}.divide-dotted>:not([hidden])~:not([hidden]){border-style:dotted}.divide-double>:not([hidden])~:not([hidden]){border-style:double}.divide-none>:not([hidden])~:not([hidden]){border-style:none}.place-self-auto{place-self:auto}.place-self-start{place-self:start}.place-self-end{place-self:end}.place-self-center{place-self:center}.place-self-stretch{place-self:stretch}.self-auto{align-self:auto}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.self-stretch{align-self:stretch}.self-baseline{align-self:baseline}.justify-self-auto{justify-self:auto}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.justify-self-stretch{justify-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-clip{overflow:clip}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-x-clip{overflow-x:clip}.overflow-y-clip{overflow-y:clip}.overflow-x-visible{overflow-x:visible}.overflow-y-visible{overflow-y:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-scroll{overflow-y:scroll}.overscroll-auto{overscroll-behavior:auto}.overscroll-contain{overscroll-behavior:contain}.overscroll-none{overscroll-behavior:none}.overscroll-y-auto{overscroll-behavior-y:auto}.overscroll-y-contain{overscroll-behavior-y:contain}.overscroll-y-none{overscroll-behavior-y:none}.overscroll-x-auto{overscroll-behavior-x:auto}.overscroll-x-contain{overscroll-behavior-x:contain}.overscroll-x-none{overscroll-behavior-x:none}.scroll-auto{scroll-behavior:auto}.scroll-smooth{scroll-behavior:smooth}.truncate{overflow:hidden;white-space:nowrap}.overflow-ellipsis,.text-ellipsis,.truncate{text-overflow:ellipsis}.text-clip{text-overflow:clip}.hyphens-none{-webkit-hyphens:none;hyphens:none}.hyphens-manual{-webkit-hyphens:manual;hyphens:manual}.hyphens-auto{-webkit-hyphens:auto;hyphens:auto}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.whitespace-break-spaces{white-space:break-spaces}.break-normal{overflow-wrap:normal;word-break:normal}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.break-keep{word-break:keep-all}.rounded{border-radius:.25rem}.rounded-\[12px\]{border-radius:12px}.rounded-\[16px\]{border-radius:16px}.rounded-\[16px_0_\]{border-radius:16px 0}.rounded-\[20px\]{border-radius:20px}.rounded-\[20px_20px_0_0\]{border-radius:20px 20px 0 0}.rounded-\[24px\]{border-radius:24px}.rounded-\[30px\]{border-radius:30px}.rounded-\[3px\]{border-radius:3px}.rounded-\[40px\]{border-radius:40px}.rounded-\[4px\]{border-radius:4px}.rounded-\[50px\]{border-radius:50px}.rounded-\[6px\]{border-radius:6px}.rounded-\[8px\]{border-radius:8px}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-b{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-e{border-end-end-radius:.25rem;border-start-end-radius:.25rem}.rounded-l{border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.rounded-r{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.rounded-s{border-end-start-radius:.25rem;border-start-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-\[1\.5px\]{border-width:1.5px}.border-x{border-left-width:1px;border-right-width:1px}.border-y{border-top-width:1px}.border-b,.border-y{border-bottom-width:1px}.border-e{border-inline-end-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-double{border-style:double}.border-hidden{border-style:hidden}.border-none{border-style:none}.border-\[\#0677DB4D\]{border-color:#0677db4d}.border-\[\#0678DB\]{--tw-border-opacity:1;border-color:rgb(6 120 219/var(--tw-border-opacity))}.border-\[\#114CDD\]{--tw-border-opacity:1;border-color:rgb(17 76 221/var(--tw-border-opacity))}.border-\[\#259AFF\]{--tw-border-opacity:1;border-color:rgb(37 154 255/var(--tw-border-opacity))}.border-\[\#76BBFF80\]{border-color:#76bbff80}.border-\[\#C5CBD8\]{--tw-border-opacity:1;border-color:rgb(197 203 216/var(--tw-border-opacity))}.border-\[\#D0D8E3\]{--tw-border-opacity:1;border-color:rgb(208 216 227/var(--tw-border-opacity))}.border-\[\#D1D5DB\]{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-\[\#D2DAE3\]{--tw-border-opacity:1;border-color:rgb(210 218 227/var(--tw-border-opacity))}.border-\[\#D6DAE1\]{--tw-border-opacity:1;border-color:rgb(214 218 225/var(--tw-border-opacity))}.border-\[\#DDDDDD\]{--tw-border-opacity:1;border-color:rgb(221 221 221/var(--tw-border-opacity))}.border-\[\#DEE4EC\]{--tw-border-opacity:1;border-color:rgb(222 228 236/var(--tw-border-opacity))}.border-\[\#DFE4EC\]{--tw-border-opacity:1;border-color:rgb(223 228 236/var(--tw-border-opacity))}.border-\[\#E7D9D9\]{--tw-border-opacity:1;border-color:rgb(231 217 217/var(--tw-border-opacity))}.border-\[\#EAECF0\]{--tw-border-opacity:1;border-color:rgb(234 236 240/var(--tw-border-opacity))}.border-\[\#ED1C24\]{--tw-border-opacity:1;border-color:rgb(237 28 36/var(--tw-border-opacity))}.border-\[\#FA354A\]{--tw-border-opacity:1;border-color:rgb(250 53 74/var(--tw-border-opacity))}.border-\[\#FBFBFB\]{--tw-border-opacity:1;border-color:rgb(251 251 251/var(--tw-border-opacity))}.border-\[\#FFD83E\]{--tw-border-opacity:1;border-color:rgb(255 216 62/var(--tw-border-opacity))}.border-\[\#e1e1e1\]{--tw-border-opacity:1;border-color:rgb(225 225 225/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.\!bg-transparent{background-color:transparent!important}.bg-\[\#003ED0\]{--tw-bg-opacity:1;background-color:rgb(0 62 208/var(--tw-bg-opacity))}.bg-\[\#004BA4\]{--tw-bg-opacity:1;background-color:rgb(0 75 164/var(--tw-bg-opacity))}.bg-\[\#0676DA\]{--tw-bg-opacity:1;background-color:rgb(6 118 218/var(--tw-bg-opacity))}.bg-\[\#0678DB\]{--tw-bg-opacity:1;background-color:rgb(6 120 219/var(--tw-bg-opacity))}.bg-\[\#0719A7\]{--tw-bg-opacity:1;background-color:rgb(7 25 167/var(--tw-bg-opacity))}.bg-\[\#2b8ae0\]{--tw-bg-opacity:1;background-color:rgb(43 138 224/var(--tw-bg-opacity))}.bg-\[\#9CA3AF\]{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.bg-\[\#A0A5AC\]{--tw-bg-opacity:1;background-color:rgb(160 165 172/var(--tw-bg-opacity))}.bg-\[\#DCE8FF\]{--tw-bg-opacity:1;background-color:rgb(220 232 255/var(--tw-bg-opacity))}.bg-\[\#DEE4EC\]{--tw-bg-opacity:1;background-color:rgb(222 228 236/var(--tw-bg-opacity))}.bg-\[\#E8ECF6\]{--tw-bg-opacity:1;background-color:rgb(232 236 246/var(--tw-bg-opacity))}.bg-\[\#EAF1FF\]{--tw-bg-opacity:1;background-color:rgb(234 241 255/var(--tw-bg-opacity))}.bg-\[\#EBEBEB\]{--tw-bg-opacity:1;background-color:rgb(235 235 235/var(--tw-bg-opacity))}.bg-\[\#EFF6FF\]{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.bg-\[\#F0F5FF\]{--tw-bg-opacity:1;background-color:rgb(240 245 255/var(--tw-bg-opacity))}.bg-\[\#F2F2F2\]{--tw-bg-opacity:1;background-color:rgb(242 242 242/var(--tw-bg-opacity))}.bg-\[\#F2F6FF\]{--tw-bg-opacity:1;background-color:rgb(242 246 255/var(--tw-bg-opacity))}.bg-\[\#F3F3F3\]{--tw-bg-opacity:1;background-color:rgb(243 243 243/var(--tw-bg-opacity))}.bg-\[\#F3F4F6\]{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-\[\#F5F6F7\]{--tw-bg-opacity:1;background-color:rgb(245 246 247/var(--tw-bg-opacity))}.bg-\[\#F5F8FF\]{--tw-bg-opacity:1;background-color:rgb(245 248 255/var(--tw-bg-opacity))}.bg-\[\#F8F3F3\]{--tw-bg-opacity:1;background-color:rgb(248 243 243/var(--tw-bg-opacity))}.bg-\[\#FA354A\]{--tw-bg-opacity:1;background-color:rgb(250 53 74/var(--tw-bg-opacity))}.bg-\[\#FEF2F2\]{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.bg-\[\#FF4E2A\]{--tw-bg-opacity:1;background-color:rgb(255 78 42/var(--tw-bg-opacity))}.bg-\[\#FFE078\]{--tw-bg-opacity:1;background-color:rgb(255 224 120/var(--tw-bg-opacity))}.bg-\[\#e8ecf6\]{--tw-bg-opacity:1;background-color:rgb(232 236 246/var(--tw-bg-opacity))}.bg-\[\#fff\]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-\[rgba\(255\2c 255\2c 255\2c 0\.1\)\]{background-color:hsla(0,0%,100%,.1)}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-\[linear-gradient\(148\.21deg\2c \#FFD83E_-14\.02\%\2c \#FF4E2A_70\.14\%\)\]{background-image:linear-gradient(148.21deg,#ffd83e -14.02%,#ff4e2a 70.14%)}.bg-\[linear-gradient\(165\.29deg\2c \#259AFF_8\.53\%\2c \#114CDD_93\.19\%\)\]{background-image:linear-gradient(165.29deg,#259aff 8.53%,#114cdd 93.19%)}.bg-\[linear-gradient\(180\.3deg\2c \#259AFF_-18\.56\%\2c \#114CDD_100\.92\%\)\],.bg-\[linear-gradient\(180\.3deg\2c \#259AFF_-18\.56\%\2c _\#114CDD_100\.92\%\)\]{background-image:linear-gradient(180.3deg,#259aff -18.56%,#114cdd 100.92%)}.bg-\[linear-gradient\(180deg\2c \#EAF1FF_0\%\2c \#DAE7FF_100\%\)\]{background-image:linear-gradient(180deg,#eaf1ff,#dae7ff)}.bg-\[linear-gradient\(182\.15deg\2c \#FFA480_-18\.44\%\2c \#EB0C23_60\.76\%\)\]{background-image:linear-gradient(182.15deg,#ffa480 -18.44%,#eb0c23 60.76%)}.bg-\[linear-gradient\(270\.05deg\2c \#CB0F23_0\.04\%\2c \#FF3246_99\.97\%\)\]{background-image:linear-gradient(270.05deg,#cb0f23 .04%,#ff3246 99.97%)}.bg-\[linear-gradient\(270deg\2c _\#FFFFFF_0\%\2c _rgba\(255\2c 255\2c 255\2c 0\)_100\%\)\]{background-image:linear-gradient(270deg,#fff,hsla(0,0%,100%,0))}.bg-\[linear-gradient\(70\.1deg\2c \#75798B_62\.94\%\2c \#ADB5CD_100\%\)\]{background-image:linear-gradient(70.1deg,#75798b 62.94%,#adb5cd)}.decoration-slice{-webkit-box-decoration-break:slice;box-decoration-break:slice}.decoration-clone{-webkit-box-decoration-break:clone;box-decoration-break:clone}.box-decoration-slice{-webkit-box-decoration-break:slice;box-decoration-break:slice}.box-decoration-clone{-webkit-box-decoration-break:clone;box-decoration-break:clone}.bg-\[length\:100\%_100\%\]{background-size:100% 100%}.bg-\[length\:contain\]{background-size:contain}.bg-fixed{background-attachment:fixed}.bg-local{background-attachment:local}.bg-scroll{background-attachment:scroll}.bg-clip-border{background-clip:border-box}.bg-clip-padding{background-clip:padding-box}.bg-clip-content{background-clip:content-box}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.bg-center{background-position:50%}.bg-repeat{background-repeat:repeat}.bg-no-repeat{background-repeat:no-repeat}.bg-repeat-x{background-repeat:repeat-x}.bg-repeat-y{background-repeat:repeat-y}.bg-repeat-round{background-repeat:round}.bg-repeat-space{background-repeat:space}.bg-origin-border{background-origin:border-box}.bg-origin-padding{background-origin:padding-box}.bg-origin-content{background-origin:content-box}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.object-fill{-o-object-fit:fill;object-fit:fill}.object-none{-o-object-fit:none;object-fit:none}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.\!p-0{padding:0!important}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[0_10px\]{padding:0 10px}.p-\[10px\]{padding:10px}.p-\[10px_12px\]{padding:10px 12px}.p-\[14px_16px\]{padding:14px 16px}.p-\[16px_24px\]{padding:16px 24px}.p-\[16px_8px\]{padding:16px 8px}.p-\[24px_16px\]{padding:24px 16px}.p-\[6px\]{padding:6px}.p-\[6px_8px\]{padding:6px 8px}.p-\[8px_12px\]{padding:8px 12px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.px-\[17\.5px\]{padding-left:17.5px;padding-right:17.5px}.px-\[51px\]{padding-left:51px;padding-right:51px}.px-\[6px\]{padding-left:6px;padding-right:6px}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-16{padding-bottom:4rem;padding-top:4rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.py-\[17px\]{padding-bottom:17px;padding-top:17px}.py-\[6px\]{padding-bottom:6px;padding-top:6px}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pb-\[100\%\]{padding-bottom:100%}.pb-\[344px\]{padding-bottom:344px}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-5{padding-left:1.25rem}.pl-6{padding-left:1.5rem}.pr-0{padding-right:0}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pt-0{padding-top:0}.pt-10{padding-top:2.5rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-\[12px\]{padding-top:12px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-start{text-align:start}.text-end{text-align:end}.align-baseline{vertical-align:baseline}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-text-top{vertical-align:text-top}.align-text-bottom{vertical-align:text-bottom}.align-sub{vertical-align:sub}.align-super{vertical-align:super}.text-\[110px\]{font-size:110px}.text-\[21px\]{font-size:21px}.text-\[28px\]{font-size:28px}.text-\[32px\]{font-size:32px}.text-\[40px\]{font-size:40px}.text-\[7px\]{font-size:7px}.font-bold{font-weight:700}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.not-italic{font-style:normal}.normal-nums{font-variant-numeric:normal}.ordinal{--tw-ordinal:ordinal}.ordinal,.slashed-zero{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.slashed-zero{--tw-slashed-zero:slashed-zero}.lining-nums{--tw-numeric-figure:lining-nums}.lining-nums,.oldstyle-nums{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums}.proportional-nums{--tw-numeric-spacing:proportional-nums}.proportional-nums,.tabular-nums{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing:tabular-nums}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions}.diagonal-fractions,.stacked-fractions{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions}.leading-10{line-height:2.5rem}.leading-3{line-height:.75rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-8{line-height:2rem}.leading-9{line-height:2.25rem}.leading-\[135\%\]{line-height:135%}.leading-\[14px\]{line-height:14px}.leading-\[15px\]{line-height:15px}.leading-\[18px\]{line-height:18px}.leading-\[19px\]{line-height:19px}.leading-\[20px\]{line-height:20px}.leading-\[21px\]{line-height:21px}.leading-\[22px\]{line-height:22px}.leading-\[23px\]{line-height:23px}.leading-\[26px\]{line-height:26px}.leading-\[30px\]{line-height:30px}.leading-\[31px\]{line-height:31px}.leading-\[34px\]{line-height:34px}.leading-\[38px\]{line-height:38px}.leading-\[40px\]{line-height:40px}.leading-\[48px\]{line-height:48px}.leading-\[50px\]{line-height:50px}.leading-\[52px\]{line-height:52px}.leading-\[inherit\]{line-height:inherit}.text-\[\#000\]{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-\[\#004BA4\]{--tw-text-opacity:1;color:rgb(0 75 164/var(--tw-text-opacity))}.text-\[\#00AD4F\]{--tw-text-opacity:1;color:rgb(0 173 79/var(--tw-text-opacity))}.text-\[\#0678DB\]{--tw-text-opacity:1;color:rgb(6 120 219/var(--tw-text-opacity))}.text-\[\#2563EB\]{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-\[\#34A853\]{--tw-text-opacity:1;color:rgb(52 168 83/var(--tw-text-opacity))}.text-\[\#4285F4\]{--tw-text-opacity:1;color:rgb(66 133 244/var(--tw-text-opacity))}.text-\[\#474747\]{--tw-text-opacity:1;color:rgb(71 71 71/var(--tw-text-opacity))}.text-\[\#5D6776\]{--tw-text-opacity:1;color:rgb(93 103 118/var(--tw-text-opacity))}.text-\[\#5F6368\]{--tw-text-opacity:1;color:rgb(95 99 104/var(--tw-text-opacity))}.text-\[\#6B7280\]{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-\[\#757575\]{--tw-text-opacity:1;color:rgb(117 117 117/var(--tw-text-opacity))}.text-\[\#828282\]{--tw-text-opacity:1;color:rgb(130 130 130/var(--tw-text-opacity))}.text-\[\#928FA8\]{--tw-text-opacity:1;color:rgb(146 143 168/var(--tw-text-opacity))}.text-\[\#A0A5AC\]{--tw-text-opacity:1;color:rgb(160 165 172/var(--tw-text-opacity))}.text-\[\#B5BAC1\]{--tw-text-opacity:1;color:rgb(181 186 193/var(--tw-text-opacity))}.text-\[\#BE1F2D\]{--tw-text-opacity:1;color:rgb(190 31 45/var(--tw-text-opacity))}.text-\[\#E16B10\]{--tw-text-opacity:1;color:rgb(225 107 16/var(--tw-text-opacity))}.text-\[\#EA4335\]{--tw-text-opacity:1;color:rgb(234 67 53/var(--tw-text-opacity))}.text-\[\#FBBC05\]{--tw-text-opacity:1;color:rgb(251 188 5/var(--tw-text-opacity))}.text-\[\#FBBF24\]{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.text-\[\#FF4E2A\]{--tw-text-opacity:1;color:rgb(255 78 42/var(--tw-text-opacity))}.text-\[\#ffc403\]{--tw-text-opacity:1;color:rgb(255 196 3/var(--tw-text-opacity))}.text-\[red\]{--tw-text-opacity:1;color:rgb(255 0 0/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.overline{text-decoration-line:overline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.decoration-solid{text-decoration-style:solid}.decoration-double{text-decoration-style:double}.decoration-dotted{text-decoration-style:dotted}.decoration-dashed{text-decoration-style:dashed}.decoration-wavy{text-decoration-style:wavy}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.opacity-0{opacity:0}.opacity-80,.opacity-\[0\.8\]{opacity:.8}.bg-blend-normal{background-blend-mode:normal}.bg-blend-multiply{background-blend-mode:multiply}.bg-blend-screen{background-blend-mode:screen}.bg-blend-overlay{background-blend-mode:overlay}.bg-blend-darken{background-blend-mode:darken}.bg-blend-lighten{background-blend-mode:lighten}.bg-blend-color-dodge{background-blend-mode:color-dodge}.bg-blend-color-burn{background-blend-mode:color-burn}.bg-blend-hard-light{background-blend-mode:hard-light}.bg-blend-soft-light{background-blend-mode:soft-light}.bg-blend-difference{background-blend-mode:difference}.bg-blend-exclusion{background-blend-mode:exclusion}.bg-blend-hue{background-blend-mode:hue}.bg-blend-saturation{background-blend-mode:saturation}.bg-blend-color{background-blend-mode:color}.bg-blend-luminosity{background-blend-mode:luminosity}.mix-blend-normal{mix-blend-mode:normal}.mix-blend-multiply{mix-blend-mode:multiply}.mix-blend-screen{mix-blend-mode:screen}.mix-blend-overlay{mix-blend-mode:overlay}.mix-blend-darken{mix-blend-mode:darken}.mix-blend-lighten{mix-blend-mode:lighten}.mix-blend-color-dodge{mix-blend-mode:color-dodge}.mix-blend-color-burn{mix-blend-mode:color-burn}.mix-blend-hard-light{mix-blend-mode:hard-light}.mix-blend-soft-light{mix-blend-mode:soft-light}.mix-blend-difference{mix-blend-mode:difference}.mix-blend-exclusion{mix-blend-mode:exclusion}.mix-blend-hue{mix-blend-mode:hue}.mix-blend-saturation{mix-blend-mode:saturation}.mix-blend-color{mix-blend-mode:color}.mix-blend-luminosity{mix-blend-mode:luminosity}.mix-blend-plus-lighter{mix-blend-mode:plus-lighter}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-\[0px_4px_10px_0px_\#0000001a\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0px_4px_10px_0px_\#0000001a\]{--tw-shadow:0px 4px 10px 0px #0000001a;--tw-shadow-colored:0px 4px 10px 0px var(--tw-shadow-color)}.shadow-\[0px_4px_20px_0px_\#004AA11A\]{--tw-shadow:0px 4px 20px 0px #004aa11a;--tw-shadow-colored:0px 4px 20px 0px var(--tw-shadow-color)}.shadow-\[0px_4px_20px_0px_\#004AA11A\],.shadow-\[0px_4px_20px_0px_\#0615070D\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0px_4px_20px_0px_\#0615070D\]{--tw-shadow:0px 4px 20px 0px #0615070d;--tw-shadow-colored:0px 4px 20px 0px var(--tw-shadow-color)}.shadow-\[0px_6px_8px_-2px_\#10182814\]{--tw-shadow:0px 6px 8px -2px #10182814;--tw-shadow-colored:0px 6px 8px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.outline-dashed{outline-style:dashed}.outline-dotted{outline-style:dotted}.outline-double{outline-style:double}.ring-inset{--tw-ring-inset:inset}.blur{--tw-blur:blur(8px)}.blur,.drop-shadow{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.grayscale{--tw-grayscale:grayscale(100%)}.grayscale,.invert{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%)}.sepia{--tw-sepia:sepia(100%)}.filter,.sepia{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter-none{filter:none}.backdrop-blur{--tw-backdrop-blur:blur(8px)}.backdrop-blur,.backdrop-grayscale{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%)}.backdrop-invert{--tw-backdrop-invert:invert(100%)}.backdrop-invert,.backdrop-sepia{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter-none{-webkit-backdrop-filter:none;backdrop-filter:none}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-\[250ms\]{transition-duration:.25s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.placeholder\:\!text-\[14px\]::-moz-placeholder{font-size:14px!important}.placeholder\:\!text-\[14px\]::placeholder{font-size:14px!important}.placeholder\:text-\[16px\]::-moz-placeholder{font-size:16px}.placeholder\:text-\[16px\]::placeholder{font-size:16px}.placeholder\:font-normal::-moz-placeholder{font-weight:400}.placeholder\:font-normal::placeholder{font-weight:400}.placeholder\:\!text-\[\#5F5F5F\]::-moz-placeholder{--tw-text-opacity:1!important;color:rgb(95 95 95/var(--tw-text-opacity))!important}.placeholder\:\!text-\[\#5F5F5F\]::placeholder{--tw-text-opacity:1!important;color:rgb(95 95 95/var(--tw-text-opacity))!important}.placeholder\:text-\[\#718096\]::-moz-placeholder{--tw-text-opacity:1;color:rgb(113 128 150/var(--tw-text-opacity))}.placeholder\:text-\[\#718096\]::placeholder{--tw-text-opacity:1;color:rgb(113 128 150/var(--tw-text-opacity))}.placeholder\:text-\[\#9B9B9B\]::-moz-placeholder{--tw-text-opacity:1;color:rgb(155 155 155/var(--tw-text-opacity))}.placeholder\:text-\[\#9B9B9B\]::placeholder{--tw-text-opacity:1;color:rgb(155 155 155/var(--tw-text-opacity))}.first\:mt-4:first-child{margin-top:1rem}.first\:border-0:first-child{border-width:0}.first\:border-t:first-child{border-top-width:1px}.first\:pt-4:first-child{padding-top:1rem}.last\:m-0:last-child{margin:0}.last\:mb-0:last-child{margin-bottom:0}.last\:border-0:last-child{border-width:0}.last\:p-0:last-child{padding:0}.hover\:bottom-\[5px\]:hover{bottom:5px}.hover\:border-\[\#0678DB\]:hover{--tw-border-opacity:1;border-color:rgb(6 120 219/var(--tw-border-opacity))}.hover\:border-transparent:hover{border-color:transparent}.hover\:bg-\[\#004BA4\]:hover{--tw-bg-opacity:1;background-color:rgb(0 75 164/var(--tw-bg-opacity))}.hover\:bg-\[\#0676DA\]:hover{--tw-bg-opacity:1;background-color:rgb(6 118 218/var(--tw-bg-opacity))}.hover\:bg-\[\#0678DB\]:hover{--tw-bg-opacity:1;background-color:rgb(6 120 219/var(--tw-bg-opacity))}.hover\:bg-\[\#BE1F2D\]:hover{--tw-bg-opacity:1;background-color:rgb(190 31 45/var(--tw-bg-opacity))}.hover\:bg-\[\#F2F2F2\]:hover{--tw-bg-opacity:1;background-color:rgb(242 242 242/var(--tw-bg-opacity))}.hover\:text-\[\#0676DA\]:hover{--tw-text-opacity:1;color:rgb(6 118 218/var(--tw-text-opacity))}.hover\:text-\[\#0678DB\]:hover{--tw-text-opacity:1;color:rgb(6 120 219/var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.hover\:opacity-\[1\]:hover{opacity:1}.group:hover .group-hover\:visible{visibility:visible}.group:hover .group-hover\:top-\[100\%\]{top:100%}.group:hover .group-hover\:z-\[5\]{z-index:5}.group:hover .group-hover\:z-\[9\]{z-index:9}.group:hover .group-hover\:rotate-\[-180deg\]{--tw-rotate:-180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:text-\[\#0678DB\]{--tw-text-opacity:1;color:rgb(6 120 219/var(--tw-text-opacity))}.group:hover .group-hover\:opacity-100{opacity:1}@media (min-width:768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:top-\[76px\]{top:76px}.lg\:m-0{margin:0}.lg\:\!mb-6{margin-bottom:1.5rem!important}.lg\:-mb-16{margin-bottom:-4rem}.lg\:mb-1{margin-bottom:.25rem}.lg\:mb-10{margin-bottom:2.5rem}.lg\:mb-12{margin-bottom:3rem}.lg\:mb-3{margin-bottom:.75rem}.lg\:mb-4{margin-bottom:1rem}.lg\:mb-5{margin-bottom:1.25rem}.lg\:mb-6{margin-bottom:1.5rem}.lg\:mb-8{margin-bottom:2rem}.lg\:mt-12{margin-top:3rem}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:h-10{height:2.5rem}.lg\:h-12{height:3rem}.lg\:h-6{height:1.5rem}.lg\:h-8{height:2rem}.lg\:w-10{width:2.5rem}.lg\:w-12{width:3rem}.lg\:w-6{width:1.5rem}.lg\:w-8{width:2rem}.lg\:w-\[520px\]{width:520px}.lg\:w-\[718px\]{width:718px}.lg\:w-\[732px\]{width:732px}.lg\:w-\[823px\]{width:823px}.lg\:w-\[calc\(100\%-742px\)\]{width:calc(100% - 742px)}.lg\:w-\[calc\(100\%-748px\)\]{width:calc(100% - 748px)}.lg\:w-auto{width:auto}.lg\:min-w-\[550px\]{min-width:550px}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:gap-1{gap:.25rem}.lg\:gap-12{gap:3rem}.lg\:gap-14{gap:3.5rem}.lg\:gap-3{gap:.75rem}.lg\:gap-4{gap:1rem}.lg\:gap-6{gap:1.5rem}.lg\:gap-8{gap:2rem}.lg\:gap-\[30px\]{gap:30px}.lg\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.lg\:gap-x-\[32px\]{-moz-column-gap:32px;column-gap:32px}.lg\:gap-y-6{row-gap:1.5rem}.lg\:gap-y-\[48px\]{row-gap:48px}.lg\:rounded-\[12px\]{border-radius:12px}.lg\:rounded-\[16px\]{border-radius:16px}.lg\:p-10{padding:2.5rem}.lg\:p-4{padding:1rem}.lg\:p-6{padding:1.5rem}.lg\:p-\[12px_16px\]{padding:12px 16px}.lg\:py-12{padding-bottom:3rem;padding-top:3rem}.lg\:py-16{padding-bottom:4rem;padding-top:4rem}.lg\:pt-5{padding-top:1.25rem}.lg\:text-left{text-align:left}.lg\:text-\[13px\]{font-size:13px}.lg\:text-\[14px\]{font-size:14px}.lg\:text-\[16px\]{font-size:16px}.lg\:text-\[18px\]{font-size:18px}.lg\:text-\[20px\]{font-size:20px}.lg\:text-\[24px\]{font-size:24px}.lg\:text-\[32px\]{font-size:32px}.lg\:text-\[40px\]{font-size:40px}.lg\:leading-10{line-height:2.5rem}.lg\:leading-4{line-height:1rem}.lg\:leading-5{line-height:1.25rem}.lg\:leading-6{line-height:1.5rem}.lg\:leading-8{line-height:2rem}.lg\:leading-\[18px\]{line-height:18px}.lg\:leading-\[22px\]{line-height:22px}.lg\:leading-\[48px\]{line-height:48px}.lg\:shadow-\[none\]{--tw-shadow-color:none;--tw-shadow:var(--tw-shadow-colored)}}
\ No newline at end of file
diff --git a/src/app/[slug]/page.tsx b/src/app/[slug]/page.tsx
new file mode 100644
index 0000000..bdb62b9
--- /dev/null
+++ b/src/app/[slug]/page.tsx
@@ -0,0 +1,43 @@
+import { notFound } from "next/navigation";
+import { findBySlug } from "@/lib/slugMap";
+
+import ProductCategory from "@/components/product/Category";
+import ProductDetail from "@/components/product/ProductDetail";
+import ArticleHome from "@/components/article/Home";
+import ArticleCategory from "@/components/article/Category";
+import ArticleDetail from "@/components/article/ArticleDetail";
+
+
+export default async function SlugPage({
+ params,
+}: {
+ params: Promise<{ slug: string }>;
+}) {
+ const { slug } = await params;
+
+ if (!slug) return notFound();
+
+ const result = findBySlug(slug);
+
+ if (!result) return notFound();
+
+ switch (result.type) {
+ case "product_category":
+ return
Trang không tồn tại
++ Lorem ipsum dolor sit amet consectetur, adipisicing elit. Aspernatur + quaerat vero itaque voluptatum? Repellendus laudantium est doloribus + saepe accusantium, illo numquam ullam deserunt expedita repudiandae + ipsam libero, temporibus soluta eius. +
++ {" "} + Bài viết liên quan{" "} +
+ {/* Limit: 4 */} +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {" "}
+ PC Đồ Họa Siêu Khỏe - Đẹp 13900K + VGA RTX 4070{" "}
+
+
+
+
+
+ {" "}
+
+
+ PC Đồ Họa Siêu Khỏe - Đẹp 13900K + VGA RTX 4070
+
+
+
+
+
+ {" "}
+
+
+ PC Đồ Họa Siêu Khỏe - Đẹp 13900K + VGA RTX 4070
+
+
+
+
+
+ {" "}
+
+
+ PC Đồ Họa Siêu Khỏe - Đẹp 13900K + VGA RTX 4070
+
+
+
+
+
+ {" "}
+
+
+ PC Đồ Họa Siêu Khỏe - Đẹp 13900K + VGA RTX 4070
+
+
+
+
+
{" "}
+ {" "}
+ + {" "} + Tin nổi bật{" "} +
+ {/* Limit: 3 */} +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + Trending video +
+
+
+ + PC Đồ Họa Siêu Khỏe - Đẹp 13900K + VGA RTX 4070 + +
+ + + {" "} + +
{" "}
+ {" "}
+ + {" "} + + Mini PC White Nhỏ Gọn - Tinh Tế - Hiệu Năng Cao + {" "} + {" "} +
{" "} + + + {" "} + +
{" "}
+ {" "}
+ + {" "} + + PC Full Trắng 5x Triệu Linh Kiện Thế Hệ Mới Hiệu Năng Khủng + {" "} + {" "} +
{" "} + + + {" "} + +
{" "}
+ {" "}
+ + {" "} + + Cấu Hình "Chất Chơi" Với i9-13900K - RTX 3070 Siêu Khỏe! + {" "} + {" "} +
{" "} + + + {" "} + +
{" "}
+ {" "}
+ + {" "} + + PC Gaming Full Trắng Siêu Đẹp Với i7-13700K vs RTX 4070 + {" "} + {" "} +
{" "} + {" "} + + {" "} + +
{" "}
+ {" "}
+ + {" "} + Review PC Hơn 50 Triệu Cực Ngầu Full Đen{" "} + {" "} +
{" "} + ++ {" "} + Theo dõi kênh tiktok của Hoàng hà PC:{" "} +
+ + {" "} + ORIGINAL SOUND - HOÀNG HÀ PC{" "} + +
+ + {" "} + Không có sản phẩm nào trong giỏ hàng của bạn ! +
+ + {" "} + VỀ TRANG CHỦ {" "} + +5 sản phẩm
+ +
{" "}
+
+ + Chi tiết khuyến mại + +
++ + ⭐ Tặng Balo Laptop Hoàng Hà PC + +
++ + ⭐ Tặng Chuột không dây + +
++ + ⭐ Tặng Bàn di chuột + +
++ {" "} + 42.000.000 đ{" "} +
++ {" "} + Thông tin đơn hàng{" "} +
+Tổng tiền
+50.000.000 đ
++ + Tổng thanh toán +
++ {" "} + 41.450.000 đ{" "} +
+
+
+ Chúng tôi vừa nhận được đơn đặt hàng của quý khách trên website
+ HOANGHAPC
+ Đơn hàng này đang được xử lý. Trong vòng{" "}
+ 30 phút (giờ làm việc) , bộ phận bán hàng
+ trực tuyến sẽ liên hệ lại Quý khách để xác nhận thời gian và địa điểm
+ giao hàng.
+
+ Cảm ơn quý khách đã mua sắm tại Trung tâm thiết bị số HOANGHAPC. Hi vọng + chúng tôi đã mang lại cho quý khách những trải nghiệm mua sắm thật tuyệt + vời. +
+ +Có lỗi xảy ra khi gửi đơn hàng
++ {" "} + Đơn hàng của quý khách chưa được gửi. Vui lòng quay lại giỏ hàng để thử + gửi lại hoặc liên hệ với chúng tôi để được trợ giúp.{" "} +
+Cảm ơn quý khách !
+Cấu hình Flash Sale
+00
00
00
00
+48.990.000 đ
+48.990.000 đ
48.990.000 đ
48.990.000 đ
48.990.000 đ
48.990.000 đ
+
+ + + Trả góp 0% +
+ ++ + Miễn phí giao hàng +
+ ++ + Giao hàng toàn quốc +
+ ++ + Bảo hành tận nơi +
+
+
+
+ 22.000.000 đ
++ + Sẵn hàng +
+ + {/*+ + Liên hệ +
*/} + ++ + Quà tặng +
++ [Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX 3060 12GB +
+ +
+ Giá bán:
+ 48.990.000 đ
+ 52.000.000 đ
+ -6%
+
+ Bảo hành: + Theo từng linh kiện +
++ + Thông số sản phẩm +
+ ++ + Khuyến mại hấp dẫn +
+ +⭐ Bảo Hành Tại Nơi Sử Dụng (Áp Dụng Nội Thành Hà Nội và Hồ Chí Minh)
⭐ Bảo Hành Siêu Tốc 1 Đổi 1 Trong 24h
⭐ Miễn Phí 100% Vận Chuyển Toàn Quốc

22.000.000 đ
Liên hệ
[Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX 3060 12GB
Giá bán:48.990.000 đ52.000.000 đ-6%
Bảo hành:Theo từng linh kiện
Thông số sản phẩm

22.000.000 đ
Liên hệ
Quà tặng
[Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX 3060 12GB
Giá bán:48.990.000 đ52.000.000 đ-6%
Bảo hành:Theo từng linh kiện
Thông số sản phẩm
Khuyến mại hấp dẫn
⭐ Bảo Hành Tại Nơi Sử Dụng (Áp Dụng Nội Thành Hà Nội và Hồ Chí Minh)
⭐ Bảo Hành Siêu Tốc 1 Đổi 1 Trong 24h
⭐ Miễn Phí 100% Vận Chuyển Toàn Quốc

22.000.000 đ
Sẵn hàng
[Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX 3060 12GB
Giá bán:48.990.000 đ52.000.000 đ-6%
Bảo hành:Theo từng linh kiện

22.000.000 đ
Sẵn hàng
[Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX 3060 12GB
Giá bán:48.990.000 đ
Bảo hành:Theo từng linh kiện

22.000.000 đ
Liên hệ
Quà tặng
[Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX 3060 12GB
Giá bán:48.990.000 đ52.000.000 đ-6%
Bảo hành:Theo từng linh kiện
Thông số sản phẩm
Khuyến mại hấp dẫn
⭐ Bảo Hành Tại Nơi Sử Dụng (Áp Dụng Nội Thành Hà Nội và Hồ Chí Minh)
⭐ Bảo Hành Siêu Tốc 1 Đổi 1 Trong 24h
⭐ Miễn Phí 100% Vận Chuyển Toàn Quốc

22.000.000 đ
Sẵn hàng
Quà tặng
[Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX 3060 12GB
Giá bán:48.990.000 đ52.000.000 đ-6%
Bảo hành:Theo từng linh kiện
Thông số sản phẩm
Khuyến mại hấp dẫn
⭐ Bảo Hành Tại Nơi Sử Dụng (Áp Dụng Nội Thành Hà Nội và Hồ Chí Minh)
⭐ Bảo Hành Siêu Tốc 1 Đổi 1 Trong 24h
⭐ Miễn Phí 100% Vận Chuyển Toàn Quốc
Về Hoàng Hà PC
+ + +Hỗ trợ khách hàng
+ + +Chính sách
+ + +Cộng đồng
+ + +Email liên hệ
+ ++ + Hợp Tác Phát Triển: +
+ + hoanghapcws@gmail.com ++ + Liên Hệ Báo Giá: +
+ + kinhdoanh@hoanghapc.vn ++ + Hỗ Trợ Bảo Hành: +
+ + baohanh@hoanghapc.vn +
+ CÔNG TY TNHH DỊCH VỤ VÀ CÔNG NGHỆ HOÀNG HÀ
+ Giấy chứng nhận đăng ký kinh doanh số: 0107406972, được Sở Kế hoạch và Đầu tư Tp. Hà Nội cấp
+
Hãy để lại Email để nhận thông báo Khuyến mại hấp dẫn hoặc tư vấn miễn phí từ Hoàng Hà PC!
+ + +Hệ thống Showroom
+ +QUẬN CẦU GIẤY, HÀ NỘI
+ ++ Địa chỉ: Số 41 Khúc Thừa Dụ, Phường Cầu Giấy, Hà Nội +
++ Hotline: 0969123666 +
++ Thời gian làm việc: 8h00 - 20h00 +
+QUẬN ĐỐNG ĐA, HÀ NỘI
+ ++ Địa chỉ: Số 94E-94F Đường Láng, Phường Đống Đa, Hà Nội +
++ Hotline: 0969123666 +
++ Thời gian làm việc: 8h00 - 20h00 +
+TP. VINH, NGHỆ AN
+ ++ Địa chỉ: Số 72 Lê Lợi, Phường Thành Vinh, Nghệ An +
++ Hotline: 0969123666 +
++ Thời gian làm việc: 8h30 - 18h30 +
+QUẬN 10, HỒ CHÍ MINH
+ ++ Địa chỉ: Số 260 Lý Thường Kiệt, Phường Diên Hồng, Hồ Chí Minh +
++ Hotline: 0969123666 +
++ Thời gian làm việc: 8h00 - 20h00 +
+Chúng tôi luôn lắng nghe mọi ý kiến đóng góp từ Quý khách
+Vui lòng điền đầy đủ thông tin bên dưới để chúng tôi có thể hỗ trợ nhanh chóng và chính xác nhất.
+ +Họ và tên *
+ +Số điện thoại *
+ +Loại yêu cầu *
+ +Nội dung chi tiết
+ +Thời gian phản hồi mong muốn
+ + ++ + Thông tin của Quý khách sẽ được chúng tôi bảo mật tuyệt đối và chỉ sử dụng nhằm mục đích hỗ trợ. +
+ + + + +Liên hệ hotline để nhận được tư vấn tốt nhất
+HOÀNG HÀ PC CẦU GIẤY
+ ++ 0969123666 + Mr.Long +
+ ++ 0922635999 + Mr. Thụ +
+BẢO HÀNH - HỖ TRỢ KỸ THUẬT
+ ++ 0976382666 + Mr. Dũng +
+ ++ 19006100 + Bảo hành +
+HOÀNG HÀ PC ĐỐNG ĐA
+ ++ 0396122999 + Mr.Nghĩa +
+ ++ 0396138999 + Mr. Huy +
+ ++ 0396178999 + Mr. Duy +
+ ++ 0397122122 + Mr. Tùng Anh +
+HOÀNG HÀ PC MIỀN TRUNG
+ ++ 0988163666 + Mr. Hưng +
+ ++ 0356072072 + Mr. Huy +
+BẢO HÀNH - HỖ TRỢ KỸ THUẬT
+ ++ 0358072072 + Mr.Toản +
+ ++ 19006100 + Bảo hành +
+HOÀNG HÀ PC ĐỐNG ĐA
+ + +BẢO HÀNH - HỖ TRỢ KỸ THUẬT
+ ++ 0345260260 + Mr. Nhân +
+ ++ 19006100 + Bảo hành +
+
x16.190.000 đ
Tổng tiền hàng (3 sản phẩm): 10.770.000đ
THANH TOÁN NGAY
+
+ )
+}
\ No newline at end of file
diff --git a/src/components/other/Header/Menu.tsx b/src/components/other/Header/Menu.tsx
new file mode 100644
index 0000000..c484732
--- /dev/null
+++ b/src/components/other/Header/Menu.tsx
@@ -0,0 +1,15 @@
+export default function Menu(){
+ return(
+ + Danh mục +
+ ++ {" "} + Lọc sản phẩm{" "} +
+ {/* Danh muc */} +Danh mục
++ + Tất cả +
+ +Khoảng giá
+Thương hiệu
+Attribute Name
+Tổng 124 sản phẩm
+Lọc theo:
++ Lựa chọn {" "} + +
+ +
+
+ 22.000.000 đ
++ + Sẵn hàng +
+ {/*+ + Liên hệ +
*/} ++ + Quà tặng +
++ [Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX + 3060 12GB +
+
+ Giá bán:
+
+ {" "}
+ 48.990.000 đ{" "}
+
+
+ {" "}
+ 52.000.000 đ{" "}
+
+
+ {" "}
+ -6%{" "}
+
+
+ Bảo hành: + Theo từng linh kiện +
++ + Thông số sản phẩm +
++ + Khuyến mại hấp dẫn +
++ + + ⭐ Bảo Hành Tại Nơi Sử Dụng (Áp Dụng Nội Thành Hà + Nội và Hồ Chí Minh) + + +
{" "} ++ + + ⭐ Bảo Hành Siêu Tốc 1 Đổi 1 Trong 24h{" "} + + +
++ + + ⭐ Miễn Phí 100% Vận Chuyển Toàn Quốc{" "} + + +
+
+
+ 22.000.000 đ
++ + Liên hệ +
++ [Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX + 3060 12GB +
+
+ Giá bán:
+
+ 48.990.000 đ
+
+
+ 52.000.000 đ
+
+
+ -6%
+
+
+ Bảo hành: + Theo từng linh kiện +
++ + Thông số sản phẩm +
+
+
+ 22.000.000 đ
++ + Liên hệ +
++ + Quà tặng +
++ [Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX + 3060 12GB +
+
+ Giá bán:
+
+ 48.990.000 đ
+
+
+ 52.000.000 đ
+
+
+ -6%
+
+
+ Bảo hành: + Theo từng linh kiện +
++ + Thông số sản phẩm +
++ + Khuyến mại hấp dẫn +
++ + + ⭐ Bảo Hành Tại Nơi Sử Dụng (Áp Dụng Nội Thành Hà + Nội và Hồ Chí Minh) + + +
++ + + ⭐ Bảo Hành Siêu Tốc 1 Đổi 1 Trong 24h + + +
++ + + ⭐ Miễn Phí 100% Vận Chuyển Toàn Quốc + + +
+
+
+ 22.000.000 đ
++ + Sẵn hàng +
++ [Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX + 3060 12GB +
+
+ Giá bán:
+
+ 48.990.000 đ
+
+
+ 52.000.000 đ
+
+
+ -6%
+
+
+ Bảo hành: + Theo từng linh kiện +
+
+
+ 22.000.000 đ
++ + Sẵn hàng +
+ ++ [Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX + 3060 12GB +
++ Giá bán: + + 48.990.000 đ + +
++ Bảo hành: + Theo từng linh kiện +
+
+
+ 22.000.000 đ
++ + Liên hệ +
++ + Quà tặng +
++ [Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX + 3060 12GB +
+
+ Giá bán:
+
+ 48.990.000 đ
+
+
+ 52.000.000 đ
+
+
+ -6%
+
+
+ Bảo hành: + Theo từng linh kiện +
++ + Thông số sản phẩm +
++ + Khuyến mại hấp dẫn +
++ + + ⭐ Bảo Hành Tại Nơi Sử Dụng (Áp Dụng Nội Thành Hà + Nội và Hồ Chí Minh) + + +
++ + + ⭐ Bảo Hành Siêu Tốc 1 Đổi 1 Trong 24h + + +
++ + + ⭐ Miễn Phí 100% Vận Chuyển Toàn Quốc + + +
+
+
+ 22.000.000 đ
++ + Sẵn hàng +
++ + Quà tặng +
++ [Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX + 3060 12GB +
+
+ Giá bán:
+
+ 48.990.000 đ
+
+
+ 52.000.000 đ
+
+
+ -6%
+
+
+ Bảo hành: + Theo từng linh kiện +
++ + Thông số sản phẩm +
++ + Khuyến mại hấp dẫn +
++ + + ⭐ Bảo Hành Tại Nơi Sử Dụng (Áp Dụng Nội Thành Hà + Nội và Hồ Chí Minh) + + +
++ + + ⭐ Bảo Hành Siêu Tốc 1 Đổi 1 Trong 24h + + +
++ + + ⭐ Miễn Phí 100% Vận Chuyển Toàn Quốc + + +
++ {" "} + Hiển thị 1 - 24 trên tổng số 124 sản phẩm{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam molestias + error sunt nostrum deleniti, beatae est? Est ipsam dignissimos vel + optio a!{" "} +
++ {" "} + Các câu hỏi thường gặp{" "} +
++ Nếu quý khách còn có bất kì câu hỏi nào cần hỗ trợ, vui lòng liên hệ với + chúng tôi qua các số hotline để được tư vấn và giải đáp nhanh chóng + nhất. +
++ {" "} + Có thể kiểm tra tính tương thích của linh kiện trước khi đặt không?{" "} +
++ {" "} + Có. Chúng tôi cung cấp công cụ "Build PC" để bạn dễ dàng chọn và kiểm + tra tính tương thích giữa CPU, mainboard, RAM, GPU, và các linh kiện + khác trước khi mua hàng.{" "} +
++ Có thể kiểm tra tính tương thích của linh kiện trước khi đặt không? +
++ Có. Chúng tôi cung cấp công cụ "Build PC" để bạn dễ dàng chọn và kiểm + tra tính tương thích giữa CPU, mainboard, RAM, GPU, và các linh kiện + khác trước khi mua hàng. +
++ {" "} + Lượt xem: 0{" "} +
+ ++ Tình trạng: + Còn hàng + Liên hệ +
+Thông số sản phẩm
++ + BIG SALE +
++ {" "} + 48.990.000 đ{" "} +
++ {" "} + Giá đã bao gồm VAT{" "} +
++ {" "} + Bảo hành theo từng linh kiện{" "} +
+Liên hệ
+Kết thúc sau:
+00
00
00
00
++ {" "} + *KHÔNG ÁP DỤNG CỘNG DỒN CHƯƠNG TRÌNH KHUYẾN MẠI KHÁC{" "} +
++ {" "} + 48.990.000 đ{" "} +
++ {" "} + Giá đã bao gồm VAT{" "} +
++ {" "} + Bảo hành theo từng linh kiện{" "} +
+Liên hệ
++ + Miễn phí giao hàng trên toàn quốc +
++ Xem chi nhánh còn hàng + +
++ {" "} + Yên Tâm Mua Sắm Tại HoangHaPC{" "} +
++ {" "} + Đội ngũ kỹ thuật tư vấn chuyên sâu{" "} +
++ {" "} + Thanh toán thuận tiện{" "} +
++ {" "} + Sản phẩm 100% chính hãng{" "} +
++ {" "} + Bảo hành 1 đổi 1 tại nơi sử dụng{" "} +
++ {" "} + Giá cạnh tranh nhất thị trường{" "} +
++ {" "} + Liên Hệ Với Kinh Doanh Online{" "} +
++ Hotline Hà Nội:{" "} + + {" "} + 0969123666{" "} + +
++ Hotline Vinh, Nghệ An:{" "} + + {" "} + 0988.163.666{" "} + +
++ Hotline Hồ Chí Minh:{" "} + + {" "} + 0968.123.666{" "} + +
++ Hotline Bảo Hành:{" "} + + {" "} + 1900.6100{" "} + +
++ {" "} + Tham gia Cộng đồng "Cẩm Nang Build PC - Đồ Họa, Render, Giả Lập" để + theo dõi các ưu đãi dành riêng cho thành viên{" "} +
++ {" "} + Đánh giá HHPC CORE i7 14700 | 32G DDR5 | NVIDIA RTX 3060 12G{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus + neque facere tenetur, harum maiores aperiam ratione veniam + molestias error sunt nostrum deleniti, beatae est? Est ipsam + dignissimos vel optio a!{" "} +
++ {" "} + Đánh giá và bình luận{" "} +
+ {/* Rating */} +0
+0 lượt đánh giá
+ + ++ {" "} + 5{" "} + {" "} +
+0
++ 4{" "} + +
+0
++ 3{" "} + +
+0
++ 2{" "} + +
+0
++ 1{" "} + +
+0
+Chọn đánh giá của bạn
++
0 Bình luận
++ {" "} + Thông số kỹ thuật{" "} +
+| + STT + | ++ MÃ HÀNG + | ++ TÊN HÀNG + | ++ THỜI HẠN BẢO HÀNH + | +
| + 1 + | ++ CPU + | ++ + + INTEL CORE ULTRA 7 265K UP 5.5GHz | 20 CORE | 20 THREAD + + + | ++ 36 THÁNG + | +
| + 2 + | ++ MAIN + | ++ + + COLORFUL BATTLE-AX Z890M-PLUS V20 DDR5 + + + | ++ 36 THÁNG + | +
| + 3 + | ++ TẢN NHIỆT + | ++ + + ID-COOLING FROZN A620 PRO SE ARGB + + + | ++ 12 THÁNG + | +
| + 4 + | ++ RAM + | ++ + + DDR5 TEAMGROUP T-CREATE EXPERT 32GB 6000MHz (2x16GB) + + + | ++ 36 THÁNG + | +
| + 5 + | ++ SSD + | ++ + + TEAMGROUP G50 1TB PCIE Gen4x4 - RW 5000MB/s + + + | ++ 60 THÁNG + | +
| + 6 + | ++ + VGA + + | ++ + + COLORFUL RTX 3060 NB DUO 12G V4 L-V GDDR6 + + + | ++ 36 THÁNG + | +
| + 7 + | ++ PSU + | ++ + + DEEPCOOL PL750D 750W 80 PLUS BRONZE | ATX 3.1 | PCIE 5.1 + + + | ++ 60 THÁNG + | +
| + 8 + | ++ CASE + | ++ + + XIGMATEK GAMING X II 3F - 3FAN RGB + + + | ++ |
| + STT + | ++ MÃ HÀNG + | ++ TÊN HÀNG + | ++ THỜI HẠN BẢO HÀNH + | +
| + 1 + | ++ CPU + | ++ + + INTEL CORE ULTRA 7 265K UP 5.5GHz | 20 CORE | 20 THREAD + + + | ++ 36 THÁNG + | +
| + 2 + | ++ MAIN + | ++ + + COLORFUL BATTLE-AX Z890M-PLUS V20 DDR5 + + + | ++ 36 THÁNG + | +
| + 3 + | ++ TẢN NHIỆT + | ++ + + ID-COOLING FROZN A620 PRO SE ARGB + + + | ++ 12 THÁNG + | +
| + 4 + | ++ RAM + | ++ + + DDR5 TEAMGROUP T-CREATE EXPERT 32GB 6000MHz (2x16GB) + + + | ++ 36 THÁNG + | +
| + 5 + | ++ SSD + | ++ + + TEAMGROUP G50 1TB PCIE Gen4x4 - RW 5000MB/s + + + | ++ 60 THÁNG + | +
| + 6 + | ++ + VGA + + | ++ + + COLORFUL RTX 3060 NB DUO 12G V4 L-V GDDR6 + + + | ++ 36 THÁNG + | +
| + 7 + | ++ PSU + | ++ + + DEEPCOOL PL750D 750W 80 PLUS BRONZE | ATX 3.1 | PCIE 5.1 + + + | ++ 60 THÁNG + | +
| + 8 + | ++ CASE + | ++ + + XIGMATEK GAMING X II 3F - 3FAN RGB + + + | ++ |
Tin tức mới nhất
+ {/* limit: 5 */} +
+
+
+
+
+
+
+
+
+
+ 22.000.000 đ
++ + Sẵn hàng +
++ + Quà tặng +
++ [Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX + 3060 12GB +
+
+ Giá bán:
+
+ 48.990.000 đ
+
+
+ 52.000.000 đ
+
+
+ -6%
+
+
+ Bảo hành: + Theo từng linh kiện +
++ + Thông số sản phẩm +
++ + Khuyến mại hấp dẫn +
++ + + ⭐ Bảo Hành Tại Nơi Sử Dụng (Áp Dụng Nội Thành + Hà Nội và Hồ Chí Minh) + + +
++ + + ⭐ Bảo Hành Siêu Tốc 1 Đổi 1 Trong 24h + + +
++ + + ⭐ Miễn Phí 100% Vận Chuyển Toàn Quốc + + +
+
+
+ 22.000.000 đ
++ + Liên hệ +
++ [Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX + 3060 12GB +
+
+ Giá bán:
+
+ 48.990.000 đ
+
+
+ 52.000.000 đ
+
+
+ -6%
+
+
+ Bảo hành: + Theo từng linh kiện +
++ + Thông số sản phẩm +
+
+
+ 22.000.000 đ
++ + Liên hệ +
++ + Quà tặng +
++ [Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX + 3060 12GB +
+
+ Giá bán:
+
+ 48.990.000 đ
+
+
+ 52.000.000 đ
+
+
+ -6%
+
+
+ Bảo hành: + Theo từng linh kiện +
++ + Thông số sản phẩm +
++ + Khuyến mại hấp dẫn +
++ + + ⭐ Bảo Hành Tại Nơi Sử Dụng (Áp Dụng Nội Thành + Hà Nội và Hồ Chí Minh) + + +
++ + + ⭐ Bảo Hành Siêu Tốc 1 Đổi 1 Trong 24h + + +
++ + + ⭐ Miễn Phí 100% Vận Chuyển Toàn Quốc + + +
+
+
+ 22.000.000 đ
++ + Sẵn hàng +
++ [Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX + 3060 12GB +
+
+ Giá bán:
+
+ 48.990.000 đ
+
+
+ 52.000.000 đ
+
+
+ -6%
+
+
+ Bảo hành: + Theo từng linh kiện +
+
+
+ 22.000.000 đ
++ + Sẵn hàng +
+ ++ [Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX + 3060 12GB +
++ Giá bán: + + 48.990.000 đ + +
++ Bảo hành: + Theo từng linh kiện +
+
+
+ 22.000.000 đ
++ + Liên hệ +
++ + Quà tặng +
++ [Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX + 3060 12GB +
+
+ Giá bán:
+
+ 48.990.000 đ
+
+
+ 52.000.000 đ
+
+
+ -6%
+
+
+ Bảo hành: + Theo từng linh kiện +
++ + Thông số sản phẩm +
++ + Khuyến mại hấp dẫn +
++ + + ⭐ Bảo Hành Tại Nơi Sử Dụng (Áp Dụng Nội Thành + Hà Nội và Hồ Chí Minh) + + +
++ + + ⭐ Bảo Hành Siêu Tốc 1 Đổi 1 Trong 24h + + +
++ + + ⭐ Miễn Phí 100% Vận Chuyển Toàn Quốc + + +
+
+
+ 22.000.000 đ
++ + Sẵn hàng +
++ + Quà tặng +
++ [Tặng bàn phím] HHPC ULTRA 7 265K | 32GB DDR5 | NVIDIA RTX + 3060 12GB +
+
+ Giá bán:
+
+ 48.990.000 đ
+
+
+ 52.000.000 đ
+
+
+ -6%
+
+
+ Bảo hành: + Theo từng linh kiện +
++ + Thông số sản phẩm +
++ + Khuyến mại hấp dẫn +
++ + + ⭐ Bảo Hành Tại Nơi Sử Dụng (Áp Dụng Nội Thành + Hà Nội và Hồ Chí Minh) + + +
++ + + ⭐ Bảo Hành Siêu Tốc 1 Đổi 1 Trong 24h + + +
++ + + ⭐ Miễn Phí 100% Vận Chuyển Toàn Quốc + + +
+\r\n
⭐ Mua thêm giá treo màn hình giảm giá thêm 5%
\r\n', + type: '', + thumbnail: '', + cash_value: 0, + quantity: 1, + from_time: '', + to_time: '', + url: '', + description: '', + status: 1, + }, + ], + all: [ + { + id: 0, + title: + '
\r\n
⭐ Mua thêm giá treo màn hình giảm giá thêm 5%
\r\n', + type: '', + thumbnail: '', + cash_value: 0, + quantity: 1, + from_time: '', + to_time: '', + url: '', + description: '', + status: 1, + }, + ], + }, + specialOfferGroup: [], + productType: { + isNew: 0, + isHot: 1, + isBestSale: 1, + isSaleOff: 0, + 'online-only': 0, + }, + bulk_price: [], + thum_poster: '0', + thum_poster_type: '', + addon: [], + variants: [], + variant_option: [], + extend: { + buy_count: '2944', + }, + weight: 0, + promotion_price: null, + deal_list: [], + pricing_traces: [], + categories: [ + { + id: '281', + catPath: ':281:0', + name: 'MÀN HÌNH MÁY TÍNH', + url: '/man-hinh-may-tinh', + }, + { + id: '3507', + catPath: ':3507:3501:281:0', + name: 'Màn hình 24 inches', + url: '/man-hinh-24-inches', + }, + { + id: '3515', + catPath: ':3515:281:0', + name: 'CHỌN ĐỘ PHÂN GIẢI', + url: '/chon-do-phan-giai', + }, + { + id: '3519', + catPath: ':3519:3515:281:0', + name: '1920 x 1080 (FHD)', + url: '/1920-x-1080-fhd', + }, + { + id: '3531', + catPath: ':3531:3528:281:0', + name: '100 Hz', + url: '/100-hz', + }, + { + id: '3634', + catPath: ':3634:3500:281:0', + name: 'Màn hình VSP', + url: '/man-hinh-vsp', + }, + { + id: '3500', + catPath: ':3500:281:0', + name: 'CHỌN THEO HÃNG', + url: '/chon-theo-hang-1-2', + }, + { + id: '3528', + catPath: ':3528:281:0', + name: 'CHỌN TẦN SỐ QUÉT', + url: '/tan-so-quet', + }, + { + id: '3501', + catPath: ':3501:281:0', + name: 'CHỌN THEO KÍCH THƯỚC', + url: '/chon-theo-kich-thuoc', + }, + { + id: '3705', + catPath: ':3705:0', + name: 'MÀN HÌNH PHỤ', + url: '/man-hinh-phu', + }, + ], + }, + { + id: 28510, + productId: 28510, + priceUnit: 'chiếc', + marketPrice: 2690000, + price: 2050000, + price_off: 24, + currency: 'vnd', + sale_rules: { + price: 2050000, + normal_price: 2050000, + min_purchase: 1, + max_purchase: 100, + remain_quantity: 100, + from_time: 0, + to_time: 0, + type: '', + }, + lastUpdate: '2025-12-20 09:32:53', + warranty: '24 tháng', + productName: 'Màn hình EDRA EGM27F120S (27 inch, IPS, FHD, 120Hz, 1ms)', + productSummary: + 'Loại màn hình: Màn hình phẳng\r\nTỉ lệ: 16:9\r\nKích thước: 27 inch\r\nTấm nền: IPS\r\nGóc nhìn: 178° / 178°\r\nĐộ phân giải: FHD (1920x1080)', + package_accessory: '', + productImage: { + small: 'https://nguyencongpc.vn/media/product/75-28510-edra-egm27f120s-04.jpg', + large: 'https://nguyencongpc.vn/media/product/250-28510-edra-egm27f120s-04.jpg', + original: '', + }, + imageCollection: [ + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-28510-edra-egm27f120s-04.jpg', + large: 'https://nguyencongpc.vn/media/product/250-28510-edra-egm27f120s-04.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-28510-edra-egm27f120s-01.jpg', + large: 'https://nguyencongpc.vn/media/product/250-28510-edra-egm27f120s-01.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-28510-edra-egm27f120s-02.jpg', + large: 'https://nguyencongpc.vn/media/product/250-28510-edra-egm27f120s-02.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-28510-edra-egm27f120s-03.jpg', + large: 'https://nguyencongpc.vn/media/product/250-28510-edra-egm27f120s-03.jpg', + original: '', + }, + alt: '', + }, + ], + productUrl: '/man-hinh-edra-egm27f120s-27-inch-ips-fhd-120hz-1ms', + brand: { + id: 54, + brand_index: 'e-dra', + name: 'E-DRA', + image: '', + url: '/brand/e-dra', + }, + visit: 35, + rating: 0, + reviewCount: 0, + review: { + rate: 0, + total: 0, + }, + comment: { + rate: 0, + total: 0, + }, + quantity: 100, + productSKU: 'MH0000421', + productModel: '', + hasVAT: 0, + condition: 'Mới', + config_count: 0, + configurable: 0, + component_count: 0, + specialOffer: { + all: [], + }, + specialOfferGroup: [], + productType: { + isNew: 0, + isHot: 0, + isBestSale: 0, + isSaleOff: 0, + 'online-only': 0, + }, + bulk_price: [], + thum_poster: '0', + thum_poster_type: '', + addon: [], + variants: [], + variant_option: [], + extend: { + pixel_code: '', + review_count: '53', + review_score: '4.7', + }, + weight: 0, + promotion_price: null, + deal_list: [], + pricing_traces: [ + { + price: '2990000', + type: 'deal', + type_id: '561', + }, + ], + categories: [ + { + id: '3724', + catPath: ':3724:3500:281:0', + name: 'Màn hình E-Dra', + url: '/man-hinh-e-dra', + }, + { + id: '281', + catPath: ':281:0', + name: 'MÀN HÌNH MÁY TÍNH', + url: '/man-hinh-may-tinh', + }, + { + id: '3500', + catPath: ':3500:281:0', + name: 'CHỌN THEO HÃNG', + url: '/chon-theo-hang-1-2', + }, + { + id: '3501', + catPath: ':3501:281:0', + name: 'CHỌN THEO KÍCH THƯỚC', + url: '/chon-theo-kich-thuoc', + }, + { + id: '3509', + catPath: ':3509:3501:281:0', + name: 'Màn hình 27 inches', + url: '/man-hinh-27-inches', + }, + { + id: '3515', + catPath: ':3515:281:0', + name: 'CHỌN ĐỘ PHÂN GIẢI', + url: '/chon-do-phan-giai', + }, + { + id: '3519', + catPath: ':3519:3515:281:0', + name: '1920 x 1080 (FHD)', + url: '/1920-x-1080-fhd', + }, + ], + }, + { + id: 27415, + productId: 27415, + priceUnit: 'chiếc', + marketPrice: 3400000, + price: 2400000, + price_off: 28.999999999999996, + currency: 'vnd', + sale_rules: { + price: 2400000, + normal_price: 2400000, + min_purchase: 1, + max_purchase: 89, + remain_quantity: 89, + from_time: 0, + to_time: 0, + type: '', + }, + lastUpdate: '2025-03-19 09:12:18', + warranty: '36 Tháng', + productName: 'Màn Hình ASUS VA259HGA (24.5 inch | FHD | IPS | 120Hz | 1m | Loa)', + productSummary: + 'Kích thước: 24.5 inch\r\nĐộ phân giải: FHD 1920 x 1080\r\nCông nghệ tấm nền: IPS\r\nTần số quét: 120Hz\r\nThời gian phản hồi: 1ms\r\nTích hợp loa: 2x 2W\r\nĐộ sáng: 300 nits\r\nTỉ lệ tương phản: 1500:1\r\nTương thích ngàm VESA: 100 x 100 mm', + package_accessory: '', + productImage: { + small: 'https://nguyencongpc.vn/media/product/75-27415-asus-va259hga-10101.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27415-asus-va259hga-10101.jpg', + original: '', + }, + imageCollection: [ + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27415-va259hga.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27415-va259hga.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27415-asus-va259hga-10101.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27415-asus-va259hga-10101.jpg', + original: '', + }, + alt: '', + }, + ], + productUrl: '/man-hinh-asus-va259hga-245-inch-fhd-ips-120hz-1m-loa', + brand: { + id: 4, + brand_index: 'asus', + name: 'ASUS', + image: '', + url: '/brand/asus', + }, + visit: 5130, + rating: 0, + reviewCount: 0, + review: { + rate: 0, + total: 0, + }, + comment: { + rate: 0, + total: 0, + }, + quantity: 89, + productSKU: 'MH0000332', + productModel: '', + hasVAT: 0, + condition: 'Mới', + config_count: 0, + configurable: 0, + component_count: 0, + specialOffer: { + all: [], + }, + specialOfferGroup: [], + productType: { + isNew: 0, + isHot: 0, + isBestSale: 0, + isSaleOff: 0, + 'online-only': 0, + }, + bulk_price: [], + thum_poster: '0', + thum_poster_type: '', + addon: [], + variants: [], + variant_option: [], + extend: { + buy_count: '26', + }, + weight: 0, + promotion_price: null, + deal_list: [], + pricing_traces: [], + categories: [ + { + id: '281', + catPath: ':281:0', + name: 'MÀN HÌNH MÁY TÍNH', + url: '/man-hinh-may-tinh', + }, + { + id: '3500', + catPath: ':3500:281:0', + name: 'CHỌN THEO HÃNG', + url: '/chon-theo-hang-1-2', + }, + { + id: '2455', + catPath: ':2455:3500:281:0', + name: 'Màn hình Asus', + url: '/man-hinh-asus', + }, + { + id: '3501', + catPath: ':3501:281:0', + name: 'CHỌN THEO KÍCH THƯỚC', + url: '/chon-theo-kich-thuoc', + }, + { + id: '3508', + catPath: ':3508:3501:281:0', + name: 'Màn hình 25 inches', + url: '/man-hinh-25-inches', + }, + { + id: '3515', + catPath: ':3515:281:0', + name: 'CHỌN ĐỘ PHÂN GIẢI', + url: '/chon-do-phan-giai', + }, + { + id: '3519', + catPath: ':3519:3515:281:0', + name: '1920 x 1080 (FHD)', + url: '/1920-x-1080-fhd', + }, + { + id: '3705', + catPath: ':3705:0', + name: 'MÀN HÌNH PHỤ', + url: '/man-hinh-phu', + }, + ], + }, + { + id: 27440, + productId: 27440, + priceUnit: 'chiếc', + marketPrice: 3990000, + price: 2990000, + price_off: 25, + currency: 'vnd', + sale_rules: { + price: 2990000, + normal_price: 2990000, + min_purchase: 1, + max_purchase: 66, + remain_quantity: 66, + from_time: 0, + to_time: 0, + type: '', + }, + lastUpdate: '2025-11-22 09:34:50', + warranty: '36 Tháng', + productName: 'Màn hình Gigabyte GS27FA (27 inch | Full HD | IPS | 180Hz | 1ms)', + productSummary: + 'Kích thước: 27 inch\r\nĐộ phân giải: FHD 1920 x 1080\r\nCông nghệ tấm nền: IPS\r\nTần số quét: 180Hz\r\nThời gian phản hồi: 1ms', + package_accessory: '', + productImage: { + small: 'https://nguyencongpc.vn/media/product/75-27440-gigabyte-gs27fa-111.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27440-gigabyte-gs27fa-111.jpg', + original: '', + }, + imageCollection: [ + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27440-gigabyte-gs27fa-111.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27440-gigabyte-gs27fa-111.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27440-man-hinh-gigabyte-gs27fa-2.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27440-man-hinh-gigabyte-gs27fa-2.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27440-man-hinh-gigabyte-gs27fa-3.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27440-man-hinh-gigabyte-gs27fa-3.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27440-man-hinh-gigabyte-gs27fa-4.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27440-man-hinh-gigabyte-gs27fa-4.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27440-man-hinh-gigabyte-gs27fa-5.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27440-man-hinh-gigabyte-gs27fa-5.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27440-man-hinh-gigabyte-gs27fa-6.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27440-man-hinh-gigabyte-gs27fa-6.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27440-gf27fa-ncpc.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27440-gf27fa-ncpc.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27440-gf27fa-ncpc1.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27440-gf27fa-ncpc1.jpg', + original: '', + }, + alt: '5', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27440-gf27fa-ncpc3.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27440-gf27fa-ncpc3.jpg', + original: '', + }, + alt: '4', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27440-gf27fa-ncpc2.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27440-gf27fa-ncpc2.jpg', + original: '', + }, + alt: '', + }, + ], + productUrl: '/man-hinh-gigabyte-gs27fa', + brand: { + id: 2, + brand_index: 'gigabyte', + name: 'Gigabyte', + image: '', + url: '/brand/gigabyte', + }, + visit: 6232, + rating: 5, + reviewCount: 1, + review: { + rate: 5, + total: 1, + }, + comment: { + rate: 0, + total: 0, + }, + quantity: 66, + productSKU: 'MH0000337', + productModel: '', + hasVAT: 0, + condition: 'Mới', + config_count: 0, + configurable: 0, + component_count: 0, + specialOffer: { + all: [], + }, + specialOfferGroup: [], + productType: { + isNew: 0, + isHot: 0, + isBestSale: 0, + isSaleOff: 0, + 'online-only': 0, + }, + bulk_price: [], + thum_poster: '0', + thum_poster_type: '', + addon: [], + variants: [], + variant_option: [], + extend: { + buy_count: '482', + }, + weight: 0, + promotion_price: null, + deal_list: [], + pricing_traces: [], + categories: [ + { + id: '281', + catPath: ':281:0', + name: 'MÀN HÌNH MÁY TÍNH', + url: '/man-hinh-may-tinh', + }, + { + id: '3500', + catPath: ':3500:281:0', + name: 'CHỌN THEO HÃNG', + url: '/chon-theo-hang-1-2', + }, + { + id: '3303', + catPath: ':3303:3500:281:0', + name: 'Màn hình Gigabyte', + url: '/man-hinh-gigabyte', + }, + { + id: '3501', + catPath: ':3501:281:0', + name: 'CHỌN THEO KÍCH THƯỚC', + url: '/chon-theo-kich-thuoc', + }, + { + id: '3509', + catPath: ':3509:3501:281:0', + name: 'Màn hình 27 inches', + url: '/man-hinh-27-inches', + }, + { + id: '3515', + catPath: ':3515:281:0', + name: 'CHỌN ĐỘ PHÂN GIẢI', + url: '/chon-do-phan-giai', + }, + { + id: '3519', + catPath: ':3519:3515:281:0', + name: '1920 x 1080 (FHD)', + url: '/1920-x-1080-fhd', + }, + { + id: '3528', + catPath: ':3528:281:0', + name: 'CHỌN TẦN SỐ QUÉT', + url: '/tan-so-quet', + }, + { + id: '3697', + catPath: ':3697:3528:281:0', + name: '180hz', + url: '/180hz', + }, + { + id: '3705', + catPath: ':3705:0', + name: 'MÀN HÌNH PHỤ', + url: '/man-hinh-phu', + }, + ], + }, + { + id: 18771, + productId: 18771, + priceUnit: 'chiếc', + marketPrice: 10080000, + price: 8150000, + price_off: 19, + currency: 'vnd', + sale_rules: { + price: 8150000, + normal_price: 8150000, + min_purchase: 1, + max_purchase: 65, + remain_quantity: 65, + from_time: 0, + to_time: 0, + type: '', + }, + lastUpdate: '2025-11-29 08:56:10', + warranty: '36 tháng', + productName: 'Màn hình ASUS ProArt PA278CV (27 inch/ QHD 2K/ IPS/ 75Hz)', + productSummary: '', + package_accessory: '', + productImage: { + small: 'https://nguyencongpc.vn/media/product/75-18771-asus-proart-pa278cv-1010101.jpg', + large: 'https://nguyencongpc.vn/media/product/250-18771-asus-proart-pa278cv-1010101.jpg', + original: '', + }, + imageCollection: [ + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-18771-asus-proart-pa278cv-1010101.jpg', + large: 'https://nguyencongpc.vn/media/product/250-18771-asus-proart-pa278cv-1010101.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-18771-pa278cv-03c.jpg', + large: 'https://nguyencongpc.vn/media/product/250-18771-pa278cv-03c.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-18771-pa278cv-02c.jpg', + large: 'https://nguyencongpc.vn/media/product/250-18771-pa278cv-02c.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-18771-pa278cv-01-c.jpg', + large: 'https://nguyencongpc.vn/media/product/250-18771-pa278cv-01-c.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-18771-pa278cv-04c.jpg', + large: 'https://nguyencongpc.vn/media/product/250-18771-pa278cv-04c.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-18771-pa278cv-05c.jpg', + large: 'https://nguyencongpc.vn/media/product/250-18771-pa278cv-05c.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-18771-pa278cv-06c.jpg', + large: 'https://nguyencongpc.vn/media/product/250-18771-pa278cv-06c.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-18771-pa278cv-07.jpg', + large: 'https://nguyencongpc.vn/media/product/250-18771-pa278cv-07.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-18771-pa278cv-08.jpg', + large: 'https://nguyencongpc.vn/media/product/250-18771-pa278cv-08.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-18771-pa278cv-09.jpg', + large: 'https://nguyencongpc.vn/media/product/250-18771-pa278cv-09.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-18771-pa278cv-10.jpg', + large: 'https://nguyencongpc.vn/media/product/250-18771-pa278cv-10.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-18771-pa278cv-11.jpg', + large: 'https://nguyencongpc.vn/media/product/250-18771-pa278cv-11.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-18771-pa278cv-12.jpg', + large: 'https://nguyencongpc.vn/media/product/250-18771-pa278cv-12.jpg', + original: '', + }, + alt: '', + }, + ], + productUrl: '/man-hinh-asus-proart-pa278cv-27-inch-qhd-2k-ips-75hz', + brand: { + id: 4, + brand_index: 'asus', + name: 'ASUS', + image: '', + url: '/brand/asus', + }, + visit: 11469, + rating: 9, + reviewCount: 5, + review: { + rate: 9, + total: 5, + }, + comment: { + rate: 0, + total: 0, + }, + quantity: 65, + productSKU: 'SP3081023', + productModel: '0', + hasVAT: 0, + condition: 'Mới ', + config_count: 0, + configurable: 0, + component_count: 0, + specialOffer: { + other: [ + { + id: 0, + title: + '
Tặng ngay bộ sản phẩm Adobe Creative Cloud trị giá 5.500.000VND Đăng ký nhận quà tại đây
', + type: '', + thumbnail: '', + cash_value: 0, + quantity: 1, + from_time: '', + to_time: '', + url: '', + description: '', + status: 1, + }, + ], + all: [ + { + id: 0, + title: + 'Tặng ngay bộ sản phẩm Adobe Creative Cloud trị giá 5.500.000VND Đăng ký nhận quà tại đây
', + type: '', + thumbnail: '', + cash_value: 0, + quantity: 1, + from_time: '', + to_time: '', + url: '', + description: '', + status: 1, + }, + ], + }, + specialOfferGroup: [], + productType: { + isNew: 0, + isHot: 0, + isBestSale: 1, + isSaleOff: 0, + 'online-only': 0, + }, + bulk_price: [], + thum_poster: '0', + thum_poster_type: '', + addon: [], + variants: [], + variant_option: [], + extend: { + buy_count: '689', + }, + weight: 0, + promotion_price: null, + deal_list: [], + pricing_traces: [], + categories: [ + { + id: '2455', + catPath: ':2455:3500:281:0', + name: 'Màn hình Asus', + url: '/man-hinh-asus', + }, + { + id: '281', + catPath: ':281:0', + name: 'MÀN HÌNH MÁY TÍNH', + url: '/man-hinh-may-tinh', + }, + { + id: '3624', + catPath: ':3624:281:0', + name: 'MÀN HÌNH ĐỒ HỌA', + url: '/man-hinh-do-hoa', + }, + { + id: '3705', + catPath: ':3705:0', + name: 'MÀN HÌNH PHỤ', + url: '/man-hinh-phu', + }, + ], + }, + { + id: 16528, + productId: 16528, + priceUnit: 'chiếc', + marketPrice: 5880000, + price: 4790000, + price_off: 19, + currency: 'vnd', + sale_rules: { + price: 4790000, + normal_price: 4790000, + min_purchase: 1, + max_purchase: 60, + remain_quantity: 60, + from_time: 0, + to_time: 0, + type: '', + }, + lastUpdate: '2025-08-13 13:59:51', + warranty: '36 Tháng', + productName: 'Màn hình Asus ProArt PA248QV 24.1 inch IPS FHD - Chuyên Đồ Họa', + productSummary: '', + package_accessory: '', + productImage: { + small: + 'https://nguyencongpc.vn/media/product/75-16528-asus-proart-pa248qv-24-1-inch-ips-fhd-11.jpg', + large: + 'https://nguyencongpc.vn/media/product/250-16528-asus-proart-pa248qv-24-1-inch-ips-fhd-11.jpg', + original: '', + }, + imageCollection: [ + { + image: { + small: + 'https://nguyencongpc.vn/media/product/75-16528-asus-proart-pa248qv-24-1-inch-ips-fhd-11.jpg', + large: + 'https://nguyencongpc.vn/media/product/250-16528-asus-proart-pa248qv-24-1-inch-ips-fhd-11.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-16528-pa248qv-06.jpg', + large: 'https://nguyencongpc.vn/media/product/250-16528-pa248qv-06.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-16528-pa248qv-07.jpg', + large: 'https://nguyencongpc.vn/media/product/250-16528-pa248qv-07.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-16528-pa248qv-01.jpg', + large: 'https://nguyencongpc.vn/media/product/250-16528-pa248qv-01.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-16528-pa248qv-02.jpg', + large: 'https://nguyencongpc.vn/media/product/250-16528-pa248qv-02.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-16528-pa248qv-03.jpg', + large: 'https://nguyencongpc.vn/media/product/250-16528-pa248qv-03.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-16528-proart-pa248qv-011a9788.JPG', + large: 'https://nguyencongpc.vn/media/product/250-16528-proart-pa248qv-011a9788.JPG', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-16528-pa248qv-04.jpg', + large: 'https://nguyencongpc.vn/media/product/250-16528-pa248qv-04.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-16528-pa248qv-05.jpg', + large: 'https://nguyencongpc.vn/media/product/250-16528-pa248qv-05.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-16528-proart-pa248qv-011a9787.JPG', + large: 'https://nguyencongpc.vn/media/product/250-16528-proart-pa248qv-011a9787.JPG', + original: '', + }, + alt: '', + }, + { + image: { + small: + 'https://nguyencongpc.vn/media/product/75-16528-asus-proart-pa248qv-24-1-inch-ips-fhd-001.jpg', + large: + 'https://nguyencongpc.vn/media/product/250-16528-asus-proart-pa248qv-24-1-inch-ips-fhd-001.jpg', + original: '', + }, + alt: '', + }, + ], + productUrl: '/man-hinh-asus-proart-pa248qv-24fhd1610ips100-srgb100-rec709', + brand: { + id: 4, + brand_index: 'asus', + name: 'ASUS', + image: '', + url: '/brand/asus', + }, + visit: 47636, + rating: 7, + reviewCount: 5, + review: { + rate: 7, + total: 5, + }, + comment: { + rate: 0, + total: 0, + }, + quantity: 60, + productSKU: 'SP002020', + productModel: '0', + hasVAT: 0, + condition: 'Mới ', + config_count: 0, + configurable: 0, + component_count: 0, + specialOffer: { + other: [ + { + id: 0, + title: + '⭐ Mua thêm giá treo màn hình giảm giá thêm 5%
\r\n=> Xem thêm tại: Tại đây
\r\n⭐ Tặng ngay bộ sản phẩm Adobe Creative Cloud trị giá 5.500.000VND Đăng ký nhận quà tại đây
', + type: '', + thumbnail: '', + cash_value: 0, + quantity: 1, + from_time: '', + to_time: '', + url: '', + description: '', + status: 1, + }, + ], + all: [ + { + id: 0, + title: + '⭐ Mua thêm giá treo màn hình giảm giá thêm 5%
\r\n=> Xem thêm tại: Tại đây
\r\n⭐ Tặng ngay bộ sản phẩm Adobe Creative Cloud trị giá 5.500.000VND Đăng ký nhận quà tại đây
', + type: '', + thumbnail: '', + cash_value: 0, + quantity: 1, + from_time: '', + to_time: '', + url: '', + description: '', + status: 1, + }, + ], + }, + specialOfferGroup: [], + productType: { + isNew: 0, + isHot: 1, + isBestSale: 1, + isSaleOff: 0, + 'online-only': 0, + }, + bulk_price: [], + thum_poster: '0', + thum_poster_type: '', + addon: [], + variants: [], + variant_option: [], + extend: { + buy_count: '689', + }, + weight: 0, + promotion_price: null, + deal_list: [], + pricing_traces: [], + categories: [ + { + id: '2455', + catPath: ':2455:3500:281:0', + name: 'Màn hình Asus', + url: '/man-hinh-asus', + }, + { + id: '281', + catPath: ':281:0', + name: 'MÀN HÌNH MÁY TÍNH', + url: '/man-hinh-may-tinh', + }, + { + id: '3507', + catPath: ':3507:3501:281:0', + name: 'Màn hình 24 inches', + url: '/man-hinh-24-inches', + }, + { + id: '3501', + catPath: ':3501:281:0', + name: 'CHỌN THEO KÍCH THƯỚC', + url: '/chon-theo-kich-thuoc', + }, + { + id: '3500', + catPath: ':3500:281:0', + name: 'CHỌN THEO HÃNG', + url: '/chon-theo-hang-1-2', + }, + { + id: '3515', + catPath: ':3515:281:0', + name: 'CHỌN ĐỘ PHÂN GIẢI', + url: '/chon-do-phan-giai', + }, + { + id: '3519', + catPath: ':3519:3515:281:0', + name: '1920 x 1080 (FHD)', + url: '/1920-x-1080-fhd', + }, + { + id: '3528', + catPath: ':3528:281:0', + name: 'CHỌN TẦN SỐ QUÉT', + url: '/tan-so-quet', + }, + { + id: '3624', + catPath: ':3624:281:0', + name: 'MÀN HÌNH ĐỒ HỌA', + url: '/man-hinh-do-hoa', + }, + { + id: '3705', + catPath: ':3705:0', + name: 'MÀN HÌNH PHỤ', + url: '/man-hinh-phu', + }, + ], + }, + { + id: 28246, + productId: 28246, + priceUnit: 'chiếc', + marketPrice: 5550000, + price: 4250000, + price_off: 23, + currency: 'vnd', + sale_rules: { + price: 4250000, + normal_price: 4250000, + min_purchase: 1, + max_purchase: 54, + remain_quantity: 54, + from_time: 0, + to_time: 0, + type: '', + }, + lastUpdate: '2025-11-21 09:35:54', + warranty: '36 tháng tại Nguyễn Công PC', + productName: 'Màn hình Dell P2425H NK (23.8 inch, FHD, IPS, 100Hz, 5ms)', + productSummary: + 'Kiểu dáng màn hình: Phẳng\r\nTỉ lệ khung hình: 16:9\r\nKích thước mặc định: 23.8 inch\r\nCông nghệ tấm nền: IPS\r\nPhân giải điểm ảnh: FHD - 1920 x 1080\r\nĐộ sáng hiển thị: 250 cd/m2 (typical)\r\nTần số quét màn: 100 Hz (Hertz)\r\n', + package_accessory: '0', + productImage: { + small: 'https://nguyencongpc.vn/media/product/75-28246-', + large: 'https://nguyencongpc.vn/media/product/250-28246-', + original: '', + }, + imageCollection: [ + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-28246-', + large: 'https://nguyencongpc.vn/media/product/250-28246-', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-26969-vinh--28-.png', + large: 'https://nguyencongpc.vn/media/product/250-26969-vinh--28-.png', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-26969-vinh--29-.png', + large: 'https://nguyencongpc.vn/media/product/250-26969-vinh--29-.png', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-26969-vinh--30-.png', + large: 'https://nguyencongpc.vn/media/product/250-26969-vinh--30-.png', + original: '', + }, + alt: '', + }, + ], + productUrl: '/man-hinh-dell-p2425h-nk', + brand: { + id: 20, + brand_index: 'dell', + name: 'DELL', + image: '', + url: '/brand/dell', + }, + visit: 482, + rating: 0, + reviewCount: 0, + review: { + rate: 0, + total: 0, + }, + comment: { + rate: 0, + total: 0, + }, + quantity: 54, + productSKU: 'MH0000403', + productModel: '', + hasVAT: 0, + condition: 'Mới', + config_count: 0, + configurable: 0, + component_count: 0, + specialOffer: { + all: [], + }, + specialOfferGroup: [], + productType: { + isNew: 1, + isHot: 0, + isBestSale: 1, + isSaleOff: 0, + 'online-only': 0, + }, + bulk_price: [], + thum_poster: '0', + thum_poster_type: '', + addon: [], + variants: [], + variant_option: [], + extend: { + buy_count: '14', + }, + weight: 0, + promotion_price: null, + deal_list: [], + pricing_traces: [], + categories: [ + { + id: '3501', + catPath: ':3501:281:0', + name: 'CHỌN THEO KÍCH THƯỚC', + url: '/chon-theo-kich-thuoc', + }, + { + id: '3500', + catPath: ':3500:281:0', + name: 'CHỌN THEO HÃNG', + url: '/chon-theo-hang-1-2', + }, + { + id: '281', + catPath: ':281:0', + name: 'MÀN HÌNH MÁY TÍNH', + url: '/man-hinh-may-tinh', + }, + { + id: '3515', + catPath: ':3515:281:0', + name: 'CHỌN ĐỘ PHÂN GIẢI', + url: '/chon-do-phan-giai', + }, + { + id: '3528', + catPath: ':3528:281:0', + name: 'CHỌN TẦN SỐ QUÉT', + url: '/tan-so-quet', + }, + { + id: '522', + catPath: ':522:3500:281:0', + name: 'Màn hình Dell', + url: '/man-hinh-dell', + }, + { + id: '3507', + catPath: ':3507:3501:281:0', + name: 'Màn hình 24 inches', + url: '/man-hinh-24-inches', + }, + { + id: '3519', + catPath: ':3519:3515:281:0', + name: '1920 x 1080 (FHD)', + url: '/1920-x-1080-fhd', + }, + { + id: '3531', + catPath: ':3531:3528:281:0', + name: '100 Hz', + url: '/100-hz', + }, + { + id: '3624', + catPath: ':3624:281:0', + name: 'MÀN HÌNH ĐỒ HỌA', + url: '/man-hinh-do-hoa', + }, + ], + }, + { + id: 27774, + productId: 27774, + priceUnit: 'chiếc', + marketPrice: 2390000, + price: 1850000, + price_off: 23, + currency: 'vnd', + sale_rules: { + price: 1850000, + normal_price: 1850000, + min_purchase: 1, + max_purchase: 50, + remain_quantity: 50, + from_time: 0, + to_time: 0, + type: '', + }, + lastUpdate: '2025-11-26 09:37:38', + warranty: '24 tháng', + productName: 'Màn Hình EDRA EGM24F100s 24 inch, FHD, IPS, 100Hz', + productSummary: + 'Kiểu dáng màn hình: Phẳng\r\nTỉ lệ khung hình: 16:9\r\nKích thước mặc định: 23.8 inch\r\nCông nghệ tấm nền: IPS\r\nPhân giải điểm ảnh: FHD - 1920 x 1080\r\nChỉ số màu sắc: 16.7 triệu màu\r\nĐộ sáng hiển thị: 250 Nits cd/m2\r\nTần số quét màn: Real 100Hz (Hertz)\r\nThời gian đáp ứng: 1ms (MPRT)', + package_accessory: '0', + productImage: { + small: 'https://nguyencongpc.vn/media/product/75-27774-', + large: 'https://nguyencongpc.vn/media/product/250-27774-', + original: '', + }, + imageCollection: [ + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27774-', + large: 'https://nguyencongpc.vn/media/product/250-27774-', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27774-edra-egm24f100h-2.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27774-edra-egm24f100h-2.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27774-edra-egm24f100h-3.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27774-edra-egm24f100h-3.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27774-edra-egm24f100h-4.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27774-edra-egm24f100h-4.jpg', + original: '', + }, + alt: '', + }, + ], + productUrl: '/man-hinh-edra-egm24f100s', + brand: { + id: 54, + brand_index: 'e-dra', + name: 'E-DRA', + image: '', + url: '/brand/e-dra', + }, + visit: 4501, + rating: 0, + reviewCount: 0, + review: { + rate: 0, + total: 0, + }, + comment: { + rate: 0, + total: 0, + }, + quantity: 50, + productSKU: 'MH0000364', + productModel: '', + hasVAT: 0, + condition: 'Mới', + config_count: 0, + configurable: 0, + component_count: 0, + specialOffer: { + all: [], + }, + specialOfferGroup: [], + productType: { + isNew: 1, + isHot: 0, + isBestSale: 0, + isSaleOff: 0, + 'online-only': 0, + }, + bulk_price: [], + thum_poster: '0', + thum_poster_type: '', + addon: [], + variants: [], + variant_option: [], + extend: { + buy_count: '433', + }, + weight: 0, + promotion_price: null, + deal_list: [], + pricing_traces: [], + categories: [ + { + id: '3724', + catPath: ':3724:3500:281:0', + name: 'Màn hình E-Dra', + url: '/man-hinh-e-dra', + }, + { + id: '3500', + catPath: ':3500:281:0', + name: 'CHỌN THEO HÃNG', + url: '/chon-theo-hang-1-2', + }, + { + id: '3507', + catPath: ':3507:3501:281:0', + name: 'Màn hình 24 inches', + url: '/man-hinh-24-inches', + }, + { + id: '3501', + catPath: ':3501:281:0', + name: 'CHỌN THEO KÍCH THƯỚC', + url: '/chon-theo-kich-thuoc', + }, + { + id: '3519', + catPath: ':3519:3515:281:0', + name: '1920 x 1080 (FHD)', + url: '/1920-x-1080-fhd', + }, + { + id: '3515', + catPath: ':3515:281:0', + name: 'CHỌN ĐỘ PHÂN GIẢI', + url: '/chon-do-phan-giai', + }, + { + id: '3531', + catPath: ':3531:3528:281:0', + name: '100 Hz', + url: '/100-hz', + }, + { + id: '3528', + catPath: ':3528:281:0', + name: 'CHỌN TẦN SỐ QUÉT', + url: '/tan-so-quet', + }, + { + id: '281', + catPath: ':281:0', + name: 'MÀN HÌNH MÁY TÍNH', + url: '/man-hinh-may-tinh', + }, + { + id: '3705', + catPath: ':3705:0', + name: 'MÀN HÌNH PHỤ', + url: '/man-hinh-phu', + }, + ], + }, + { + id: 27506, + productId: 27506, + priceUnit: 'chiếc', + marketPrice: 4990000, + price: 2980000, + price_off: 40, + currency: 'vnd', + sale_rules: { + price: 2980000, + normal_price: 2980000, + min_purchase: 1, + max_purchase: 47, + remain_quantity: 47, + from_time: 0, + to_time: 0, + type: '', + }, + lastUpdate: '2025-11-26 09:37:04', + warranty: '36 Tháng', + productName: 'Màn hình Gigabyte G25F2 (24.5 inch | FHD | IPS | 200Hz | 1ms)', + productSummary: + 'Màn hình: 24.5 inch\r\nĐộ phân giải: FHD 1920 x 1080\r\nCông nghệ tấm nền: IPS\r\nTần số quét: 200Hz\r\nThời gian phản hồi: 1ms', + package_accessory: '', + productImage: { + small: 'https://nguyencongpc.vn/media/product/75-27506-man-hinh-gigabyte-g25f2-0101.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27506-man-hinh-gigabyte-g25f2-0101.jpg', + original: '', + }, + imageCollection: [ + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27506-man-hinh-gigabyte-g25f2-1.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27506-man-hinh-gigabyte-g25f2-1.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: + 'https://nguyencongpc.vn/media/product/75-27506-z6424384613249_4a6196e32517593cef80e8179277f24a.jpg', + large: + 'https://nguyencongpc.vn/media/product/250-27506-z6424384613249_4a6196e32517593cef80e8179277f24a.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: + 'https://nguyencongpc.vn/media/product/75-27506-z6424384619148_9b8b4dcfc3e31bfc0173cbfeaebbf9c8.jpg', + large: + 'https://nguyencongpc.vn/media/product/250-27506-z6424384619148_9b8b4dcfc3e31bfc0173cbfeaebbf9c8.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: + 'https://nguyencongpc.vn/media/product/75-27506-z6424384625286_f2dc55c44c74851450376362d0aa4c10.jpg', + large: + 'https://nguyencongpc.vn/media/product/250-27506-z6424384625286_f2dc55c44c74851450376362d0aa4c10.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27506-man-hinh-gigabyte-g25f2-2.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27506-man-hinh-gigabyte-g25f2-2.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27506-man-hinh-gigabyte-g25f2-3.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27506-man-hinh-gigabyte-g25f2-3.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27506-man-hinh-gigabyte-g25f2-8.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27506-man-hinh-gigabyte-g25f2-8.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27506-man-hinh-gigabyte-g25f2-10.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27506-man-hinh-gigabyte-g25f2-10.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27506-gigabyteg25f2.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27506-gigabyteg25f2.jpg', + original: '', + }, + alt: '', + }, + { + image: { + small: 'https://nguyencongpc.vn/media/product/75-27506-man-hinh-gigabyte-g25f2-0101.jpg', + large: 'https://nguyencongpc.vn/media/product/250-27506-man-hinh-gigabyte-g25f2-0101.jpg', + original: '', + }, + alt: '', + }, + ], + productUrl: '/man-hinh-gigabyte-g25f2', + brand: { + id: 2, + brand_index: 'gigabyte', + name: 'Gigabyte', + image: '', + url: '/brand/gigabyte', + }, + visit: 7195, + rating: 0, + reviewCount: 0, + review: { + rate: 0, + total: 0, + }, + comment: { + rate: 0, + total: 0, + }, + quantity: 47, + productSKU: 'MH0000336', + productModel: '', + hasVAT: 0, + condition: 'Mới', + config_count: 0, + configurable: 0, + component_count: 0, + specialOffer: { + all: [], + }, + specialOfferGroup: [], + productType: { + isNew: 0, + isHot: 0, + isBestSale: 0, + isSaleOff: 0, + 'online-only': 0, + }, + bulk_price: [], + thum_poster: '0', + thum_poster_type: '', + addon: [], + variants: [], + variant_option: [], + extend: { + buy_count: '221', + }, + weight: 0, + promotion_price: null, + deal_list: [], + pricing_traces: [], + categories: [ + { + id: '281', + catPath: ':281:0', + name: 'MÀN HÌNH MÁY TÍNH', + url: '/man-hinh-may-tinh', + }, + { + id: '3500', + catPath: ':3500:281:0', + name: 'CHỌN THEO HÃNG', + url: '/chon-theo-hang-1-2', + }, + { + id: '3303', + catPath: ':3303:3500:281:0', + name: 'Màn hình Gigabyte', + url: '/man-hinh-gigabyte', + }, + { + id: '3501', + catPath: ':3501:281:0', + name: 'CHỌN THEO KÍCH THƯỚC', + url: '/chon-theo-kich-thuoc', + }, + { + id: '3508', + catPath: ':3508:3501:281:0', + name: 'Màn hình 25 inches', + url: '/man-hinh-25-inches', + }, + { + id: '3515', + catPath: ':3515:281:0', + name: 'CHỌN ĐỘ PHÂN GIẢI', + url: '/chon-do-phan-giai', + }, + { + id: '3519', + catPath: ':3519:3515:281:0', + name: '1920 x 1080 (FHD)', + url: '/1920-x-1080-fhd', + }, + { + id: '3528', + catPath: ':3528:281:0', + name: 'CHỌN TẦN SỐ QUÉT', + url: '/tan-so-quet', + }, + { + id: '3537', + catPath: ':3537:3528:281:0', + name: '200 Hz', + url: '/200-hz', + }, + { + id: '3705', + catPath: ':3705:0', + name: 'MÀN HÌNH PHỤ', + url: '/man-hinh-phu', + }, + ], + }, +]; diff --git a/src/lib/helpers.ts b/src/lib/helpers.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/lib/resolveSlug.ts b/src/lib/resolveSlug.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/lib/slugMap.ts b/src/lib/slugMap.ts new file mode 100644 index 0000000..edf78af --- /dev/null +++ b/src/lib/slugMap.ts @@ -0,0 +1,77 @@ +// src/lib/slugMap.ts +import { categories } from "@/data/categories"; + +export type PageType = + | "article_home" + | "article_category" + | "article_detail" + | "product_category" + | "product_detail"; + +export type SlugResult = + | { type: "article_home" } + | { type: "article_category"; slug: string } + | { type: "article_detail"; slug: string } + | { type: "product_category"; slug: string } + | { type: "product_detail"; slug: string }; + +export function findBySlug(rawSlug: string): SlugResult { + const slug = normalizeSlug(rawSlug); + const url = "/" + slug; + + /* 1. ARTICLE HOME */ + if (url === "/tin-tuc") { + return { type: "article_home" }; + } + + /* 2. ARTICLE CATEGORY */ + const articleCats = categories.article.all_category.article; + for (const parent of articleCats) { + if (parent.url === url) { + return { type: "article_category", slug }; + } + + for (const child of parent.children ?? []) { + if (child.url === url) { + return { type: "article_category", slug }; + } + } + } + + /* 3. PRODUCT CATEGORY */ + const productCats = categories.product.all_category; + for (const cat of productCats) { + if (cat.url === url) { + return { type: "product_category", slug }; + } + + for (const child of cat.children ?? []) { + if (child.url === url) { + return { type: "product_category", slug }; + } + } + } + + /* 4. PRODUCT DETAIL */ + if (isProductDetailSlug(slug)) { + return { type: "product_detail", slug }; + } + + /* 5. ARTICLE DETAIL (fallback) */ + return { type: "article_detail", slug }; +} + +/* =============================== + * HELPERS + * =============================== */ +function normalizeSlug(slug: string) { + return slug.replace(/^\/+/, "").trim(); +} + +function isProductDetailSlug(slug: string) { + return ( + slug.startsWith("hhpc-") || + slug.startsWith("pc-") || + slug.startsWith("man-hinh-") + ); +} diff --git a/src/styles/globals.css b/src/styles/globals.css new file mode 100644 index 0000000..6737daf --- /dev/null +++ b/src/styles/globals.css @@ -0,0 +1,10 @@ +@import url('https://cdn.boxicons.com/fonts/basic/boxicons.min.css'); +@import url('https://fonts.cdnfonts.com/css/sf-pro-display'); +@import "tailwindcss"; +@import 'swiper/css'; +@import 'swiper/css/navigation'; +@import 'swiper/css/pagination'; + +@import "../../public/styles/library.css"; +@import "../../public/styles/tailwind.css"; +@import './pc_style.css'; \ No newline at end of file diff --git a/src/styles/pc_style.css b/src/styles/pc_style.css new file mode 100644 index 0000000..f3d022c --- /dev/null +++ b/src/styles/pc_style.css @@ -0,0 +1,531 @@ +body{min-width:1248px;background:#E8ECF6} +.color-main,.global-breadcrumb a:hover{color:#0676DA} +.red{color:#FA354A} +.blue,.article-video-holder .video-item .bx,.video-item:hover,.filter-list a:hover{color:#0676DA} +.bg-main{background-color:#0676DA} +.bg-blue{background-color:#0676DA} +.bg-linear{background:linear-gradient(173.39deg,#81D2FF 7.77%,#4593FF 94.81%)} +.bg-btn{background:linear-gradient(165.29deg,#259AFF 8.53%,#114CDD 93.19%)} +.text-linear,.cart-item .item-name a:hover,.home-categories-container .item:hover,.art-item .art-title:hover,.p-item .p-name:hover,.deal-item .deal-name:hover{background:linear-gradient(165.29deg,#259AFF 8.53%,#114CDD 93.19%);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent} +.border-linear{-o-border-image:linear-gradient(165.29deg,#259AFF 8.53%,#114CDD 93.19%);border-image:linear-gradient(165.29deg,#259AFF 8.53%,#114CDD 93.19%);border-image-slice:1} +.line-clamp-2,.p-item .p-name,.deal-item .deal-offer{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden} +.line-clamp-3{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden} +.line-clamp-4{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden} +.line-clamp-5{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:5;overflow:hidden} +.scroll-bar::-webkit-scrollbar{height:10px} +.scroll-bar::-webkit-scrollbar-track{background:#f5f5f5} +.scroll-bar::-webkit-scrollbar-thumb{background:#606060;border-radius:10px} +.scroll-bar::-webkit-scrollbar-thumb:hover{background:#aaa} +.no-scroll::-webkit-scrollbar,.about-tab-container::-webkit-scrollbar{height:0} +.fit-img{position:absolute;inset:0;max-width:100%;max-height:100%;margin:auto} +.icons,.fancybox-content-container .hotline-list p::before,.global-breadcrumb li:first-child::before{background:url(/images/sprite.png) no-repeat;background-size:200px 250px;width:20px;height:20px} +.swiper{position:relative} +.global-breadcrumb{color:#4B4954;font-size:16px;line-height:30px;font-weight:500;margin:0 0 24px} +.global-breadcrumb ol,.global-breadcrumb ul{display:flex;flex-wrap:wrap} +.global-breadcrumb li{display:flex;align-items:center;margin:0 2px} +.global-breadcrumb li:first-child{border-radius:30px;border:1px solid #D2DFF9;background:#F2F6FF;padding:0 12px 0 34px;color:#0678DB;position:relative} +.global-breadcrumb li:first-child::before{content:"";background-position:-77px -155px;height:30px;position:absolute;left:11px;margin:0} +.global-breadcrumb li:last-child::after{content:none} +.global-breadcrumb li::before{content:"\f2a1";font-family:boxicons!important;font-size:20px;color:#A9A9A9;margin-right:4px} +.container{max-width:1248px;margin:auto} +.icon-buildpc{background-position:0 -45px} +.icon-tool{background-position:-27px -45px} +.icon-promotion{background-position:-60px -46px} +.icon-news{background-position:-95px -45px} +.icon-warranty{background-position:-130px -45px} +.icon-feedback{background-position:-165px -45px} +.icon-search{background-position:-25px .5px} +.icon-menu{background-position:-3px -8px} +.icon-headphone{background-position:-64px -5px} +.icon-showroom{background-position:-101px -5px} +.icon-user{background-position:-135px -8px} +.icon-cart{background:url(/images/icon-cart.png) no-repeat;background-size:contain;width:24px;height:24px} +.icon-plane{width:24px;height:24px;background-position:-148px -118px} +.icon-location{background-position:-62px -82px} +.icon-phone{background-position:-4px -82px} +.icon-time{background-position:-32px -81px} +.icon-puzzle{background-position:-144px -153.5px} +.icon-discount{background-position:-139.5px -191.5px} +.icon-shield{background-position:-108px -192px} +.icon-linkedin{background-position:-5px -119px} +.icon-facebook{background-position:-41px -119px} +.icon-zalo{background-position:-78px -119px} +.icon-gmail{background-position:-114px -119px} +.icon-wallet{background-position:-6px -222px} +.icon-truck{background-position:-77px -223px} +.icon-truck-2{background-position:-110px -157px} +.icon-world{background-position:-41px -222px} +.icon-medal{background-position:-114px -223px} +.icon-screen{background-position:-4px -157px} +.icon-gift{background-position:-40px -159px} +.icon-card{background-position:-5px -193px} +.icon-flame{background-position:-40px -194px} +.icon-goTop{position:fixed;bottom:100px;right:10px;width:48px;height:48px;line-height:46px;border-radius:50%;border:1px solid #E0E0E0;color:#fff;background:#3947b9;font-size:28px;z-index:8;} +.icon-finger{background-position:-155px -222px} +.inherit,.art-item .art-title *,.p-item .p-name *,.deal-item .deal-name *{font-weight:inherit!important;font-size:inherit!important;line-height:inherit!important;margin:0} +.custom-dots .swiper-pagination-bullet{width:20px;height:6px;border:2px solid rgba(255,255,255,0.7);border-radius:8px 0 8px 0;background:transparent;opacity:1;margin:0 3px!important;transition:.15s all} +.custom-dots .swiper-pagination-bullet:hover,.custom-dots .swiper-pagination-bullet.swiper-pagination-bullet-active{background:#fff;border-color:#fff} +.deal-item{position:relative;overflow:hidden;background:#fff;font-size:14px;line-height:18px} +.deal-item .deal-img{display:block;position:relative;padding-bottom:100%;margin:0 0 12px;overflow:hidden} +.deal-item img{display:block;width:auto;height:auto} +.deal-item .deal-name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;margin:0 0 6px;min-height:36px;font-weight:500;text-transform: uppercase} +.deal-item .deal-price-holder{margin:6px 0 15px;display:flex;align-items:center;justify-content:space-between;color:#A0A5AC} +.deal-item .deal-price{line-height:28px;font-weight:600;font-size:22px;margin:0 0 2px;color:#333} +.deal-item del{display:inline-block;margin:0 6px 0 0} +.deal-item .deal-discount{color:#fff;text-align:center;background:#FA354A;border-radius:30px;font-weight:500;font-size:13px;padding:0 6px;display:inline-block;vertical-align:bottom} +.deal-item .deal-btn{background:linear-gradient(165.29deg,#259AFF 8.53%,#114CDD 93.19%);color:#fff;width:38px;height:38px;border-radius:50%;font-size:20px} +.deal-item .deal-offer{font-weight:500} +.deal-item .deal-offer * {font-family: inherit !important;line-height: inherit !important;margin: 0 !important;font-size: inherit !important;display: inline} +.deal-item .deal-count{margin:15px 0 11px 8px;background:#EBEBEB;border-radius:30px;line-height:22px;font-size:13px;font-weight:500;text-align:center;min-height:22px;position:relative} +.deal-item .deal-count::before{content:"";width:22px;height:26px;position:absolute;left:-6px;top:-3px;z-index:1;background:url(/images/deal-icon-bolt.png) no-repeat;background-size:contain} +.deal-item .deal-count span{position:relative;z-index:1} +.deal-item .deal-line{position:absolute;inset:0;background:#FFE078;border-radius:inherit;max-width:100%} +.p-item{background:#fff;overflow:hidden;position:relative;font-size: 14px} +.p-item img{position:absolute;inset:0;width:auto;height:auto;margin:auto} +.p-item .p-img{position:relative;padding-bottom:100%;margin:0 0 12px;overflow:hidden;display:block} +.p-item .p-price-group{min-height:48px;margin:0 0 4px;display:flex;flex-wrap:wrap;align-items:flex-end;gap:2px;line-height:18px} +.p-item del{margin:0 4px 0 0;color:#A0A5AC} +.p-item .p-discount{color:#fff;line-height:18px;border-radius:30px;background:#FA354A;font-weight:500;font-size:11px;text-align:center;padding:0 6px} +.p-item .p-price{width:100%;margin:0;color:#FF4E2A;font-size:22px;font-weight:700;line-height:28px} +.p-item .p-name{min-height:36px;line-height:18px;font-weight:500;margin:4px 0 8px;text-transform:uppercase} +.p-item .p-btn-group{min-height:46px} +.tooltip-content .icons,.tooltip-content .fancybox-content-container .hotline-list p::before,.fancybox-content-container .hotline-list .tooltip-content p::before,.tooltip-content .global-breadcrumb li:first-child::before,.global-breadcrumb .tooltip-content li:first-child::before{margin:0 6px 0 0;width:22px;height:22px} +.tooltip-content .item{margin:0 0 8px} +.tooltip-content .item:last-child{margin:0} +.tooltip-content .item *{margin:0;padding:0;list-style:none;line-height:inherit!important;font-family:inherit!important;font-size:inherit!important} +.tooltip-content .tooltip-spec{line-height:18px} +.tooltip-content .tooltip-spec .item{position:relative;padding-left:14px} +.tooltip-content .tooltip-spec .item::before{content:"";position:absolute;top:4px;left:0;border-radius:50%;background:linear-gradient(173.39deg,#81D2FF 7.77%,#4593FF 94.81%);width:8px;height:8px} +.tooltip-content .tooltip-spec .item::after{content:"";background:#fff;width:3.5px;height:3.5px;border-radius:50%;position:absolute;left:2.5px;top:6px} +.art-item{position:relative;background:#fff;overflow:hidden;font-size:14px;line-height:18px;padding-bottom:12px} +.art-item .art-img{position:relative;margin:0 0 12px;display:block;padding-bottom:56%;border-radius:8px;overflow:hidden} +.art-item img{position:absolute;inset:0;margin:auto;max-width:100%;max-height:100%;width:100%;height:100%} +.art-item .art-title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:16px;font-weight:600;line-height:21px;min-height:42px;margin:0 0 4px} +.art-item .art-summary{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;margin:0 0 8px;color:#4B4954} +.art-item .art-time{line-height:17px;display:flex;align-items:center;gap:6px;color:#505050;font-size:13px;font-weight:500;text-transform:capitalize} +.faq-item{background:#fff;border-radius:12px;overflow:hidden;padding:24px 84px 24px 20px;position:relative;margin:0 0 16px} +.faq-item.active .faq-answer{display:block} +.faq-item.active button{background:#0678DB;border-color:transparent;color:#fff} +.faq-item.active button::before{content:"\f525"} +.faq-item .faq-answer{display:none} +.static-container .bg-content{overflow:hidden} +.static-container .bg-content::after{background:linear-gradient(180deg,rgba(255,255,255,0) 0%,#FFF 100%)} +.static-container .static-btn{display:flex;justify-content:center;margin-top:16px;position:relative;z-index:2} +.static-container .static-btn button{border:1px solid #0678DB;color:#0678DB;background:#fff;text-transform:uppercase;border-radius:30px;min-width:150px;height:38px;font-weight:500;font-size:16px;transition:.1s all;display:none} +.static-container .static-btn button:hover{color:#fff;background:#0678DB} +.static-container .static-btn i{font-size:20px;margin-left:-1px;vertical-align:sub} +.global-header-container{background:linear-gradient(180.3deg,#259AFF -18.56%,#114CDD 100.92%);top:-50px;transition:.3s all} +.global-header-container.is-fixed{position:fixed;left:0;right:0;top:0;z-index:99;padding:10px 0} +.header-right-group .icons,.header-right-group .fancybox-content-container .hotline-list p::before,.fancybox-content-container .hotline-list .header-right-group p::before,.header-right-group .global-breadcrumb li:first-child::before,.global-breadcrumb .header-right-group li:first-child::before{width:24px;height:24px} +.header-right-group .cart-count{width:14px;height:14px;line-height:14px;border-radius:50%;color:#fff;background:#FF4E2A;font-weight:500;font-size:10px;position:absolute;top:-5px;right:-5px;text-align:center;font-style:normal} +.header-account .icons,.header-account .fancybox-content-container .hotline-list p::before,.fancybox-content-container .hotline-list .header-account p::before,.header-account .global-breadcrumb li:first-child::before,.global-breadcrumb .header-account li:first-child::before{width:20px;height:20px} +.header-cart-hover{border-radius:10px;overflow:hidden;color:#222;padding:10px 0 0;transition:.2s all;position:absolute;top:calc(100% + 30px);right:0;z-index:9;box-shadow:0 3px 8px 1px rgba(0,0,0,0.2);background:#fff;opacity:0;visibility:hidden;width:400px;text-align:left} +.header-cart-hover *{line-height:20px} +.header-cart-hover .cart-item{padding:19px 12px;border-bottom:1px solid #e1e1e1;display:flex;flex-wrap:wrap;gap:0;align-items:unset} +.header-cart-hover .cart-item:last-child{border:0} +.header-cart-hover .cart-items-holder{max-height:330px;overflow:auto;margin:0 0 12px} +.header-cart-hover .cart-item .cart-img{width:85px;margin-right:12px} +.header-cart-hover .cart-item .cart-text{width:calc(100% - 97px);font-weight:lighter} +.header-cart-hover .cart-item a{display:block;color:#222} +.header-cart-hover .cart-item .cart-text a{margin-bottom:10px} +.header-cart-hover .cart-price-hover{padding:12px 20px 15px 15px;box-shadow:0 -4px 10px 0 #e9e9e9} +.header-cart-hover .cart-price-hover .btn-goCart{border-radius:5px;margin-top:10px;background:#0676DA;font-weight:700;line-height:42px} +.header-cart-item:hover .header-cart-hover{transition:.2s all;top:101%;opacity:1;visibility:visible} +.header-cart-hover .cart-price-hover p{margin:10px 0 15px!important} +.fancybox-content-container .f-button.is-close-btn{top:15px!important;opacity:1!important;background:transparent} +.fancybox-content-container svg{color:#Fff} +.fancybox-content-container .hotline-list p{margin:0 0 16px;font-size:16px;line-height:23px;position:relative;padding:0 0 0 28px;display:flex;align-items:center} +.fancybox-content-container .hotline-list p:last-child{margin:0} +.fancybox-content-container .hotline-list p::before{content:"";position:absolute;left:0;background-position:-4px -83px} +.fancybox-content-container .hotline-list a{font-size:18px;font-weight:500;color:#FF4E2A;margin:0 8px 0 0;min-width:114px} +.fancybox__container:not(.is-compact) .fancybox__slide.has-close-btn{padding-top:4px} +.global-menu-container:hover .global-sub-container{display:block} +.global-menu-container .group-title{white-space:nowrap;position:relative} +.global-menu-container .group-title::after{content:"";position:absolute;left:-10px;bottom:-10px;width:calc(100% + 10px);height:10px} +.global-menu-container ul{list-style:none;margin:0;padding:0} +.global-sub-container{width:300px;height:645px;background:#fff;z-index:99;position:absolute;border-radius:12px;top:100%;left:0;font-size:16px;font-weight:500;display:none;box-shadow:0 0 6px 0 rgba(0,0,0,0.3)} +.global-sub-container ul{height:100%} +.global-sub-container li:hover > .submenu{opacity:1;visibility:visible;z-index:4;left:100%;box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.2);} +.global-sub-container li > a{display:flex;align-items:center;padding:0 8px 0 16px} +.global-sub-container .submenu{position:absolute;top:0;left:calc(100% + 10px);width:940px;background:#fff;border-left:1px solid #DFE4EC;gap: 20px;transition:.2s all;z-index:-2;opacity:0;visibility:hidden;border-radius: 8px !important;display: grid;grid-template-columns: repeat(4, minmax(0, 1fr));grid-auto-rows: max-content;} +.global-sub-container .submenu:not(:has(.submenu)){border-radius:0 12px 12px 0} +.global-sub-container .submenu:not(:has(.submenu)) li:first-child {border-top-right-radius: 12px;} +.global-sub-container .submenu a{display:table;padding: 0;margin-bottom: 14px;font-weight: normal} +.global-sub-container .submenu a:hover{color: #0676DA} +.global-sub-container .submenu li{/*width: calc(100% / 4 - 15px);*/height:fit-content;padding: 16px} +.global-sub-container .submenu .sub-list li {width: 100%;height: auto;padding: 0} +.global-sub-container .submenu .cat-2{font-weight: 600} +.global-sub-container .item{flex:1 1 0} +.global-sub-container .item::after{content:"";position:absolute;top:0;bottom:0;width:10px;right:-10px} +.global-sub-container .item:hover {background: #EAF1FF;} +.global-sub-container .item:hover .cat-1{position:relative;overflow:hidden} +.global-sub-container .item:hover .cat-1::before{content:"";width:3px;height:100%;position:absolute;left:0;background:#0678DB} +.global-sub-container .item:first-child,.global-sub-container .item:first-child .cat-1{border-radius:12px 12px 0 0} +.global-sub-container .item:last-child,.global-sub-container .item:last-child .cat-1{border-radius:0 0 12px 12px} +.global-sub-container .item > .submenu{margin-left:8px;border:0;border-radius:12px 0 0 12px} +.global-sub-container .item > .submenu > li:first-child{border-radius:12px 0 0 0} +.global-sub-container .has-children{padding-right:30px} +.global-sub-container .has-children::after{content:"\f298";font-family:boxicons!important;position:absolute;right:8px;color:#A0A5AC;font-size:26px;width:20px} +.global-sub-container .cat-1{height:100%;font-weight:400;display:flex;align-items:center} +.global-sub-container .cat-thumb{width:22px;height:22px;margin:0 8px 0 0;background-repeat:no-repeat;background-size:contain;background-position:center} +.global-sub-container .cat-title{width:calc(100% - 30px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis} +.global-sub-container .sub-menu-logo .flex li {padding: 0;width: auto;} +.global-sub-container .sub-menu-logo .flex li a {margin: 0;} +.global-sub-container .sub-menu-logo {display: grid;grid-template-columns: repeat(4, minmax(0, 1fr));grid-auto-rows: max-content} +.global-sub-container .sub-menu-logo li {width: 100%} +.header-homepage .global-menu-container{width:0;overflow:hidden} +.header-homepage .global-sub-container{top:calc(100% + 98px);display:block;box-shadow:unset} +.header-homepage .header-search-group{width:100%} +.footer-newsletter-container{background:linear-gradient(90deg,#055EDD 0%,#1F3AB2 100%);position:relative;overflow:hidden} +.footer-newsletter-container::before,.footer-newsletter-container::after{content:"";background:url(/images/footer-newsletter-bg.png) no-repeat;background-size:contain;width:500px;position:absolute;top:0;bottom:0;transform:scale(1.2)} +.footer-newsletter-container::before{left:0;transform:rotate(180deg) scale(1.2)} +.footer-newsletter-container::after{right:0} +.footer-newsletter-container .icon-newsletter{width:89px;height:89px;background-size:contain;background-repeat:no-repeat} +.footer-newsletter-container p{width:307px;line-height:25px} +.showroom-item{border-radius:0 0 40px;transition:.3s all;overflow:hidden;padding:8px} +.showroom-item:hover{border-radius:0} +.showroom-item:hover .item-triangle{width:0;height:0;border:0} +.showroom-item:hover .item-triangle::before{left:-50px} +.showroom-item .item-triangle{background:linear-gradient(135deg,#5198F6 0 50%,transparent 50% 100%);z-index:2;position:absolute;top:0;left:0;border-top:4px solid #dfe7f7;border-left:4px solid #dfe7f7;width:38px;height:38px;pointer-events:none;transition:.2s all} +.showroom-item .item-triangle::before{transition:.2s all;content:"";background:#fff;height:8px;width:70px;position:absolute;top:12px;left:-15px;transform:rotate(-45deg)} +.showroom-item img{position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover} +.showroom-item b{font-weight:600} +.showroom-item .image{position:relative;overflow:hidden;padding-bottom:75%} +.showroom-item .text{padding:18px 8px 0} +.showroom-item .item-info p{width:calc(100% - 26px)} +.showroom-item .icons,.showroom-item .global-breadcrumb li:first-child::before,.global-breadcrumb .showroom-item li:first-child::before,.showroom-item .fancybox-content-container .hotline-list p::before,.fancybox-content-container .hotline-list .showroom-item p::before{width:20px;height:22px;margin-right:6px} +.footer-item a{display:table} +.footer-contact-info .icons,.footer-contact-info .global-breadcrumb li:first-child::before,.global-breadcrumb .footer-contact-info li:first-child::before,.footer-contact-info .fancybox-content-container .hotline-list p::before,.fancybox-content-container .hotline-list .footer-contact-info p::before{background-color:#C8160E} +.global-footer-container{border-top-left-radius:64px;position:relative;overflow:hidden} +.global-footer-container::before,.global-footer-container::after{content:"";background:url(/images/bg-footer-info.png) no-repeat;background-size:contain;width:800px;height:400px;position:absolute;opacity:.2;z-index:1} +.global-footer-container::before{top:0;right:0} +.global-footer-container::after{bottom:0;left:50%;transform:translateX(-50%) rotate(180deg)} +.bg-oval{position:absolute;top:-55px;left:-67px;width:1584px;height:385.29px;background:linear-gradient(65.08deg,rgba(0,128,255,0.22) 14.11%,#0080FF 34.09%,#0C1C9A 68.43%,#0075FF 82.52%);opacity:1;filter:blur(190px);border-radius:50%;transform:rotate(-10.74deg)} +.global-fixed-button-container{position:fixed;bottom:85px;right:10px;z-index:10000;animation-duration:1s;animation-duration:1s;animation-fill-mode:both;transform:translateX(2000px) scale(0.7);display:flex;flex-direction:column;gap:24px;top:50%} +.global-fixed-button-container a{width:48px;height:48px;min-height:48px;font-size:30px;border-radius:50%;background-repeat:no-repeat;background-position:center;background-size:30px;color:#fff;text-align:center;display:flex;align-items:center;justify-content:center;background-color:#0677DB;box-shadow:0 0 0 4px rgba(255,255,255,0.2)} +.home-page{background:linear-gradient(#BCD5FA,#E8ECF6);background-repeat:no-repeat} +.home-banner-container a{border-radius:8px;overflow:hidden;display:block;position:relative} +.home-banner-container a:hover::before{width:120%;background-color:rgba(255,255,255,0);z-index:2;transition:.45s ease-out} +.home-banner-container a::before{content:"";position:absolute;top:0;left:-15%;bottom:0;width:0;height:100%;background-color:rgba(255,255,255,0.5);transition:none;transform:skewX(-25deg)} +.deal-container{position:relative;/*background:linear-gradient(3.56deg,#41A7FF 16.18%,#114CDD 115.33%)*/} +/*.deal-container::before{content:"";background:url(/images/deal-bg.png) no-repeat;z-index:1;position:absolute;top:0;right:0;height:50%;width:50%;opacity:.8;background-size:contain;background-position:bottom}*/ +.deal-container .deal-time-holder{display:flex;align-items:center;color:#333;font-weight:700;font-size:18px;gap:24px;text-align:center} +.deal-container .deal-time-holder p{margin:0;position:relative;background:#fff;width:40px;line-height:40px;border-radius:6px} +.deal-container .deal-time-holder p:last-child::after{content:none} +.deal-container .deal-time-holder p::after{content:":";position:absolute;right:-13px;color:#fff} +.deal-container .icon-bolt{width:35px;height:49px;background-position:center;background-repeat:no-repeat;background-size:contain;animation:beat .5s infinite alternate;animation-timing-function:cubic-bezier(0.19,0.96,0.65,1);transform-origin:center} +.home-deal-container .deal-container{margin-bottom:108px} +.home-deal-container .deal-container::after{content:"";width:100%;height:22px;background:url(/images/global-deal-line.png) no-repeat;background-size:cover;background-position:center;position:absolute;bottom:-70px;left:0;right:0} +.home-deal-container .deal-container:last-child{margin-bottom:0} +.home-deal-container .deal-container:last-child::after{content:none} +.home-categories-container .item{text-align:center;font-weight:500;line-height:18px;padding:6px;text-transform:uppercase;transition:.3s all;border-radius:8px} +.home-categories-container .item:hover{box-shadow:0 2px 6px 0 rgba(0,0,0,0.15)} +.home-categories-container .item:nth-child(n+21) {display: none} +.home-categories-container.active .item:nth-child(n+21) {display: block} +.home-categories-container button {border: 1px solid #0678DB;color: #0678DB;background: #fff;text-transform: uppercase;border-radius: 30px;min-width: 150px;height: 38px;font-weight: 500;font-size: 16px;transition: 0.1s all;} +.home-categories-container button:hover{background: #0678DB;color: #fff} +.home-categories-container button::before {content: 'Xem thêm ';} +.home-categories-container button::after {content: "\f292";font-family: boxicons !important;font-size: 20px;margin-left: -1px;vertical-align: sub;} +.home-categories-container.active button::before {content: 'Thu gọn ';} +.home-categories-container.active button::after {content: "\f29b";} +.home-categories-container .image{display:block;padding-bottom:100%;position:relative;border-radius:8px;background-color:#EAEEF4;background-position:center;background-repeat:no-repeat;background-size:52px;margin-bottom:12px} +.home-product-container .group-title p{display:flex;align-items:center;font-weight:500;font-size:16px;position:relative;gap:6px;padding-left:16px;margin-left:16px;line-height:24px} +.home-product-container .group-title p::before{content:"";width:1px;height:24px;background:#DFDFDF;position:absolute;left:0} +.home-product-container .group-title .icons,.home-product-container .group-title .global-breadcrumb li:first-child::before,.global-breadcrumb .home-product-container .group-title li:first-child::before,.home-product-container .group-title .fancybox-content-container .hotline-list p::before,.fancybox-content-container .hotline-list .home-product-container .group-title p::before{width:24px;height:24px} +.home-product-banner img {border-radius: 24px} +.promotion-news-group .art-summary,.promotion-news-group .art-time{display:none} +.home-article-container .art-item:nth-child(n+5){display:none} +.filter-list a{display:flex;justify-content:space-between;margin:0 0 12px;position:relative;padding:0 0 0 26px;gap:12px} +.filter-list a:last-child{margin:0} +.filter-list a::before{content:"";border-radius:4px;border:1.5px solid #DFE4EC;background:#fff;position:absolute;left:0;top:1px;width:18px;height:18px} +.filter-list .current::before{background:#0678DB;border-color:#0678DB} +.filter-list .current::after{content:"\f280";font-family:boxicons!important;color:#fff;position:absolute;top:-1px;left:1px;font-size:16px} +.filter-list span:first-child{width:calc(100% - 62px)} +.filter-list span:last-child{white-space:nowrap;width:50px;text-align:right} +.product-detail-page .deal-time-holder p{margin:0;background:#333;position:relative;border-radius:4px;padding:0 7px;min-width: 32px; text-align:center} +.product-detail-page .deal-time-holder p:last-child::after{content:none} +.product-detail-page .deal-time-holder p::after{content:":";color:#333;position:absolute;right:-12px;font-size:16px;font-weight:700} +.pd-comment-btn button.current{border-color:#0678DB;color:#0678DB} +.pd-spec-group{overflow:hidden;border-radius:12px} +.pd-spec-group.pd-spec-group{overflow: auto !important;} +.pd-spec-group thead{background:#EAEDF4} +.pd-spec-group tr:nth-child(even){background:#F2F6FF} +.pd-spec-group td{padding:12px 8px;font-weight:500;} +.pd-spec-group td:nth-child(1) {min-width: 50px;} +.pd-spec-group td *{font-size:inherit!important;margin:0!important;font-family:inherit!important} +.pd-spec-group a{color:#0678DB!important} +.pd-article-holder .art-item{display:flex;align-items:center;gap:12px} +.pd-article-holder .art-item .art-time{display:none} +.pd-article-holder .art-item .art-img{width:38%;margin:0;padding-bottom:25.5%} +.pd-article-holder .art-item .art-text{width:calc(62% - 12px)} +.pd-article-holder .art-item .art-title{font-size:14px;line-height:18px;min-height:unset} +.pd-tab-group a{position:relative} +.pd-tab-group a::after{content:"";height:3px;background:#0678DB;position:absolute;left:0;right:0;bottom:-20px;transition:.3s all;width:0} +.pd-tab-group a:hover,.pd-tab-group a.current{color:#0678DB} +.pd-tab-group a:hover::after,.pd-tab-group a.current::after{width:100%} +.item-circle{position:relative;padding-left:18px;margin:0 0 8px} +.item-circle:last-child{margin:0} +.item-circle::before{content:"";position:absolute;top:4px;left:4px;border-radius:50%;background:linear-gradient(173.39deg,#81D2FF 7.77%,#4593FF 94.81%);width:8px;height:8px} +.item-circle::after{content:"";background:#fff;width:3.5px;height:3.5px;border-radius:50%;position:absolute;left:6.5px;top:6px} +.item-circle * {margin: 0;} +.pd-gallery-list a{border:2px solid transparent;overflow:hidden;display:block;pointer-events:auto!important} +.pd-gallery-list img{filter:unset!important;display:block;margin:auto;max-width:100%;max-height:100%} +.pd-gallery-list .mz-thumb-selected{border-color:#0678DB} +.pd-offer-group .icon-discount{background-position:-76px -194px} +.pd-offer-group .item{margin:0 0 8px} +.pd-offer-group .item:last-child{margin:0} +.pd-offer-group .item * {margin: 0;line-height: inherit !important;font-family: inherit !important} +.pd-offer-group .item-product {display: flex;flex-wrap: wrap;align-items: flex-start;gap: 12px;font-weight: 500;} +.pd-offer-group .item-product:hover{color: #0676DA} +.pd-offer-group .item-product .img {width: 60px} +.pd-offer-group .item-product .text {width: calc(100% - 72px)} +.pd-offer-group .item::after {width: 4px;height: 4px;left: 6px;} +.pd-offer-group .item img {display: block;margin: auto;max-height: 50px;} +.pd-box-group .pd-spec-group tr:nth-child(n+11) {display: none;} +.pd-rating-conatiner.active .rating-btn::before{content:"Đóng lại !"} +.pd-rating-conatiner.active .pd-rating-form{display:block} +.pd-rating-conatiner .rating-btn::before{content:"Đánh giá sản phẩm";display:block} +.rating-star{position:relative;float:right;display:block;width:17px;height:17px;background:url(/images/star_rating.png) 0 0;margin:0 3px;cursor:pointer} +.rating-input{float:right;width:16px;height:16px;padding:0;margin:0 0 0 -16px;opacity:0} +.rating-star:hover{background-position:0 0} +.rating-star:hover,.rating-star:hover ~ .rating-star{background-position:0 0} +.rating-input:checked ~ .rating-star,.rating-star:hover,.rating-star:hover ~ .rating-star{background-position:0 0} +.rating-input:checked ~ .rating-star,.rating:hover .rating-star:hover,.rating:hover .rating-star:hover ~ .rating-star{background-position:0 0} +.rating-comment:hover .rating-star,.rating-star{position:relative;float:right;display:block;background:url(/images/star_rating.png) 0 -28px} +.rating-comment:hover .rating-star:hover,.rating-comment:hover .rating-star:hover ~ .rating-star{background-position:0 -56px!important} +.star-tip::before{content:" ";right:100%;top:50%;border:solid transparent;height:0;width:0;position:absolute;pointer-events:none;border-color:rgba(82,184,88,0);border-right-color:#2b8ae0;border-width:6px;margin-top:-6px} +.cart-item{display:flex;flex-wrap:wrap;align-items:center;gap:12px} +.cart-item img{display:block;max-width:100%;margin:auto} +.cart-item .item-img{width:88px;display:block} +.cart-item .item-text{width:calc(100% - 100px);display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between} +.cart-item .item-offer{background:#fff;box-shadow:0 1px 4px 0 rgba(0,0,0,0.2);border-radius:12px;padding:16px 12px;font-size:16px;line-height:22px;position:absolute;top:100%;margin-top:10px;transition:.1s all;opacity:0;visibility:hidden;z-index:-8;min-width: 400px} +.cart-item .item-offer::before{content:"";position:absolute;top:-15px;left:19px;border-left:15px solid transparent;border-right:15px solid transparent;border-bottom:15px solid rgba(0,0,0,0.04)} +.cart-item .item-offer::after{content:"";position:absolute;top:-11px;left:21px;border-left:13px solid transparent;border-right:13px solid transparent;border-bottom:13px solid #FFF} +.cart-item .item-offer .item{margin:0 0 8px} +.cart-item .item-offer .item:last-child{margin:0} +.cart-item .item-offer .item *{font-family:inherit!important;line-height:inherit!important;margin:0;font-size: inherit !important;} +.cart-item .item-name{position:relative;width:308px;margin-right:24px} +.cart-item .item-name a{display:table;line-height:20px;font-size:16px;font-weight:500} +.cart-item .item-quantiy{width:96px;overflow:hidden;border-radius:40px;display:flex;text-align:center;background:#f5f5f5;margin-right:24px} +.cart-item .item-quantiy *{height:38px} +.cart-item .item-quantiy input{width:52px;background:transparent;text-align:center} +.cart-item .item-quantiy button{width:22px;font-size:12px;text-align:right} +.cart-item .item-quantiy button:last-child{text-align:left} +.cart-item .item-price{width:117px;margin-right:24px} +.article-page .art-item{background:transparent;padding:0} +.article-page .art-item .art-img{padding-bottom:68%} +.top-article-container .art-item{display:flex;flex-wrap:wrap;gap:12px} +.top-article-container .art-item .art-img{margin:0;width:192px;padding-bottom:130px} +.top-article-container .art-item .art-text{width:calc(100% - 204px)} +.article-categories-group {z-index: 12} +.article-categories-group a{text-align:center;flex:1;padding-bottom:20px;position:relative} +.article-categories-group a::after{content:"";position:absolute;left:0;bottom:0;right:0;max-width:100%;height:3px;background:transparent;transition:.25s all;width:0} +.article-categories-group a:hover,.article-categories-group a.active{color:#0678DB} +.article-categories-group a:hover::after,.article-categories-group a.active::after{background:#0678DB;width:100%} +.article-category-container{padding:64px 0} +.article-category-container:nth-child(even){background:#E8ECF6} +.article-category-container .art-summary{display:none} +.article-category-container .first-item .art-img{margin:0 0 24px} +.article-category-container .first-item .art-title{font-size:20px;line-height:25px;min-height:unset;margin:0 0 12px} +.article-category-container .first-item .art-summary{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;line-height:22px;font-size:16px;margin:12px 0} +.article-category-container .first-item .art-time{font-size:14px;line-height:20px} +.video-item{display:flex;flex-wrap:wrap;gap:12px} +.video-item .video-img{display:block;width:160px;position:relative;padding-bottom:90px} +.video-item .video-img img{display:block;position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover} +.video-item .video-title{width:calc(100% - 172px);line-height:21px;font-size:16px;font-weight:600;margin-top:16px} +.gradient-overlay{position:absolute;bottom:0;left:0;right:0;height:53px;background:linear-gradient(180deg,rgba(234,241,255,0) 0%,#EAF1FF 100%);pointer-events:none;z-index:10} +.article-video-container iframe{width:100%;height:100%;display:block;border-radius:16px} +.article-video-holder .video-item{display:block;font-size:16px;font-weight:500;line-height:22px} +.article-video-holder .video-item *{display:block} +.article-video-holder .video-item:hover .item-img::before{background:rgba(0,0,0,0.2)} +.article-video-holder .video-item img{position:absolute;width:100%;height:100%;-o-object-fit:cover;object-fit:cover} +.article-video-holder .video-item .item-img{position:relative;overflow:hidden;border-radius:12px;margin-bottom:16px;padding-bottom:58%} +.article-video-holder .video-item .item-img::before{content:"";position:absolute;inset:0;z-index:1;transition:.2s all} +.article-video-holder .video-item .bx{font-size:60px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:2;width:60px;height:60px;display:flex;align-items:center;justify-content:center;border-radius:50%;background-color:#fff;text-align:center} +.tool-search-container::before{content:"";background:url(/images/bg-footer-info.png) no-repeat;background-size:cover;background-position:-684px 20px;position:absolute;bottom:0;right:0;width:400px;top:0;transform:rotate(183deg);opacity:.04} +.tool-btn-list button,.tool-btn-list a{position:relative;overflow:hidden;border:1px solid transparent;border-radius:8px} +.tool-btn-list button:hover,.tool-btn-list button.current,.tool-btn-list a:hover,.tool-btn-list a.current{background:#fff;color:#004BA4;border-color:#81D2FF} +.tool-btn-list button:hover .icon,.tool-btn-list button.current .icon,.tool-btn-list a:hover .icon,.tool-btn-list a.current .icon{filter:invert(35%) sepia(44%) saturate(4377%) hue-rotate(192deg) brightness(91%) contrast(95%)} +.software-list{margin-bottom:72px} +.tool-product-holder .p-item{border-radius:12px;box-shadow:0 2px 10px 0 rgba(0,0,0,0.0784313725);padding:12px 12px 24px} +.tool-product-holder .p-item .p-name{font-size:16px;line-height:21px;min-height:42px;font-weight:600} +.tool-product-holder .p-item .p-price-group{align-items:center;gap:4px;margin:0 0 12px;min-height:unset} +.tool-product-holder .p-item .p-price{width:auto;font-size:18px;line-height:28px;margin:0} +.tool-product-holder .p-item .p-summary{line-height:18px} +.global-popup-login .global-popup-content{width:800px;margin:auto;background:#fff;border-radius:16px;position:fixed;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:100;display:-webkit-box;display:-ms-flexbox;display:flex;color:#404d5f} +.global-popup-login .item-left{width:299px;background-position:center;border-right:1px solid #e5eaf1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} +.global-popup-login .item-right{width:calc(100% - 300px);padding:21px 40px 25px;position:relative} +.global-popup-login .close-popup{color:#404d5f;font-size:21px;margin-right:-20px} +.global-popup-login .box-title{line-height:20px;margin:24px 0;font-size:16px} +.global-popup-login .box-title a{color:#1988ec;text-decoration:underline;font-weight:600} +.global-popup-login .box-title p{margin:0} +.global-popup-login .box-title p:first-child{margin-bottom:4px;font-weight:700;font-size:28px;line-height:32px} +.global-popup-login .input-box{position:relative;margin-bottom:16px} +.global-popup-login .input-box input{width:100%;margin:0;padding:0 20px 0 5px;height:40px;border:0;border-bottom:1px solid #e1e9ec;font-size:16px} +.global-popup-login .icon-eye{width:12px;height:12px;position:absolute;right: 13px;top: 13px;font-size: 18px;} +.global-popup-login .icon-google{background-position:-8px -186px} +.global-popup-login .icon-facebook{background-position:-64px -186px} +.global-popup-login .btn-forgot-password{color:#697789;font-weight:600;font-size:14px;line-height:18px} +.global-popup-login .popup-btn{width:100%;background:#1988ec;border-radius:8px;text-align:center;color:#fff;margin:16px 0 24px;line-height:40px;font-weight:600;font-size:16px;display:block} +.global-popup-login .popup-icons-group{margin:24px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} +.global-popup-login .popup-icons-group .icons{width:40px;height:40px;margin:0 8px} +.global-popup-login .popup-btn-direction{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between} +.global-popup-login .btn-back{width:10px;height:10px;border:2px solid #404d5f;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);border-right:0;border-top:0} +.global-popup-login .popup-registor-group .input-box{margin-bottom:32px} +.global-popup-login .popup-registor-group .popup-btn{margin-top:40px} +.pd-product-holder {display: none} +.deal-page .deal-time-holder{display:flex;align-items:center;gap:10px} +.deal-page .deal-time-holder p{margin:0;background:#000;color:#fff;font-weight:500;position:relative;border-radius:4px;min-width:24px;text-align:center;line-height:24px} +.deal-page .deal-time-holder p::after{content:':';color:#000;position:absolute;right:-7px} +.deal-page .deal-time-holder p:last-child::after{content:none} +.deal-page .product-holder {grid-template-columns: repeat(5, minmax(0, 1fr));gap: 16px} +.article-author-page{padding-bottom:40px} +.article-author-page .container{max-width:1220px!important;min-width:1220px!important} +.article-author-page .author-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:20px;margin-top:29px;margin-bottom:69px;padding:27px 40px 26px 80px;border-width:2px;border-style:solid;border-color:transparent;-o-border-image:-o-linear-gradient(0.62deg,#0038ff -3.69%,#27f2d5 96.93%);border-image:linear-gradient(89.38deg,#0038ff -3.69%,#27f2d5 96.93%);border-image-slice:2;-webkit-box-shadow:0 4px 14px rgba(0,0,0,.1);box-shadow:0 4px 14px rgba(0,0,0,.1)} +.article-author-page .author-box:nth-child(2n){-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-o-border-image:-o-linear-gradient(0.62deg,#27f2d5 -3.69%,#0038ff 96.93%);border-image:linear-gradient(89.38deg,#27f2d5 -3.69%,#0038ff 96.93%);border-image-slice:2} +.article-author-page .author-box:last-child{margin-bottom:0} +.article-author-page .author-box img{display:-webkit-box;display:-ms-flexbox;display:flex} +.article-author-page .author-avatar{width:190px;height:190px;margin:0 auto;border-radius:50%} +.article-author-page .author-info{margin-top:-56px} +.article-author-page .author-name{font-size:24px;line-height:32px;font-weight:600;text-align:center;color:#0676da;margin:16px 0 0} +.article-author-page .author-lorem{font-size:16px;line-height:20px;font-weight:400;text-align:justify;color:#717171;max-width:700px;-webkit-box-flex:1;-ms-flex:1;flex:1} +.article-author-page .author-socials{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px} +.article-author-page .author-paging .paging{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:10px 0 0 0} +.article-author-page .author-heading .a-routting{background:url(/images/hoanghapc-author-bg-2.png) no-repeat;background-size:cover;background-position:left;height:304px} +.article-author-page .author-heading .a-routting-text{font-size:16px;line-height:20px;padding-top:24px;color:#fff} +.article-author-page .author-heading .a-routting-text a{color:#fff} +.article-author-page .author-heading .a-routting-text a:hover,.article-author-page .author-heading .a-routting-text a:last-child{color:rgb(255,255,255,.5)} +.article-author-page .author-heading .a-info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;margin-top:-160px;margin-bottom:53px} +.article-author-page .author-heading .a-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end} +.article-author-page .author-heading .a-avatar{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;width:250px;height:250px;border-radius:50%;margin-right:14px} +.article-author-page .author-heading .a-name{display:inline-block;font-size:40px;line-height:30px;font-weight:600;color:#0676da;margin-bottom:0} +.article-author-page .author-heading .a-socials{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px} +.article-author-page .author-heading .a-socials img{display:-webkit-box;display:-ms-flexbox;display:flex} +.article-author-page .author-heading .a-lorem{font-size:16px;line-height:20px;text-align:justify;color:#717171} +.article-author-page .author-heading .a-line{height:2px;margin:80px 0;background:-o-linear-gradient(.62deg,#27f2d5 -3.69%,#0038ff 96.93%);background:-o-linear-gradient(.62deg,#27f2d5 -3.69%,#0038ff 96.93%);background:-o-linear-gradient(.62deg,#27f2d5 -3.69%,#0038ff 96.93%);background:linear-gradient(89.38deg,#27f2d5 -3.69%,#0038ff 96.93%)} +.article-author-page .author-title{font-size:32px;line-height:38px;font-weight:600;color:#1988ec;margin-bottom:24px} +.account-page{padding:30px 0;background: #fff;} +.account-page .account-col-left{width:220px;margin-right:20px} +.account-page .account-col-right{width:calc(100% - 240px);background:#fff;-webkit-box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-shadow:0 0 5px 0 rgba(0,0,0,.2);border-radius:10px;padding:20px} +.account-page .account-col-left a{display:block;padding:0 20px;border-radius:6px;margin-top:7px;line-height:40px;background:#ebebeb;color:#666} +.account-page .account-col-left b{display:block;font-size:16px} +.account-page .container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap} +.account-page .account-col-left a.current,.account-page .account-col-left a:hover{background:#005bad;color:#fff} +.account-page .account-col-left .box-info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:25px} +.account-page .account-col-left p{margin:0;line-height:20px;width:calc(100% - 58px)} +.account-page .account-col-left b{font-weight:600;line-height:1.2;text-transform:capitalize;display:block;font-size:20px} +.account-page .account-col-left .box-info i{width:48px;margin-right:10px;line-height:48px;font-size:48px;color:#005bad} +.account-page .box-direction a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center} +.account-page .box-direction i{width:36px} +.account-page .box-direction span{width:calc(100% - 36px)} +.account-page .account-col-right td{padding:5px 10px;border: 1px solid #ccc} +.account-page .account-col-right h2,.account-page .account-col-right h3{margin:0 0 15px 0;padding-bottom:8px;font-size:20px;color:#000;border-bottom:1px solid #efefef;font-weight:700} +.account-page .btn-danger {color: #fff;background: linear-gradient(165.29deg,#259AFF 8.53%,#114CDD 93.19%);height: 40px;line-height: 40px;padding: 0 20px;font-weight: 500;border-radius: 5px;cursor: pointer;} +.account-page select {border: 1px solid #ccc;height: 36px;border-radius: 4px;padding: 0 10px;} +.account-page .form-control {border: 1px solid #ccc;height: 40px;padding: 0 10px;border-radius: 5px;width: 100%} +.account-page .col-right-tbl {display: table;} +.brand-page{padding-top:40px;padding-bottom:20px} +.brand-page a{color:#222} +.brand-page .featured-brand{width:100%;float:left;margin-bottom:30px} +.brand-page .featured-brand .title-n{width:100%;float:left;font-size:18px;text-transform:uppercase;font-weight:700;margin-bottom:20px} +.brand-page .featured-brand .list-n{width:100%;float:left;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center} +.brand-page .featured-brand .list-n li{width:12.5%;float:left;text-align:center;margin-bottom:10px} +.brand-page .featured-brand .list-n li img{max-height:25px} +.brand-page .brand-list{margin-bottom:30px} +.brand-page .brand-list .first-letter{float:left;margin-right:30px} +.brand-page .brand-list .first-letter .title-n{float:left;font-size:18px;text-transform:uppercase;font-weight:700;line-height:25px} +.brand-page .brand-list .list-letter{float:left} +.brand-page .brand-list .list-letter li{float:left;margin-right:25px;font-size:16px;line-height:25px} +.brand-page .brand-item{margin-bottom:20px} +.brand-page .brand-item .smallTitle{font-size:18px;font-weight:700;margin-bottom:10px!important;line-height:30px;border-bottom:solid 1px #ccc} +.brand-page .brand-item .list-unstyled{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center} +.brand-page .brand-item .list-unstyled li{text-align:center;padding:0 10px;margin-bottom:20px;text-transform:capitalize} +.brand-page .brand-item .list-unstyled li img{max-height:25px;width:auto} +.pd-store-list a span {width: calc(100% - 24px);} +.product-page .col-left-group {height: calc(100vh - 96px);position: sticky;top: 86px} +.product-page .product-filter-group {overflow: auto;height: calc(100% - 66px);padding-right: 13px;margin-right: -13px} +.product-filter-group::-webkit-scrollbar{width:8px} +.product-filter-group::-webkit-scrollbar-track{background:transparent} +.product-filter-group::-webkit-scrollbar-thumb{background:#f5f5f5;border-radius:10px} +.product-filter-group::-webkit-scrollbar-thumb:hover{background:#196deb} +.group:hover .custom-nav{display: block} +.custom-nav .button-icon {color: #fff;font-size: 16px;width: 40px;height: 40px;border-radius: 50%;background: #0677db;display: flex;align-items: center;justify-content: center;font-weight: bold;} +.custom-nav .button-icon::after {font-size: inherit;color: inherit;content: '';} +.custom-nav .swiper-navigation-icon {width: 11px !important;} + +/*=================== Responsive ===================*/ +@media (min-width: 1648px) { + .container{max-width:1600px} + .tooltip-content .item{font-size:16px;line-height:24px} + .tooltip-content .tooltip-spec .item::before{top:6px} + .tooltip-content .tooltip-spec .item::after{top:8px} + .header-cart-hover{width:500px} + .header-cart-hover .cart-item{font-size:16px;line-height:22px} + .header-cart-hover b.red{font-size:18px;font-weight:700} + .header-cart-hover .text-18.font-600{font-size:20px;font-weight:700} + .global-header-container > .container{gap:32px} + .global-header-container .header-middle-group{width:875px;gap:16px} + .global-header-container .header-right-group{width:456px} + .global-header-container .header-account{padding:0 6px} + .global-menu-container{width:143px} + .global-sub-container{width:388px;height:822px;font-size:18px} + .global-sub-container .item::after{width:16px;right:-16px} + .global-sub-container .item > .submenu{margin-left:16px} + .global-sub-container .submenu{width:1200px} + .global-sub-container .submenu li{padding: 20px} + .header-search-group{width:716px} + .footer-newsletter-container > .container{gap:0} + .footer-newsletter-container .icon-newsletter{width:92px;height:92px;margin-right:48px} + .footer-newsletter-container p{width:370px;font-size:24px;line-height:31px;margin:0 96px 0 0} + .footer-newsletter-container form{width:994px} + .footer-newsletter-container button{width:240px} + .footer-newsletter-container input{width:742px} + .global-showroom-container{padding-top:96px;padding-bottom:96px} + .showroom-item .text{font-size:18px;line-height:24px} + .global-footer-container .footer-item{font-size:18px;line-height:24px} + .global-footer-container .footer-item > p{font-size:20px} + .global-footer-container .footer-item > .inline-grid{gap:16px} + .footer-contact-info{font-size:18px;line-height:24px} + .footer-contact-info a{font-size:inherit;display:table;line-height:inherit} + .footer-contact-info > p{font-size:20px;line-height:26px} + .global-faq-container{padding-top:64px;padding-bottom:64px} + .home-page .banner-slider{width:1196px} + .deal-container .group-title a{font-size:18px} + .home-categories-container .group-title{line-height:40px;font-size:32px} + .home-categories-container .item{padding:8px;font-size:16px;line-height:20px} + .home-product-container .group-title h2{line-height:40px;font-size:32px} + .home-article-container .art-item:nth-child(n+5){display:block} + .home-article-container .grid-cols-4{grid-template-columns:repeat(5,minmax(0,1fr))} + .product-page-content{gap:24px} + .product-page-content .col-left-group{width:280px;padding:24px 20px} + .product-page-content .col-right-group{width:1296px} + .product-page-content .col-right-group .box-item{padding:24px} + .product-page-content .product-holder{padding:0 24px;grid-template-columns:repeat(5,minmax(0,1fr));gap:36px 20px} + .product-page-content .sort-group{padding-left:24px;padding-right:24px} + .product-page-content .static-content{padding:0 40px} + .pd-info-container > .gap-6{gap:32px;font-size:16px;line-height:22px} + .pd-info-container .col-left-group{width:440px} + .pd-info-container .col-middle-group{width:544px} + .pd-info-container .col-right-group{width:504px} + .pd-summary-group > p{font-size:18px} + .pd-offer-group{border-radius:12px} + .pd-offer-group .group-title{font-size:18px;line-height:24px} + .pd-static-list{font-size:16px;line-height:22px} + .pd-static-list .item-circle::before{top:7px} + .pd-static-list .item-circle::after{top:9px} + .pd-static-group .group-title{font-size:18px;line-height:24px;padding-left:8px} + .pd-box-group{padding:24px} + .pd-content-container{gap:32px} + .pd-content-container .col-left{width:1048px} + .pd-content-container .col-left .pd-box-group{padding:24px 40px} + .pd-content-container .col-right{width:520px} + .pd-comment-container .text-14{font-size:16px;line-height:22px} + .article-categories-group{font-size:16px} + .article-category-container .article-category-holder{gap:32px} + .article-category-container .art-title{margin-bottom:8px} + .article-page .article-holder{gap:32px} + .article-detail-page{max-width:1000px} + .software-list{grid-template-columns:repeat(8,minmax(0,1fr));margin-bottom:96px} + .software-list .item{font-size:16px;line-height:22px} + .deal-page .deal-time-container {font-size: 14px} +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..6695cf5 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,42 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "baseUrl": "src", + "paths": { + "@/*": [ + "*" + ] + }, + "plugins": [ + { + "name": "next" + } + ] + }, + "include": [ + "next-env.d.ts", + "app/**/*.ts", + "app/**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +}
+
+