조민수 조민수 05-04
init commit
@78fbe5f7342766a4504125524d8f4176d064f3e4
 
.gitignore (added)
+++ .gitignore
@@ -0,0 +1,29 @@
+# Dependencies
+node_modules/
+
+# Build output
+dist/
+build/
+
+# Logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+
+# Local environment
+.env
+.env.*
+!.env.example
+
+# Editor / IDE
+.idea/
+.vscode/
+
+# OS files
+.DS_Store
+Thumbs.db
+
+# TypeScript
+*.tsbuildinfo
 
eslint.config.js (added)
+++ eslint.config.js
@@ -0,0 +1,23 @@
+import js from '@eslint/js'
+import globals from 'globals'
+import reactHooks from 'eslint-plugin-react-hooks'
+import reactRefresh from 'eslint-plugin-react-refresh'
+import tseslint from 'typescript-eslint'
+import { defineConfig, globalIgnores } from 'eslint/config'
+
+export default defineConfig([
+  globalIgnores(['dist']),
+  {
+    files: ['**/*.{ts,tsx}'],
+    extends: [
+      js.configs.recommended,
+      tseslint.configs.recommended,
+      reactHooks.configs.flat.recommended,
+      reactRefresh.configs.vite,
+    ],
+    languageOptions: {
+      ecmaVersion: 2020,
+      globals: globals.browser,
+    },
+  },
+])
 
index.html (added)
+++ index.html
@@ -0,0 +1,12 @@
+<!doctype html>
+<html lang="ko">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Base React Publishing Lab</title>
+  </head>
+  <body>
+    <div id="root"></div>
+    <script type="module" src="/src/main.tsx"></script>
+  </body>
+</html>
 
package-lock.json (added)
+++ package-lock.json
@@ -0,0 +1,3107 @@
+{
+  "name": "react-app",
+  "version": "0.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "react-app",
+      "version": "0.0.0",
+      "dependencies": {
+        "@tanstack/react-query": "^5.99.0",
+        "react": "^19.2.4",
+        "react-dom": "^19.2.4",
+        "react-router-dom": "^7.14.1",
+        "react-toastify": "^11.1.0"
+      },
+      "devDependencies": {
+        "@eslint/js": "^9.39.4",
+        "@types/node": "^24.12.2",
+        "@types/react": "^19.2.14",
+        "@types/react-dom": "^19.2.3",
+        "@vitejs/plugin-react": "^6.0.1",
+        "eslint": "^9.39.4",
+        "eslint-plugin-react-hooks": "^7.0.1",
+        "eslint-plugin-react-refresh": "^0.5.2",
+        "globals": "^17.4.0",
+        "typescript": "~6.0.2",
+        "typescript-eslint": "^8.58.0",
+        "vite": "^8.0.4"
+      }
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.29.0",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
+      "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.28.5",
+        "js-tokens": "^4.0.0",
+        "picocolors": "^1.1.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/compat-data": {
+      "version": "7.29.0",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz",
+      "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/core": {
+      "version": "7.29.0",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz",
+      "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.29.0",
+        "@babel/generator": "^7.29.0",
+        "@babel/helper-compilation-targets": "^7.28.6",
+        "@babel/helper-module-transforms": "^7.28.6",
+        "@babel/helpers": "^7.28.6",
+        "@babel/parser": "^7.29.0",
+        "@babel/template": "^7.28.6",
+        "@babel/traverse": "^7.29.0",
+        "@babel/types": "^7.29.0",
+        "@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.29.1",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
+      "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/parser": "^7.29.0",
+        "@babel/types": "^7.29.0",
+        "@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.28.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz",
+      "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/compat-data": "^7.28.6",
+        "@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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-imports": {
+      "version": "7.28.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
+      "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/traverse": "^7.28.6",
+        "@babel/types": "^7.28.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-transforms": {
+      "version": "7.28.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz",
+      "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.28.6",
+        "@babel/helper-validator-identifier": "^7.28.5",
+        "@babel/traverse": "^7.28.6"
+      },
+      "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helpers": {
+      "version": "7.29.2",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz",
+      "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/template": "^7.28.6",
+        "@babel/types": "^7.29.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.29.2",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz",
+      "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.29.0"
+      },
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/template": {
+      "version": "7.28.6",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
+      "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.28.6",
+        "@babel/parser": "^7.28.6",
+        "@babel/types": "^7.28.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/traverse": {
+      "version": "7.29.0",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
+      "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.29.0",
+        "@babel/generator": "^7.29.0",
+        "@babel/helper-globals": "^7.28.0",
+        "@babel/parser": "^7.29.0",
+        "@babel/template": "^7.28.6",
+        "@babel/types": "^7.29.0",
+        "debug": "^4.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/types": {
+      "version": "7.29.0",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
+      "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
+      "dev": true,
+      "license": "MIT",
+      "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.9.2",
+      "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz",
+      "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "@emnapi/wasi-threads": "1.2.1",
+        "tslib": "^2.4.0"
+      }
+    },
+    "node_modules/@emnapi/runtime": {
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz",
+      "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "tslib": "^2.4.0"
+      }
+    },
+    "node_modules/@emnapi/wasi-threads": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz",
+      "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "tslib": "^2.4.0"
+      }
+    },
+    "node_modules/@eslint-community/eslint-utils": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
+      "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
+      "dev": true,
+      "license": "MIT",
+      "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,
+      "license": "Apache-2.0",
+      "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,
+      "license": "MIT",
+      "engines": {
+        "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+      }
+    },
+    "node_modules/@eslint/config-array": {
+      "version": "0.21.2",
+      "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz",
+      "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@eslint/object-schema": "^2.1.7",
+        "debug": "^4.3.1",
+        "minimatch": "^3.1.5"
+      },
+      "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,
+      "license": "Apache-2.0",
+      "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,
+      "license": "Apache-2.0",
+      "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.5",
+      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz",
+      "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.14.0",
+        "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.5",
+        "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/eslintrc/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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@eslint/js": {
+      "version": "9.39.4",
+      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz",
+      "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==",
+      "dev": true,
+      "license": "MIT",
+      "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,
+      "license": "Apache-2.0",
+      "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,
+      "license": "Apache-2.0",
+      "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,
+      "license": "Apache-2.0",
+      "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,
+      "license": "Apache-2.0",
+      "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,
+      "license": "Apache-2.0",
+      "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,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=18.18"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/nzakas"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT"
+    },
+    "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,
+      "license": "MIT",
+      "dependencies": {
+        "@jridgewell/resolve-uri": "^3.1.0",
+        "@jridgewell/sourcemap-codec": "^1.4.14"
+      }
+    },
+    "node_modules/@napi-rs/wasm-runtime": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz",
+      "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "@tybys/wasm-util": "^0.10.1"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/Brooooooklyn"
+      },
+      "peerDependencies": {
+        "@emnapi/core": "^1.7.1",
+        "@emnapi/runtime": "^1.7.1"
+      }
+    },
+    "node_modules/@oxc-project/types": {
+      "version": "0.124.0",
+      "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.124.0.tgz",
+      "integrity": "sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/Boshen"
+      }
+    },
+    "node_modules/@rolldown/binding-android-arm64": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.15.tgz",
+      "integrity": "sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@rolldown/binding-darwin-arm64": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.15.tgz",
+      "integrity": "sha512-oArR/ig8wNTPYsXL+Mzhs0oxhxfuHRfG7Ikw7jXsw8mYOtk71W0OkF2VEVh699pdmzjPQsTjlD1JIOoHkLP1Fg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@rolldown/binding-darwin-x64": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.15.tgz",
+      "integrity": "sha512-YzeVqOqjPYvUbJSWJ4EDL8ahbmsIXQpgL3JVipmN+MX0XnXMeWomLN3Fb+nwCmP/jfyqte5I3XRSm7OfQrbyxw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@rolldown/binding-freebsd-x64": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.15.tgz",
+      "integrity": "sha512-9Erhx956jeQ0nNTyif1+QWAXDRD38ZNjr//bSHrt6wDwB+QkAfl2q6Mn1k6OBPerznjRmbM10lgRb1Pli4xZPw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@rolldown/binding-linux-arm-gnueabihf": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.15.tgz",
+      "integrity": "sha512-cVwk0w8QbZJGTnP/AHQBs5yNwmpgGYStL88t4UIaqcvYJWBfS0s3oqVLZPwsPU6M0zlW4GqjP0Zq5MnAGwFeGA==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@rolldown/binding-linux-arm64-gnu": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.15.tgz",
+      "integrity": "sha512-eBZ/u8iAK9SoHGanqe/jrPnY0JvBN6iXbVOsbO38mbz+ZJsaobExAm1Iu+rxa4S1l2FjG0qEZn4Rc6X8n+9M+w==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "libc": [
+        "glibc"
+      ],
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@rolldown/binding-linux-arm64-musl": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.15.tgz",
+      "integrity": "sha512-ZvRYMGrAklV9PEkgt4LQM6MjQX2P58HPAuecwYObY2DhS2t35R0I810bKi0wmaYORt6m/2Sm+Z+nFgb0WhXNcQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "libc": [
+        "musl"
+      ],
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@rolldown/binding-linux-ppc64-gnu": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.15.tgz",
+      "integrity": "sha512-VDpgGBzgfg5hLg+uBpCLoFG5kVvEyafmfxGUV0UHLcL5irxAK7PKNeC2MwClgk6ZAiNhmo9FLhRYgvMmedLtnQ==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "libc": [
+        "glibc"
+      ],
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@rolldown/binding-linux-s390x-gnu": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.15.tgz",
+      "integrity": "sha512-y1uXY3qQWCzcPgRJATPSOUP4tCemh4uBdY7e3EZbVwCJTY3gLJWnQABgeUetvED+bt1FQ01OeZwvhLS2bpNrAQ==",
+      "cpu": [
+        "s390x"
+      ],
+      "dev": true,
+      "libc": [
+        "glibc"
+      ],
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@rolldown/binding-linux-x64-gnu": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.15.tgz",
+      "integrity": "sha512-023bTPBod7J3Y/4fzAN6QtpkSABR0rigtrwaP+qSEabUh5zf6ELr9Nc7GujaROuPY3uwdSIXWrvhn1KxOvurWA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "libc": [
+        "glibc"
+      ],
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@rolldown/binding-linux-x64-musl": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.15.tgz",
+      "integrity": "sha512-witB2O0/hU4CgfOOKUoeFgQ4GktPi1eEbAhaLAIpgD6+ZnhcPkUtPsoKKHRzmOoWPZue46IThdSgdo4XneOLYw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "libc": [
+        "musl"
+      ],
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@rolldown/binding-openharmony-arm64": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.15.tgz",
+      "integrity": "sha512-UCL68NJ0Ud5zRipXZE9dF5PmirzJE4E4BCIOOssEnM7wLDsxjc6Qb0sGDxTNRTP53I6MZpygyCpY8Aa8sPfKPg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "openharmony"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@rolldown/binding-wasm32-wasi": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.15.tgz",
+      "integrity": "sha512-ApLruZq/ig+nhaE7OJm4lDjayUnOHVUa77zGeqnqZ9pn0ovdVbbNPerVibLXDmWeUZXjIYIT8V3xkT58Rm9u5Q==",
+      "cpu": [
+        "wasm32"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "@emnapi/core": "1.9.2",
+        "@emnapi/runtime": "1.9.2",
+        "@napi-rs/wasm-runtime": "^1.1.3"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      }
+    },
+    "node_modules/@rolldown/binding-win32-arm64-msvc": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.15.tgz",
+      "integrity": "sha512-KmoUoU7HnN+Si5YWJigfTws1jz1bKBYDQKdbLspz0UaqjjFkddHsqorgiW1mxcAj88lYUE6NC/zJNwT+SloqtA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@rolldown/binding-win32-x64-msvc": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.15.tgz",
+      "integrity": "sha512-3P2A8L+x75qavWLe/Dll3EYBJLQmtkJN8rfh+U/eR3MqMgL/h98PhYI+JFfXuDPgPeCB7iZAKiqii5vqOvnA0g==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@rolldown/pluginutils": {
+      "version": "1.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.7.tgz",
+      "integrity": "sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@tanstack/query-core": {
+      "version": "5.99.0",
+      "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.99.0.tgz",
+      "integrity": "sha512-3Jv3WQG0BCcH7G+7lf/bP8QyBfJOXeY+T08Rin3GZ1bshvwlbPt7NrDHMEzGdKIOmOzvIQmxjk28YEQX60k7pQ==",
+      "license": "MIT",
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/tannerlinsley"
+      }
+    },
+    "node_modules/@tanstack/react-query": {
+      "version": "5.99.0",
+      "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.99.0.tgz",
+      "integrity": "sha512-OY2bCqPemT1LlqJ8Y2CUau4KELnIhhG9Ol3ZndPbdnB095pRbPo1cHuXTndg8iIwtoHTgwZjyaDnQ0xD0mYwAw==",
+      "license": "MIT",
+      "dependencies": {
+        "@tanstack/query-core": "5.99.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/tannerlinsley"
+      },
+      "peerDependencies": {
+        "react": "^18 || ^19"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT"
+    },
+    "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,
+      "license": "MIT"
+    },
+    "node_modules/@types/node": {
+      "version": "24.12.2",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.2.tgz",
+      "integrity": "sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "undici-types": "~7.16.0"
+      }
+    },
+    "node_modules/@types/react": {
+      "version": "19.2.14",
+      "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz",
+      "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==",
+      "dev": true,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "peerDependencies": {
+        "@types/react": "^19.2.0"
+      }
+    },
+    "node_modules/@typescript-eslint/eslint-plugin": {
+      "version": "8.58.2",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.2.tgz",
+      "integrity": "sha512-aC2qc5thQahutKjP+cl8cgN9DWe3ZUqVko30CMSZHnFEHyhOYoZSzkGtAI2mcwZ38xeImDucI4dnqsHiOYuuCw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@eslint-community/regexpp": "^4.12.2",
+        "@typescript-eslint/scope-manager": "8.58.2",
+        "@typescript-eslint/type-utils": "8.58.2",
+        "@typescript-eslint/utils": "8.58.2",
+        "@typescript-eslint/visitor-keys": "8.58.2",
+        "ignore": "^7.0.5",
+        "natural-compare": "^1.4.0",
+        "ts-api-utils": "^2.5.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.58.2",
+        "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
+        "typescript": ">=4.8.4 <6.1.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,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/@typescript-eslint/parser": {
+      "version": "8.58.2",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.2.tgz",
+      "integrity": "sha512-/Zb/xaIDfxeJnvishjGdcR4jmr7S+bda8PKNhRGdljDM+elXhlvN0FyPSsMnLmJUrVG9aPO6dof80wjMawsASg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/scope-manager": "8.58.2",
+        "@typescript-eslint/types": "8.58.2",
+        "@typescript-eslint/typescript-estree": "8.58.2",
+        "@typescript-eslint/visitor-keys": "8.58.2",
+        "debug": "^4.4.3"
+      },
+      "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 || ^10.0.0",
+        "typescript": ">=4.8.4 <6.1.0"
+      }
+    },
+    "node_modules/@typescript-eslint/project-service": {
+      "version": "8.58.2",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.2.tgz",
+      "integrity": "sha512-Cq6UfpZZk15+r87BkIh5rDpi38W4b+Sjnb8wQCPPDDweS/LRCFjCyViEbzHk5Ck3f2QDfgmlxqSa7S7clDtlfg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/tsconfig-utils": "^8.58.2",
+        "@typescript-eslint/types": "^8.58.2",
+        "debug": "^4.4.3"
+      },
+      "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.1.0"
+      }
+    },
+    "node_modules/@typescript-eslint/scope-manager": {
+      "version": "8.58.2",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.2.tgz",
+      "integrity": "sha512-SgmyvDPexWETQek+qzZnrG6844IaO02UVyOLhI4wpo82dpZJY9+6YZCKAMFzXb7qhx37mFK1QcPQ18tud+vo6Q==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/types": "8.58.2",
+        "@typescript-eslint/visitor-keys": "8.58.2"
+      },
+      "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.58.2",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.2.tgz",
+      "integrity": "sha512-3SR+RukipDvkkKp/d0jP0dyzuls3DbGmwDpVEc5wqk5f38KFThakqAAO0XMirWAE+kT00oTauTbzMFGPoAzB0A==",
+      "dev": true,
+      "license": "MIT",
+      "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.1.0"
+      }
+    },
+    "node_modules/@typescript-eslint/type-utils": {
+      "version": "8.58.2",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.2.tgz",
+      "integrity": "sha512-Z7EloNR/B389FvabdGeTo2XMs4W9TjtPiO9DAsmT0yom0bwlPyRjkJ1uCdW1DvrrrYP50AJZ9Xc3sByZA9+dcg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/types": "8.58.2",
+        "@typescript-eslint/typescript-estree": "8.58.2",
+        "@typescript-eslint/utils": "8.58.2",
+        "debug": "^4.4.3",
+        "ts-api-utils": "^2.5.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 || ^10.0.0",
+        "typescript": ">=4.8.4 <6.1.0"
+      }
+    },
+    "node_modules/@typescript-eslint/types": {
+      "version": "8.58.2",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.2.tgz",
+      "integrity": "sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ==",
+      "dev": true,
+      "license": "MIT",
+      "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.58.2",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.2.tgz",
+      "integrity": "sha512-ELGuoofuhhoCvNbQjFFiobFcGgcDCEm0ThWdmO4Z0UzLqPXS3KFvnEZ+SHewwOYHjM09tkzOWXNTv9u6Gqtyuw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/project-service": "8.58.2",
+        "@typescript-eslint/tsconfig-utils": "8.58.2",
+        "@typescript-eslint/types": "8.58.2",
+        "@typescript-eslint/visitor-keys": "8.58.2",
+        "debug": "^4.4.3",
+        "minimatch": "^10.2.2",
+        "semver": "^7.7.3",
+        "tinyglobby": "^0.2.15",
+        "ts-api-utils": "^2.5.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.1.0"
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+      "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "18 || 20 || >=22"
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+      "version": "5.0.5",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz",
+      "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^4.0.2"
+      },
+      "engines": {
+        "node": "18 || 20 || >=22"
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+      "version": "10.2.5",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
+      "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
+      "dev": true,
+      "license": "BlueOak-1.0.0",
+      "dependencies": {
+        "brace-expansion": "^5.0.5"
+      },
+      "engines": {
+        "node": "18 || 20 || >=22"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+      "version": "7.7.4",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+      "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@typescript-eslint/utils": {
+      "version": "8.58.2",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.2.tgz",
+      "integrity": "sha512-QZfjHNEzPY8+l0+fIXMvuQ2sJlplB4zgDZvA+NmvZsZv3EQwOcc1DuIU1VJUTWZ/RKouBMhDyNaBMx4sWvrzRA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@eslint-community/eslint-utils": "^4.9.1",
+        "@typescript-eslint/scope-manager": "8.58.2",
+        "@typescript-eslint/types": "8.58.2",
+        "@typescript-eslint/typescript-estree": "8.58.2"
+      },
+      "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 || ^10.0.0",
+        "typescript": ">=4.8.4 <6.1.0"
+      }
+    },
+    "node_modules/@typescript-eslint/visitor-keys": {
+      "version": "8.58.2",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.2.tgz",
+      "integrity": "sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/types": "8.58.2",
+        "eslint-visitor-keys": "^5.0.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/visitor-keys/node_modules/eslint-visitor-keys": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
+      "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^20.19.0 || ^22.13.0 || >=24"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/@vitejs/plugin-react": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.1.tgz",
+      "integrity": "sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@rolldown/pluginutils": "1.0.0-rc.7"
+      },
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      },
+      "peerDependencies": {
+        "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0",
+        "babel-plugin-react-compiler": "^1.0.0",
+        "vite": "^8.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@rolldown/plugin-babel": {
+          "optional": true
+        },
+        "babel-plugin-react-compiler": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/acorn": {
+      "version": "8.16.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+      "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
+      "dev": true,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "peerDependencies": {
+        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+      }
+    },
+    "node_modules/ajv": {
+      "version": "6.14.0",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
+      "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
+      "dev": true,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "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,
+      "license": "Python-2.0"
+    },
+    "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,
+      "license": "MIT"
+    },
+    "node_modules/baseline-browser-mapping": {
+      "version": "2.10.19",
+      "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.19.tgz",
+      "integrity": "sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "bin": {
+        "baseline-browser-mapping": "dist/cli.cjs"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.14",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+      "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/browserslist": {
+      "version": "4.28.2",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz",
+      "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==",
+      "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"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "baseline-browser-mapping": "^2.10.12",
+        "caniuse-lite": "^1.0.30001782",
+        "electron-to-chromium": "^1.5.328",
+        "node-releases": "^2.0.36",
+        "update-browserslist-db": "^1.2.3"
+      },
+      "bin": {
+        "browserslist": "cli.js"
+      },
+      "engines": {
+        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/caniuse-lite": {
+      "version": "1.0.30001788",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001788.tgz",
+      "integrity": "sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==",
+      "dev": true,
+      "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"
+        }
+      ],
+      "license": "CC-BY-4.0"
+    },
+    "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,
+      "license": "MIT",
+      "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/clsx": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+      "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT"
+    },
+    "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,
+      "license": "MIT"
+    },
+    "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,
+      "license": "MIT"
+    },
+    "node_modules/cookie": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz",
+      "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/express"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT"
+    },
+    "node_modules/debug": {
+      "version": "4.4.3",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+      "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+      "dev": true,
+      "license": "MIT",
+      "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,
+      "license": "MIT"
+    },
+    "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==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/electron-to-chromium": {
+      "version": "1.5.338",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.338.tgz",
+      "integrity": "sha512-KVQQ3xko9/coDX3qXLUEEbqkKT8L+1DyAovrtu0Khtrt9wjSZ+7CZV4GVzxFy9Oe1NbrIU1oVXCwHJruIA1PNg==",
+      "dev": true,
+      "license": "ISC"
+    },
+    "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/eslint": {
+      "version": "9.39.4",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz",
+      "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@eslint-community/eslint-utils": "^4.8.0",
+        "@eslint-community/regexpp": "^4.12.1",
+        "@eslint/config-array": "^0.21.2",
+        "@eslint/config-helpers": "^0.4.2",
+        "@eslint/core": "^0.17.0",
+        "@eslint/eslintrc": "^3.3.5",
+        "@eslint/js": "9.39.4",
+        "@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.14.0",
+        "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.5",
+        "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-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,
+      "license": "MIT",
+      "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-refresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.5.2.tgz",
+      "integrity": "sha512-hmgTH57GfzoTFjVN0yBwTggnsVUF2tcqi7RJZHqi9lIezSs4eFyAMktA68YD4r5kNw1mxyY4dmkyoFDb3FIqrA==",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "eslint": "^9 || ^10"
+      }
+    },
+    "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,
+      "license": "BSD-2-Clause",
+      "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,
+      "license": "Apache-2.0",
+      "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,
+      "license": "BSD-2-Clause",
+      "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.7.0",
+      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
+      "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "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,
+      "license": "BSD-2-Clause",
+      "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,
+      "license": "BSD-2-Clause",
+      "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,
+      "license": "BSD-2-Clause",
+      "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,
+      "license": "MIT"
+    },
+    "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,
+      "license": "MIT"
+    },
+    "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,
+      "license": "MIT"
+    },
+    "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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "peerDependencies": {
+        "picomatch": "^3 || ^4"
+      },
+      "peerDependenciesMeta": {
+        "picomatch": {
+          "optional": true
+        }
+      }
+    },
+    "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,
+      "license": "MIT",
+      "dependencies": {
+        "flat-cache": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=16.0.0"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "dependencies": {
+        "flatted": "^3.2.9",
+        "keyv": "^4.5.4"
+      },
+      "engines": {
+        "node": ">=16"
+      }
+    },
+    "node_modules/flatted": {
+      "version": "3.4.2",
+      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
+      "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "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,
+      "license": "ISC",
+      "dependencies": {
+        "is-glob": "^4.0.3"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/globals": {
+      "version": "17.5.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-17.5.0.tgz",
+      "integrity": "sha512-qoV+HK2yFl/366t2/Cb3+xxPUo5BuMynomoDmiaZBIdbs+0pYbjfZU+twLhGKp4uCZ/+NbtpVepH5bGCxRyy2g==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "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,
+      "license": "MIT"
+    },
+    "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.19"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+      "dev": true,
+      "license": "ISC"
+    },
+    "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,
+      "license": "MIT"
+    },
+    "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT"
+    },
+    "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,
+      "license": "MIT"
+    },
+    "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,
+      "license": "MIT"
+    },
+    "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,
+      "license": "MIT",
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "dependencies": {
+        "json-buffer": "3.0.1"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "dependencies": {
+        "prelude-ls": "^1.2.1",
+        "type-check": "~0.4.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/lightningcss": {
+      "version": "1.32.0",
+      "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz",
+      "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==",
+      "dev": true,
+      "license": "MPL-2.0",
+      "dependencies": {
+        "detect-libc": "^2.0.3"
+      },
+      "engines": {
+        "node": ">= 12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      },
+      "optionalDependencies": {
+        "lightningcss-android-arm64": "1.32.0",
+        "lightningcss-darwin-arm64": "1.32.0",
+        "lightningcss-darwin-x64": "1.32.0",
+        "lightningcss-freebsd-x64": "1.32.0",
+        "lightningcss-linux-arm-gnueabihf": "1.32.0",
+        "lightningcss-linux-arm64-gnu": "1.32.0",
+        "lightningcss-linux-arm64-musl": "1.32.0",
+        "lightningcss-linux-x64-gnu": "1.32.0",
+        "lightningcss-linux-x64-musl": "1.32.0",
+        "lightningcss-win32-arm64-msvc": "1.32.0",
+        "lightningcss-win32-x64-msvc": "1.32.0"
+      }
+    },
+    "node_modules/lightningcss-android-arm64": {
+      "version": "1.32.0",
+      "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz",
+      "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MPL-2.0",
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">= 12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      }
+    },
+    "node_modules/lightningcss-darwin-arm64": {
+      "version": "1.32.0",
+      "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz",
+      "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MPL-2.0",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">= 12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      }
+    },
+    "node_modules/lightningcss-darwin-x64": {
+      "version": "1.32.0",
+      "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz",
+      "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MPL-2.0",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">= 12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      }
+    },
+    "node_modules/lightningcss-freebsd-x64": {
+      "version": "1.32.0",
+      "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz",
+      "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MPL-2.0",
+      "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.32.0",
+      "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz",
+      "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MPL-2.0",
+      "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.32.0",
+      "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz",
+      "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "libc": [
+        "glibc"
+      ],
+      "license": "MPL-2.0",
+      "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.32.0",
+      "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz",
+      "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "libc": [
+        "musl"
+      ],
+      "license": "MPL-2.0",
+      "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.32.0",
+      "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz",
+      "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "libc": [
+        "glibc"
+      ],
+      "license": "MPL-2.0",
+      "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.32.0",
+      "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz",
+      "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "libc": [
+        "musl"
+      ],
+      "license": "MPL-2.0",
+      "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.32.0",
+      "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz",
+      "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MPL-2.0",
+      "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.32.0",
+      "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz",
+      "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MPL-2.0",
+      "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT"
+    },
+    "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,
+      "license": "ISC",
+      "dependencies": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+      "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "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,
+      "license": "MIT"
+    },
+    "node_modules/nanoid": {
+      "version": "3.3.11",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+      "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "MIT",
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "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,
+      "license": "MIT"
+    },
+    "node_modules/node-releases": {
+      "version": "2.0.37",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz",
+      "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/optionator": {
+      "version": "0.9.4",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+      "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+      "dev": true,
+      "license": "MIT",
+      "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/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,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/picocolors": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+      "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/picomatch": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+      "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/postcss": {
+      "version": "8.5.10",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.10.tgz",
+      "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==",
+      "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"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "nanoid": "^3.3.11",
+        "picocolors": "^1.1.1",
+        "source-map-js": "^1.2.1"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/react": {
+      "version": "19.2.5",
+      "resolved": "https://registry.npmjs.org/react/-/react-19.2.5.tgz",
+      "integrity": "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/react-dom": {
+      "version": "19.2.5",
+      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.5.tgz",
+      "integrity": "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==",
+      "license": "MIT",
+      "dependencies": {
+        "scheduler": "^0.27.0"
+      },
+      "peerDependencies": {
+        "react": "^19.2.5"
+      }
+    },
+    "node_modules/react-router": {
+      "version": "7.14.1",
+      "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.14.1.tgz",
+      "integrity": "sha512-5BCvFskyAAVumqhEKh/iPhLOIkfxcEUz8WqFIARCkMg8hZZzDYX9CtwxXA0e+qT8zAxmMC0x3Ckb9iMONwc5jg==",
+      "license": "MIT",
+      "dependencies": {
+        "cookie": "^1.0.1",
+        "set-cookie-parser": "^2.6.0"
+      },
+      "engines": {
+        "node": ">=20.0.0"
+      },
+      "peerDependencies": {
+        "react": ">=18",
+        "react-dom": ">=18"
+      },
+      "peerDependenciesMeta": {
+        "react-dom": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/react-router-dom": {
+      "version": "7.14.1",
+      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.14.1.tgz",
+      "integrity": "sha512-ZkrQuwwhGibjQLqH1eCdyiZyLWglPxzxdl5tgwgKEyCSGC76vmAjleGocRe3J/MLfzMUIKwaFJWpFVJhK3d2xA==",
+      "license": "MIT",
+      "dependencies": {
+        "react-router": "7.14.1"
+      },
+      "engines": {
+        "node": ">=20.0.0"
+      },
+      "peerDependencies": {
+        "react": ">=18",
+        "react-dom": ">=18"
+      }
+    },
+    "node_modules/react-toastify": {
+      "version": "11.1.0",
+      "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-11.1.0.tgz",
+      "integrity": "sha512-e9h23x3phN0wbFeB6yovmWp7lobzV4CaCH0LO8nVP6H7Y+3GbcLpIzMm9dJhcp1RXbpyfvjgpfXqO80QAmn7sg==",
+      "license": "MIT",
+      "dependencies": {
+        "clsx": "^2.1.1"
+      },
+      "peerDependencies": {
+        "react": "^18 || ^19",
+        "react-dom": "^18 || ^19"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/rolldown": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.15.tgz",
+      "integrity": "sha512-Ff31guA5zT6WjnGp0SXw76X6hzGRk/OQq2hE+1lcDe+lJdHSgnSX6nK3erbONHyCbpSj9a9E+uX/OvytZoWp2g==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@oxc-project/types": "=0.124.0",
+        "@rolldown/pluginutils": "1.0.0-rc.15"
+      },
+      "bin": {
+        "rolldown": "bin/cli.mjs"
+      },
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      },
+      "optionalDependencies": {
+        "@rolldown/binding-android-arm64": "1.0.0-rc.15",
+        "@rolldown/binding-darwin-arm64": "1.0.0-rc.15",
+        "@rolldown/binding-darwin-x64": "1.0.0-rc.15",
+        "@rolldown/binding-freebsd-x64": "1.0.0-rc.15",
+        "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.15",
+        "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.15",
+        "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.15",
+        "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.15",
+        "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.15",
+        "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.15",
+        "@rolldown/binding-linux-x64-musl": "1.0.0-rc.15",
+        "@rolldown/binding-openharmony-arm64": "1.0.0-rc.15",
+        "@rolldown/binding-wasm32-wasi": "1.0.0-rc.15",
+        "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.15",
+        "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.15"
+      }
+    },
+    "node_modules/rolldown/node_modules/@rolldown/pluginutils": {
+      "version": "1.0.0-rc.15",
+      "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.15.tgz",
+      "integrity": "sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "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==",
+      "license": "MIT"
+    },
+    "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,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/set-cookie-parser": {
+      "version": "2.7.2",
+      "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz",
+      "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==",
+      "license": "MIT"
+    },
+    "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,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "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==",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/tinyglobby": {
+      "version": "0.2.16",
+      "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz",
+      "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "fdir": "^6.5.0",
+        "picomatch": "^4.0.4"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/SuperchupuDev"
+      }
+    },
+    "node_modules/ts-api-utils": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz",
+      "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=18.12"
+      },
+      "peerDependencies": {
+        "typescript": ">=4.8.4"
+      }
+    },
+    "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==",
+      "dev": true,
+      "license": "0BSD",
+      "optional": true
+    },
+    "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,
+      "license": "MIT",
+      "dependencies": {
+        "prelude-ls": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/typescript": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz",
+      "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "bin": {
+        "tsc": "bin/tsc",
+        "tsserver": "bin/tsserver"
+      },
+      "engines": {
+        "node": ">=14.17"
+      }
+    },
+    "node_modules/typescript-eslint": {
+      "version": "8.58.2",
+      "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.2.tgz",
+      "integrity": "sha512-V8iSng9mRbdZjl54VJ9NKr6ZB+dW0J3TzRXRGcSbLIej9jV86ZRtlYeTKDR/QLxXykocJ5icNzbsl2+5TzIvcQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/eslint-plugin": "8.58.2",
+        "@typescript-eslint/parser": "8.58.2",
+        "@typescript-eslint/typescript-estree": "8.58.2",
+        "@typescript-eslint/utils": "8.58.2"
+      },
+      "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 || ^10.0.0",
+        "typescript": ">=4.8.4 <6.1.0"
+      }
+    },
+    "node_modules/undici-types": {
+      "version": "7.16.0",
+      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
+      "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "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"
+        }
+      ],
+      "license": "MIT",
+      "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,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "node_modules/vite": {
+      "version": "8.0.8",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.8.tgz",
+      "integrity": "sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "lightningcss": "^1.32.0",
+        "picomatch": "^4.0.4",
+        "postcss": "^8.5.8",
+        "rolldown": "1.0.0-rc.15",
+        "tinyglobby": "^0.2.15"
+      },
+      "bin": {
+        "vite": "bin/vite.js"
+      },
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      },
+      "funding": {
+        "url": "https://github.com/vitejs/vite?sponsor=1"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.3"
+      },
+      "peerDependencies": {
+        "@types/node": "^20.19.0 || >=22.12.0",
+        "@vitejs/devtools": "^0.1.0",
+        "esbuild": "^0.27.0 || ^0.28.0",
+        "jiti": ">=1.21.0",
+        "less": "^4.0.0",
+        "sass": "^1.70.0",
+        "sass-embedded": "^1.70.0",
+        "stylus": ">=0.54.8",
+        "sugarss": "^5.0.0",
+        "terser": "^5.16.0",
+        "tsx": "^4.8.1",
+        "yaml": "^2.4.2"
+      },
+      "peerDependenciesMeta": {
+        "@types/node": {
+          "optional": true
+        },
+        "@vitejs/devtools": {
+          "optional": true
+        },
+        "esbuild": {
+          "optional": true
+        },
+        "jiti": {
+          "optional": true
+        },
+        "less": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        },
+        "sass-embedded": {
+          "optional": true
+        },
+        "stylus": {
+          "optional": true
+        },
+        "sugarss": {
+          "optional": true
+        },
+        "terser": {
+          "optional": true
+        },
+        "tsx": {
+          "optional": true
+        },
+        "yaml": {
+          "optional": true
+        }
+      }
+    },
+    "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,
+      "license": "ISC",
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "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,
+      "license": "MIT",
+      "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,
+      "license": "ISC"
+    },
+    "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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/zod": {
+      "version": "4.3.6",
+      "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz",
+      "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
+      "dev": true,
+      "license": "MIT",
+      "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,
+      "license": "MIT",
+      "engines": {
+        "node": ">=18.0.0"
+      },
+      "peerDependencies": {
+        "zod": "^3.25.0 || ^4.0.0"
+      }
+    }
+  }
+}
 
package.json (added)
+++ package.json
@@ -0,0 +1,34 @@
+{
+  "name": "base-react",
+  "private": true,
+  "version": "0.0.0",
+  "type": "module",
+  "scripts": {
+    "dev": "vite",
+    "build": "tsc -b && vite build",
+    "build:watch": "vite build --watch",
+    "lint": "eslint .",
+    "preview": "vite preview"
+  },
+  "dependencies": {
+    "@tanstack/react-query": "^5.99.0",
+    "react": "^19.2.4",
+    "react-dom": "^19.2.4",
+    "react-router-dom": "^7.14.1",
+    "react-toastify": "^11.1.0"
+  },
+  "devDependencies": {
+    "@eslint/js": "^9.39.4",
+    "@types/node": "^24.12.2",
+    "@types/react": "^19.2.14",
+    "@types/react-dom": "^19.2.3",
+    "@vitejs/plugin-react": "^6.0.1",
+    "eslint": "^9.39.4",
+    "eslint-plugin-react-hooks": "^7.0.1",
+    "eslint-plugin-react-refresh": "^0.5.2",
+    "globals": "^17.4.0",
+    "typescript": "~6.0.2",
+    "typescript-eslint": "^8.58.0",
+    "vite": "^8.0.4"
+  }
+}
 
public/publish/adm/images/common/icon_leftmenu_on.png (Binary) (added)
+++ public/publish/adm/images/common/icon_leftmenu_on.png
Binary file is not shown
 
public/publish/adm/images/common/icon_leftmenu_open.png (Binary) (added)
+++ public/publish/adm/images/common/icon_leftmenu_open.png
Binary file is not shown
 
public/publish/adm/images/component/icon_alram.png (Binary) (added)
+++ public/publish/adm/images/component/icon_alram.png
Binary file is not shown
 
public/publish/adm/images/component/icon_arrow_down.png (Binary) (added)
+++ public/publish/adm/images/component/icon_arrow_down.png
Binary file is not shown
 
public/publish/adm/images/component/icon_arrow_left.png (Binary) (added)
+++ public/publish/adm/images/component/icon_arrow_left.png
Binary file is not shown
 
public/publish/adm/images/component/icon_arrow_left_page.png (Binary) (added)
+++ public/publish/adm/images/component/icon_arrow_left_page.png
Binary file is not shown
 
public/publish/adm/images/component/icon_arrow_right.png (Binary) (added)
+++ public/publish/adm/images/component/icon_arrow_right.png
Binary file is not shown
 
public/publish/adm/images/component/icon_arrow_right_gray_24.png (Binary) (added)
+++ public/publish/adm/images/component/icon_arrow_right_gray_24.png
Binary file is not shown
 
public/publish/adm/images/component/icon_arrow_right_page.png (Binary) (added)
+++ public/publish/adm/images/component/icon_arrow_right_page.png
Binary file is not shown
 
public/publish/adm/images/component/icon_arrow_up.png (Binary) (added)
+++ public/publish/adm/images/component/icon_arrow_up.png
Binary file is not shown
 
public/publish/adm/images/component/icon_calendar.png (Binary) (added)
+++ public/publish/adm/images/component/icon_calendar.png
Binary file is not shown
 
public/publish/adm/images/component/icon_clock.png (Binary) (added)
+++ public/publish/adm/images/component/icon_clock.png
Binary file is not shown
 
public/publish/adm/images/component/icon_comment.png (Binary) (added)
+++ public/publish/adm/images/component/icon_comment.png
Binary file is not shown
 
public/publish/adm/images/component/icon_double_arrow_left_page.png (Binary) (added)
+++ public/publish/adm/images/component/icon_double_arrow_left_page.png
Binary file is not shown
 
public/publish/adm/images/component/icon_double_arrow_right_page.png (Binary) (added)
+++ public/publish/adm/images/component/icon_double_arrow_right_page.png
Binary file is not shown
 
public/publish/adm/images/component/icon_excel.png (Binary) (added)
+++ public/publish/adm/images/component/icon_excel.png
Binary file is not shown
 
public/publish/adm/images/component/icon_excel_download.png (Binary) (added)
+++ public/publish/adm/images/component/icon_excel_download.png
Binary file is not shown
 
public/publish/adm/images/component/icon_excel_upload.png (Binary) (added)
+++ public/publish/adm/images/component/icon_excel_upload.png
Binary file is not shown
 
public/publish/adm/images/component/icon_file.png (Binary) (added)
+++ public/publish/adm/images/component/icon_file.png
Binary file is not shown
 
public/publish/adm/images/component/icon_file_blue.png (Binary) (added)
+++ public/publish/adm/images/component/icon_file_blue.png
Binary file is not shown
 
public/publish/adm/images/component/icon_file_table.png (Binary) (added)
+++ public/publish/adm/images/component/icon_file_table.png
Binary file is not shown
 
public/publish/adm/images/component/icon_folder.png (Binary) (added)
+++ public/publish/adm/images/component/icon_folder.png
Binary file is not shown
 
public/publish/adm/images/component/icon_folder_open.png (Binary) (added)
+++ public/publish/adm/images/component/icon_folder_open.png
Binary file is not shown
 
public/publish/adm/images/component/icon_home.png (Binary) (added)
+++ public/publish/adm/images/component/icon_home.png
Binary file is not shown
 
public/publish/adm/images/component/icon_ip.png (Binary) (added)
+++ public/publish/adm/images/component/icon_ip.png
Binary file is not shown
 
public/publish/adm/images/component/icon_lock.png (Binary) (added)
+++ public/publish/adm/images/component/icon_lock.png
Binary file is not shown
 
public/publish/adm/images/component/icon_new.png (Binary) (added)
+++ public/publish/adm/images/component/icon_new.png
Binary file is not shown
 
public/publish/adm/images/component/icon_note.png (Binary) (added)
+++ public/publish/adm/images/component/icon_note.png
Binary file is not shown
 
public/publish/adm/images/component/icon_plus.png (Binary) (added)
+++ public/publish/adm/images/component/icon_plus.png
Binary file is not shown
 
public/publish/adm/images/component/icon_print.png (Binary) (added)
+++ public/publish/adm/images/component/icon_print.png
Binary file is not shown
 
public/publish/adm/images/component/icon_x.png (Binary) (added)
+++ public/publish/adm/images/component/icon_x.png
Binary file is not shown
 
public/publish/adm/images/component/icon_x_red.png (Binary) (added)
+++ public/publish/adm/images/component/icon_x_red.png
Binary file is not shown
 
public/publish/adm/images/component/icon_x_white.png (Binary) (added)
+++ public/publish/adm/images/component/icon_x_white.png
Binary file is not shown
 
public/publish/adm/images/content/login_bg_left.png (Binary) (added)
+++ public/publish/adm/images/content/login_bg_left.png
Binary file is not shown
 
public/publish/adm/images/content/login_bg_right.png (Binary) (added)
+++ public/publish/adm/images/content/login_bg_right.png
Binary file is not shown
 
public/publish/adm/images/content/login_img.jpg (Binary) (added)
+++ public/publish/adm/images/content/login_img.jpg
Binary file is not shown
 
public/publish/adm/images/content/no_img.jpg (Binary) (added)
+++ public/publish/adm/images/content/no_img.jpg
Binary file is not shown
 
public/publish/adm/images/login/login.jpg (Binary) (added)
+++ public/publish/adm/images/login/login.jpg
Binary file is not shown
 
public/publish/adm/images/login/login_bg_left.png (Binary) (added)
+++ public/publish/adm/images/login/login_bg_left.png
Binary file is not shown
 
public/publish/adm/images/login/login_bg_right.png (Binary) (added)
+++ public/publish/adm/images/login/login_bg_right.png
Binary file is not shown
 
public/publish/usr/images/common/home.png (Binary) (added)
+++ public/publish/usr/images/common/home.png
Binary file is not shown
 
public/publish/usr/images/common/lang.png (Binary) (added)
+++ public/publish/usr/images/common/lang.png
Binary file is not shown
 
public/publish/usr/images/common/lang_scrolled.png (Binary) (added)
+++ public/publish/usr/images/common/lang_scrolled.png
Binary file is not shown
 
public/publish/usr/images/common/logo.png (Binary) (added)
+++ public/publish/usr/images/common/logo.png
Binary file is not shown
 
public/publish/usr/images/common/menu.png (Binary) (added)
+++ public/publish/usr/images/common/menu.png
Binary file is not shown
 
public/publish/usr/images/common/menu_close.png (Binary) (added)
+++ public/publish/usr/images/common/menu_close.png
Binary file is not shown
 
public/publish/usr/images/common/menu_scrolled.png (Binary) (added)
+++ public/publish/usr/images/common/menu_scrolled.png
Binary file is not shown
 
public/publish/usr/images/common/no_images.jpg (Binary) (added)
+++ public/publish/usr/images/common/no_images.jpg
Binary file is not shown
 
public/publish/usr/images/common/search.png (Binary) (added)
+++ public/publish/usr/images/common/search.png
Binary file is not shown
 
public/publish/usr/images/common/sidemenu_nav_bg.png (Binary) (added)
+++ public/publish/usr/images/common/sidemenu_nav_bg.png
Binary file is not shown
 
public/publish/usr/images/common/sidemenu_title_bg.png (Binary) (added)
+++ public/publish/usr/images/common/sidemenu_title_bg.png
Binary file is not shown
 
public/publish/usr/images/common/sub_visual_nav_left.png (Binary) (added)
+++ public/publish/usr/images/common/sub_visual_nav_left.png
Binary file is not shown
 
public/publish/usr/images/common/sub_visual_nav_right.png (Binary) (added)
+++ public/publish/usr/images/common/sub_visual_nav_right.png
Binary file is not shown
 
public/publish/usr/images/community/visual.jpg (Binary) (added)
+++ public/publish/usr/images/community/visual.jpg
Binary file is not shown
 
public/publish/usr/images/company/card_01.png (Binary) (added)
+++ public/publish/usr/images/company/card_01.png
Binary file is not shown
 
public/publish/usr/images/company/card_02.png (Binary) (added)
+++ public/publish/usr/images/company/card_02.png
Binary file is not shown
 
public/publish/usr/images/company/card_03.png (Binary) (added)
+++ public/publish/usr/images/company/card_03.png
Binary file is not shown
 
public/publish/usr/images/company/card_04.png (Binary) (added)
+++ public/publish/usr/images/company/card_04.png
Binary file is not shown
 
public/publish/usr/images/company/content_bg.png (Binary) (added)
+++ public/publish/usr/images/company/content_bg.png
Binary file is not shown
 
public/publish/usr/images/company/corp_bg.png (Binary) (added)
+++ public/publish/usr/images/company/corp_bg.png
Binary file is not shown
 
public/publish/usr/images/company/history_img_01.png (Binary) (added)
+++ public/publish/usr/images/company/history_img_01.png
Binary file is not shown
 
public/publish/usr/images/company/history_img_02.png (Binary) (added)
+++ public/publish/usr/images/company/history_img_02.png
Binary file is not shown
 
public/publish/usr/images/company/obg_deco.png (Binary) (added)
+++ public/publish/usr/images/company/obg_deco.png
Binary file is not shown
 
public/publish/usr/images/company/visual.jpg (Binary) (added)
+++ public/publish/usr/images/company/visual.jpg
Binary file is not shown
 
public/publish/usr/images/company/visual_mobile.jpg (Binary) (added)
+++ public/publish/usr/images/company/visual_mobile.jpg
Binary file is not shown
 
public/publish/usr/images/component/arrow_bottom.png (Binary) (added)
+++ public/publish/usr/images/component/arrow_bottom.png
Binary file is not shown
 
public/publish/usr/images/component/arrow_left.png (Binary) (added)
+++ public/publish/usr/images/component/arrow_left.png
Binary file is not shown
 
public/publish/usr/images/component/arrow_right.png (Binary) (added)
+++ public/publish/usr/images/component/arrow_right.png
Binary file is not shown
 
public/publish/usr/images/component/arrow_top.png (Binary) (added)
+++ public/publish/usr/images/component/arrow_top.png
Binary file is not shown
 
public/publish/usr/images/component/email.png (Binary) (added)
+++ public/publish/usr/images/component/email.png
Binary file is not shown
 
public/publish/usr/images/component/fax.png (Binary) (added)
+++ public/publish/usr/images/component/fax.png
Binary file is not shown
 
public/publish/usr/images/component/icon_arrow_down.png (Binary) (added)
+++ public/publish/usr/images/component/icon_arrow_down.png
Binary file is not shown
 
public/publish/usr/images/component/icon_arrow_down_18.png (Binary) (added)
+++ public/publish/usr/images/component/icon_arrow_down_18.png
Binary file is not shown
 
public/publish/usr/images/component/icon_arrow_down_blue.png (Binary) (added)
+++ public/publish/usr/images/component/icon_arrow_down_blue.png
Binary file is not shown
 
public/publish/usr/images/component/icon_arrow_down_gray_18.png (Binary) (added)
+++ public/publish/usr/images/component/icon_arrow_down_gray_18.png
Binary file is not shown
 
public/publish/usr/images/component/icon_arrow_down_white.png (Binary) (added)
+++ public/publish/usr/images/component/icon_arrow_down_white.png
Binary file is not shown
 
public/publish/usr/images/component/icon_arrow_left_page.png (Binary) (added)
+++ public/publish/usr/images/component/icon_arrow_left_page.png
Binary file is not shown
 
public/publish/usr/images/component/icon_arrow_right_gray.png (Binary) (added)
+++ public/publish/usr/images/component/icon_arrow_right_gray.png
Binary file is not shown
 
public/publish/usr/images/component/icon_arrow_right_page.png (Binary) (added)
+++ public/publish/usr/images/component/icon_arrow_right_page.png
Binary file is not shown
 
public/publish/usr/images/component/icon_arrow_up_18.png (Binary) (added)
+++ public/publish/usr/images/component/icon_arrow_up_18.png
Binary file is not shown
 
public/publish/usr/images/component/icon_arrow_up_blue.png (Binary) (added)
+++ public/publish/usr/images/component/icon_arrow_up_blue.png
Binary file is not shown
 
public/publish/usr/images/component/icon_arrow_up_gray_18.png (Binary) (added)
+++ public/publish/usr/images/component/icon_arrow_up_gray_18.png
Binary file is not shown
 
public/publish/usr/images/component/icon_arrow_up_white.png (Binary) (added)
+++ public/publish/usr/images/component/icon_arrow_up_white.png
Binary file is not shown
 
public/publish/usr/images/component/icon_calendar.png (Binary) (added)
+++ public/publish/usr/images/component/icon_calendar.png
Binary file is not shown
 
public/publish/usr/images/component/icon_comment.png (Binary) (added)
+++ public/publish/usr/images/component/icon_comment.png
Binary file is not shown
 
public/publish/usr/images/component/icon_double_arrow_left_page.png (Binary) (added)
+++ public/publish/usr/images/component/icon_double_arrow_left_page.png
Binary file is not shown
 
public/publish/usr/images/component/icon_double_arrow_right_page.png (Binary) (added)
+++ public/publish/usr/images/component/icon_double_arrow_right_page.png
Binary file is not shown
 
public/publish/usr/images/component/icon_file.png (Binary) (added)
+++ public/publish/usr/images/component/icon_file.png
Binary file is not shown
 
public/publish/usr/images/component/icon_file_blue.png (Binary) (added)
+++ public/publish/usr/images/component/icon_file_blue.png
Binary file is not shown
 
public/publish/usr/images/component/icon_file_table.png (Binary) (added)
+++ public/publish/usr/images/component/icon_file_table.png
Binary file is not shown
 
public/publish/usr/images/component/icon_home.png (Binary) (added)
+++ public/publish/usr/images/component/icon_home.png
Binary file is not shown
 
public/publish/usr/images/component/icon_lock.png (Binary) (added)
+++ public/publish/usr/images/component/icon_lock.png
Binary file is not shown
 
public/publish/usr/images/component/icon_select.png (Binary) (added)
+++ public/publish/usr/images/component/icon_select.png
Binary file is not shown
 
public/publish/usr/images/component/icon_view.png (Binary) (added)
+++ public/publish/usr/images/component/icon_view.png
Binary file is not shown
 
public/publish/usr/images/component/icon_writer.png (Binary) (added)
+++ public/publish/usr/images/component/icon_writer.png
Binary file is not shown
 
public/publish/usr/images/component/icon_x.png (Binary) (added)
+++ public/publish/usr/images/component/icon_x.png
Binary file is not shown
 
public/publish/usr/images/component/icon_x_red.png (Binary) (added)
+++ public/publish/usr/images/component/icon_x_red.png
Binary file is not shown
 
public/publish/usr/images/component/icon_x_white.png (Binary) (added)
+++ public/publish/usr/images/component/icon_x_white.png
Binary file is not shown
 
public/publish/usr/images/component/list_circle.png (Binary) (added)
+++ public/publish/usr/images/component/list_circle.png
Binary file is not shown
 
public/publish/usr/images/component/list_square.png (Binary) (added)
+++ public/publish/usr/images/component/list_square.png
Binary file is not shown
 
public/publish/usr/images/component/location.png (Binary) (added)
+++ public/publish/usr/images/component/location.png
Binary file is not shown
 
public/publish/usr/images/component/phone.png (Binary) (added)
+++ public/publish/usr/images/component/phone.png
Binary file is not shown
 
public/publish/usr/images/component/step_next.png (Binary) (added)
+++ public/publish/usr/images/component/step_next.png
Binary file is not shown
 
public/publish/usr/images/main/box_blue.png (Binary) (added)
+++ public/publish/usr/images/main/box_blue.png
Binary file is not shown
 
public/publish/usr/images/main/box_purple.png (Binary) (added)
+++ public/publish/usr/images/main/box_purple.png
Binary file is not shown
 
public/publish/usr/images/main/box_skyblue.png (Binary) (added)
+++ public/publish/usr/images/main/box_skyblue.png
Binary file is not shown
 
public/publish/usr/images/main/btn_more.png (Binary) (added)
+++ public/publish/usr/images/main/btn_more.png
Binary file is not shown
 
public/publish/usr/images/main/icon_arrow_blue.png (Binary) (added)
+++ public/publish/usr/images/main/icon_arrow_blue.png
Binary file is not shown
 
public/publish/usr/images/main/icon_arrow_white.png (Binary) (added)
+++ public/publish/usr/images/main/icon_arrow_white.png
Binary file is not shown
 
public/publish/usr/images/main/icon_calendar.png (Binary) (added)
+++ public/publish/usr/images/main/icon_calendar.png
Binary file is not shown
 
public/publish/usr/images/main/icon_data.png (Binary) (added)
+++ public/publish/usr/images/main/icon_data.png
Binary file is not shown
 
public/publish/usr/images/main/icon_next.png (Binary) (added)
+++ public/publish/usr/images/main/icon_next.png
Binary file is not shown
 
public/publish/usr/images/main/icon_notice.png (Binary) (added)
+++ public/publish/usr/images/main/icon_notice.png
Binary file is not shown
 
public/publish/usr/images/main/icon_pause.png (Binary) (added)
+++ public/publish/usr/images/main/icon_pause.png
Binary file is not shown
 
public/publish/usr/images/main/icon_plus.png (Binary) (added)
+++ public/publish/usr/images/main/icon_plus.png
Binary file is not shown
 
public/publish/usr/images/main/icon_prev.png (Binary) (added)
+++ public/publish/usr/images/main/icon_prev.png
Binary file is not shown
 
public/publish/usr/images/main/icon_view.png (Binary) (added)
+++ public/publish/usr/images/main/icon_view.png
Binary file is not shown
 
public/publish/usr/images/main/icon_writer.png (Binary) (added)
+++ public/publish/usr/images/main/icon_writer.png
Binary file is not shown
 
public/publish/usr/images/main/visual01.jpg (Binary) (added)
+++ public/publish/usr/images/main/visual01.jpg
Binary file is not shown
 
public/publish/usr/images/main/visual02.jpg (Binary) (added)
+++ public/publish/usr/images/main/visual02.jpg
Binary file is not shown
 
public/publish/usr/images/main/visual03.jpg (Binary) (added)
+++ public/publish/usr/images/main/visual03.jpg
Binary file is not shown
 
public/publish/usr/images/major_result/cancer_1.png (Binary) (added)
+++ public/publish/usr/images/major_result/cancer_1.png
Binary file is not shown
 
public/publish/usr/images/major_result/cancer_2.png (Binary) (added)
+++ public/publish/usr/images/major_result/cancer_2.png
Binary file is not shown
 
public/publish/usr/images/major_result/ciliogenesis_1.png (Binary) (added)
+++ public/publish/usr/images/major_result/ciliogenesis_1.png
Binary file is not shown
 
public/publish/usr/images/major_result/ciliogenesis_2.png (Binary) (added)
+++ public/publish/usr/images/major_result/ciliogenesis_2.png
Binary file is not shown
 
public/publish/usr/images/major_result/ciliogenesis_3.png (Binary) (added)
+++ public/publish/usr/images/major_result/ciliogenesis_3.png
Binary file is not shown
 
public/publish/usr/images/major_result/melanophagy_1.png (Binary) (added)
+++ public/publish/usr/images/major_result/melanophagy_1.png
Binary file is not shown
 
public/publish/usr/images/major_result/melanophagy_2.png (Binary) (added)
+++ public/publish/usr/images/major_result/melanophagy_2.png
Binary file is not shown
 
public/publish/usr/images/major_result/melanophagy_3.png (Binary) (added)
+++ public/publish/usr/images/major_result/melanophagy_3.png
Binary file is not shown
 
public/publish/usr/images/major_result/melanophagy_4.png (Binary) (added)
+++ public/publish/usr/images/major_result/melanophagy_4.png
Binary file is not shown
 
public/publish/usr/images/major_result/mitophagy_1.png (Binary) (added)
+++ public/publish/usr/images/major_result/mitophagy_1.png
Binary file is not shown
 
public/publish/usr/images/major_result/mitophagy_2.png (Binary) (added)
+++ public/publish/usr/images/major_result/mitophagy_2.png
Binary file is not shown
 
public/publish/usr/images/major_result/mitophagy_3.png (Binary) (added)
+++ public/publish/usr/images/major_result/mitophagy_3.png
Binary file is not shown
 
public/publish/usr/images/major_result/mitophagy_4.png (Binary) (added)
+++ public/publish/usr/images/major_result/mitophagy_4.png
Binary file is not shown
 
public/publish/usr/images/major_result/mitophagy_5.png (Binary) (added)
+++ public/publish/usr/images/major_result/mitophagy_5.png
Binary file is not shown
 
public/publish/usr/images/major_result/pexophagy_1.png (Binary) (added)
+++ public/publish/usr/images/major_result/pexophagy_1.png
Binary file is not shown
 
public/publish/usr/images/major_result/pexophagy_2.png (Binary) (added)
+++ public/publish/usr/images/major_result/pexophagy_2.png
Binary file is not shown
 
public/publish/usr/images/major_result/pexophagy_3.png (Binary) (added)
+++ public/publish/usr/images/major_result/pexophagy_3.png
Binary file is not shown
 
public/publish/usr/images/major_result/polygon_blue.png (Binary) (added)
+++ public/publish/usr/images/major_result/polygon_blue.png
Binary file is not shown
 
public/publish/usr/images/major_result/polygon_orange.png (Binary) (added)
+++ public/publish/usr/images/major_result/polygon_orange.png
Binary file is not shown
 
public/publish/usr/images/major_result/polygon_purple.png (Binary) (added)
+++ public/publish/usr/images/major_result/polygon_purple.png
Binary file is not shown
 
public/publish/usr/images/major_result/rd_1.png (Binary) (added)
+++ public/publish/usr/images/major_result/rd_1.png
Binary file is not shown
 
public/publish/usr/images/major_result/rd_2.png (Binary) (added)
+++ public/publish/usr/images/major_result/rd_2.png
Binary file is not shown
 
public/publish/usr/images/major_result/rd_3.png (Binary) (added)
+++ public/publish/usr/images/major_result/rd_3.png
Binary file is not shown
 
public/publish/usr/images/major_result/rd_4.png (Binary) (added)
+++ public/publish/usr/images/major_result/rd_4.png
Binary file is not shown
 
public/publish/usr/images/major_result/visual.jpg (Binary) (added)
+++ public/publish/usr/images/major_result/visual.jpg
Binary file is not shown
 
public/publish/usr/images/major_result/visual_mobile.jpg (Binary) (added)
+++ public/publish/usr/images/major_result/visual_mobile.jpg
Binary file is not shown
 
public/publish/usr/images/platform_tech/autophagy_1.png (Binary) (added)
+++ public/publish/usr/images/platform_tech/autophagy_1.png
Binary file is not shown
 
public/publish/usr/images/platform_tech/autophagy_2.png (Binary) (added)
+++ public/publish/usr/images/platform_tech/autophagy_2.png
Binary file is not shown
 
public/publish/usr/images/platform_tech/background_1.png (Binary) (added)
+++ public/publish/usr/images/platform_tech/background_1.png
Binary file is not shown
 
public/publish/usr/images/platform_tech/background_2.png (Binary) (added)
+++ public/publish/usr/images/platform_tech/background_2.png
Binary file is not shown
 
public/publish/usr/images/platform_tech/background_3.png (Binary) (added)
+++ public/publish/usr/images/platform_tech/background_3.png
Binary file is not shown
 
public/publish/usr/images/platform_tech/background_4.png (Binary) (added)
+++ public/publish/usr/images/platform_tech/background_4.png
Binary file is not shown
 
public/publish/usr/images/platform_tech/visual.jpg (Binary) (added)
+++ public/publish/usr/images/platform_tech/visual.jpg
Binary file is not shown
 
public/publish/usr/images/platform_tech/visual_mobile.jpg (Binary) (added)
+++ public/publish/usr/images/platform_tech/visual_mobile.jpg
Binary file is not shown
 
src/App.tsx (added)
+++ src/App.tsx
@@ -0,0 +1,65 @@
+import { useEffect, useState } from 'react';
+import { UserLayout } from './user/UserLayout';
+import { UserListPage } from './user/UserListPage';
+import {AdminLayout} from "./admin/layout/AdminLayout.tsx";
+
+type Skin = 'admin' | 'user';
+
+function getInitialSkin(): Skin {
+  const params = new URLSearchParams(window.location.search);
+  return params.get('skin') === 'user' ? 'user' : 'admin';
+}
+
+function switchSkin(nextSkin: Skin) {
+  const url = new URL(window.location.href);
+  url.searchParams.set('skin', nextSkin);
+  window.location.href = url.toString();
+}
+
+export default function App() {
+  const [skin] = useState<Skin>(getInitialSkin);
+  const [styleReady, setStyleReady] = useState(false);
+
+  useEffect(() => {
+    let mounted = true;
+
+    document.body.dataset.skin = skin;
+
+    const loadStyles = skin === 'admin' ? import('./admin') : import('./user');
+    loadStyles.finally(() => {
+      if (mounted) {
+        setStyleReady(true);
+      }
+    });
+
+    return () => {
+      mounted = false;
+    };
+  }, [skin]);
+
+  if (!styleReady) {
+    return <div style={{ padding: 24 }}>Loading publishing styles...</div>;
+  }
+
+  return (
+    <>
+      <div className="skin_switcher">
+        <button type="button" className={skin === 'admin' ? 'active' : ''} onClick={() => switchSkin('admin')}>
+          Admin layout
+        </button>
+        <button type="button" className={skin === 'user' ? 'active' : ''} onClick={() => switchSkin('user')}>
+          User layout
+        </button>
+      </div>
+
+      {skin === 'admin' ? (
+        <AdminLayout children={undefined}>
+        </AdminLayout>
+      ) : (
+        <UserLayout>
+          <UserListPage />
+        </UserLayout>
+      )}
+    </>
+  );
+}
 
src/admin/component/menu/MenuList.tsx (added)
+++ src/admin/component/menu/MenuList.tsx
@@ -0,0 +1,31 @@
+import {MenuListItem} from "./MenuListItem.tsx";
+import {useState} from "react";
+
+export type MenuItem = {
+    no: string;
+    name: string;
+    url: string;
+    upperNo: string;
+}
+
+export const MenuList = ({headMenuList, menuList}: { headMenuList: MenuItem[], menuList: MenuItem[] }) => {
+    const [openedMenuNo, setOpenedMenuNo] = useState<string | null>(null);
+    const handleToggleMenu = (menuNo: string) => {
+        setOpenedMenuNo(prev => prev === menuNo ? null : menuNo);
+    }
+
+    return (
+        <ul className="menu_ul">
+            {headMenuList.map((item: MenuItem, index: number) => {
+                return (
+                    <MenuListItem key={index}
+                        menuItem={item}
+                        menuItemList={menuList}
+                        openedMenuNo = {openedMenuNo}
+                        onClick={handleToggleMenu}
+                    />
+                );
+            })}
+        </ul>
+    )
+}(No newline at end of file)
 
src/admin/component/menu/MenuListItem.tsx (added)
+++ src/admin/component/menu/MenuListItem.tsx
@@ -0,0 +1,30 @@
+import type {MenuItem} from "./MenuList.tsx";
+
+type MenuItemProps = {
+    menuItem: MenuItem,
+    menuItemList: MenuItem[],
+    openedMenuNo: string | null
+    onClick: (menuNo: string) => void
+}
+
+export const MenuListItem = ({
+                                 menuItem,
+                                 menuItemList,
+                                 openedMenuNo,
+                                 onClick,
+                             }: MenuItemProps) => {
+    return (
+        <li className={`depth01 ${openedMenuNo === menuItem.no ? "on" : ""}`} onClick={() => onClick(menuItem.no)}>
+            <button className="menu_title">{menuItem.name}</button>
+            <ul className="depth02">
+                {menuItemList.map((item: MenuItem, index: number) => {
+                    return item.upperNo === menuItem.no ? (
+                        <li key={index} value={item.url}>
+                            <a>{item.name}</a>
+                        </li>
+                    ) : null;
+                })}
+            </ul>
+        </li>
+    );
+}(No newline at end of file)
 
src/admin/index.ts (added)
+++ src/admin/index.ts
@@ -0,0 +1,15 @@
+// common
+import '../styles/common/reset.css'
+import '../styles/common/font.css'
+import '../styles/common/style.css'
+
+import '../styles/adm/common.css'
+import '../styles/adm/layout.css'
+import '../styles/adm/style.css'
+import '../styles/adm/button.css'
+import '../styles/adm/tab.css'
+import '../styles/adm/table.css'
+import '../styles/adm/calendar.css'
+import '../styles/adm/popup.css'
+import '../styles/adm/dashboard.css'
+import '../styles/adm/validate.css'
 
src/admin/layout/AdminLayout.tsx (added)
+++ src/admin/layout/AdminLayout.tsx
@@ -0,0 +1,20 @@
+import type {ReactNode} from "react";
+import {AdminSideBar} from "./AdminSideBar.tsx";
+
+type AdminLayoutProps = {
+    children: ReactNode;
+}
+
+
+export function AdminLayout({children}: AdminLayoutProps) {
+    return (
+        <div className="wrap">
+            <AdminSideBar/>
+            <div className="container sub">
+                <div className="content_wrap">
+                    {children}
+                </div>
+            </div>
+        </div>
+    );
+}(No newline at end of file)
 
src/admin/layout/AdminSideBar.tsx (added)
+++ src/admin/layout/AdminSideBar.tsx
@@ -0,0 +1,31 @@
+import {MenuList} from "../component/menu/MenuList.tsx";
+
+const menuList = [
+    {name: "1", no: '6', url: '테스트', upperNo: '1'},
+    {name: "2", no: '7', url: '테스트', upperNo: '1'},
+    {name: "3", no: '8', url: '테스트', upperNo: '2'},
+    {name: "4", no: '9', url: '테스트', upperNo: '2'},
+    {name: "5", no: '10', url: '테스트', upperNo: '2'},
+
+]
+
+const headMenuList = [
+    {name: "테스트 메뉴1", no: '1', url: '테스트', upperNo: '0'},
+    {name: "테스트 메뉴2", no: '2', url: '테스트', upperNo: '0'},
+    {name: "테스트 메뉴3", no: '3', url: '테스트', upperNo: '0'},
+    {name: "테스트 메뉴4", no: '4', url: '테스트', upperNo: '0'},
+    {name: "테스트 메뉴5", no: '5', url: '테스트', upperNo: '0'},
+]
+
+export const AdminSideBar = () => {
+    return (
+        <div className={"menu_wrap"}>
+            <h1 className={"logo"}>
+                <a href="/">DashBoard</a>
+            </h1>
+            <nav className={"menu"}>
+                <MenuList headMenuList={headMenuList} menuList={menuList}/>
+            </nav>
+        </div>
+    );
+}(No newline at end of file)
 
src/admin/route/AdminRoute.tsx (added)
+++ src/admin/route/AdminRoute.tsx
@@ -0,0 +1,8 @@
+
+
+export const adminRoute = () => {
+    return (
+        <>
+        </>
+    );
+}
 
src/main.tsx (added)
+++ src/main.tsx
@@ -0,0 +1,10 @@
+import { StrictMode } from 'react';
+import { createRoot } from 'react-dom/client';
+import App from './App';
+import './styles/app.css';
+
+createRoot(document.getElementById('root')!).render(
+  <StrictMode>
+    <App />
+  </StrictMode>,
+);
 
src/styles/adm/button.css (added)
+++ src/styles/adm/button.css
@@ -0,0 +1,164 @@
+/* 踰꾪듉 ?덉씠?꾩썐 */
+.btn_wrap{display:flex;justify-content:space-between;gap:8px;}
+.btn_wrap.column{flex-direction:column;gap:4px;}
+.btn_wrap>div{display:flex;width:calc(100%/3);gap:8px}
+
+.btn_wrap.left, .btn_wrap .left{justify-content:flex-start;}
+.btn_wrap.center,.btn_wrap .center{justify-content:center;}
+.btn_wrap.right,.btn_wrap .right{justify-content:flex-end;}
+
+
+/* 踰꾪듉 ?ㅽ???*/
+.btn{border-radius:5px;box-sizing:border-box;}
+.btn:hover{box-shadow: 0px 0px 1px 1px rgba(0,0,0,0.08);transition: all 0.3s ease;}
+
+.btn.only_text{padding:0 !important;}
+.btn.only_icon{padding:0 !important;}
+.btn.mix{display:flex;align-items:center;}
+.btn.mix .icon{height:100%;background-size:contain;}
+
+.btn.xssmall{height:28px;font-size:14px;padding:0 4px;}
+.btn.ssmall{height:30px;font-size:14px;padding:0 6px;}
+.btn.small{height:32px;font-size:16px;padding:0 6px;}
+.btn.medium{height:34px;font-size:16px;padding:0 8px;}
+.btn.large{height:38px;font-size:18px;padding:0 12px;font-weight:600;}
+.btn.xlarge{height:50px;font-size:18px;padding:0 24px;font-weight:600;}
+
+.btn.fill.primary{background-color: var(--primary-color);color: #fff;}
+.btn.fill.primary:hover{background-color: var(--primary-color-hover);color: #fff;}
+.btn.fill.primary_light{background-color: var(--primary-light-color);border: 1px solid var(--primary-light-border);color:var(--primary-color);}
+.btn.fill.primary_light:hover{background-color: var(--primary-light-color-hover);}
+.btn.fill.secondary{background-color: var(--secondary-color);color: #fff;}
+.btn.fill.secondary:hover{background-color: var(--secondary-color-hover);}
+.btn.fill.accent{background-color: var(--accent-color);color: #fff;}
+.btn.fill.accent:hover{background-color: var(--accent-color-hover);}
+.btn.fill.accent_light{background-color: var(--accent-light-color);color: var(--accent-dark-color);}
+.btn.fill.accent_light:hover{background-color: var(--accent-light-color-hover);}
+.btn.fill.red{background-color: var(--red-color);color: #fff;}
+.btn.fill.red:hover{background-color: var(--red-color-hover);}
+.btn.fill.green{background-color: var(--green-color);color: #fff;}
+.btn.fill.green:hover{background-color: var(--green-color-hover);}
+.btn.fill.gray{background-color: var(--gray-color);color: #fff;}
+.btn.fill.gray:hover{background-color: var(--gray-color-hover);}
+.btn.fill.lightgray{background-color: var(--lightgray-color);color: #5b606c;}
+.btn.fill.lightgray:hover{background-color: var(--lightgray-color-hover);}
+
+.btn.line.primary{border: 1px solid var(--primary-color);color: var(--primary-color);}
+.btn.line.primary:hover{border: 1px solid var(--primary-color-hover);color: var(--primary-color-hover);}
+.btn.line.secondary{border: 1px solid var(--secondary-color);color:var(--secondary-color);}
+.btn.line.secondary:hover{background:var(--secondary-light-color);border: 1px solid var(--secondary-color-hover);}
+.btn.line.accent{border: 1px solid var(--accent-color);color: var(--accent-color);}
+.btn.line.accent:hover{border: 1px solid var(--accent-color-hover);}
+.btn.line.red{border: 1px solid var(--red-color);color: var(--red-color);}
+.btn.line.red:hover{background:var(--red-light-color);color: var(--red-color-hover);}
+.btn.line.green{border: 1px solid var(--green-color);color: var(--green-color);}
+.btn.line.green:hover{background-color: var(--green-color-hover);}
+.btn.line.gray{border: 1px solid var(--gray-color);color: var(--gray-color);}
+.btn.line.gray:hover{background-color: var(--disable-line-bg-color);}
+.btn.line.lightgray{border: 1px solid var(--lightgray-color);color: #5B606C;}
+.btn.line.lightgray:hover{background-color: var(--disable-line-bg-color);}
+
+
+.btn.fill.disabled,.btn.fill.readonly,.btn.fill:disabled{background:var(--disable-fill-bg-color) !important; color:var(--disable-fill-text-color) !important; pointer-events:none;}
+.btn.line.disabled,.btn.line.readonly,.btn.line:disabled{background:var(--disable-line-bg-color) !important;border:1px solid var(--disable-line-border-color);color:var(--disable-line-text-color) !important;pointer-events:none;}
+
+.btn_text{display:inline-flex;align-items:center;justify-content:center;}
+.btn_36{height:36px;padding:0 14px;font-size:15px;}
+.btn_46{height:46px;padding:0 18px;font-size:16px;}
+.blue_fill{background:var(--primary-color);color:#fff;}
+.blue_fill:hover{background:var(--primary-color-hover);color:#fff;}
+.gray_fill{background:var(--gray-color);color:#fff;}
+.gray_fill:hover{background:var(--gray-color-hover);color:#fff;}
+.blue_border{border:1px solid var(--primary-color);color:var(--primary-color);background:#fff;}
+.blue_border:hover{background:var(--primary-lighter-color);}
+.red_border{border:1px solid var(--red-color);color:var(--red-color);background:#fff;}
+.red_border:hover{background:var(--red-light-color);}
+
+.btn_delete i.icon.delete{background-size:auto;margin:0;}
+.btn.excel{background:#fff;border:1px solid #0e8945;color:#0e8945;}
+.btn.excel i{width:32px;}
+.btn.excel i.download,.btn.excel i.upload{margin:2px 0 0 0;}
+
+.sort_wrap{display:inline-block;}
+.sortBtn,input.sortBtn{font-size:9px;margin:-2.5px 0 0 4px;border:0 !important;background:transparent !important;color:#000 !important;}
+
+
+/* ?섏씠吏€ */
+.page{display:flex;gap:6px;margin:30px auto 0 auto;justify-content:center;align-items:center;}
+.page a,.page button{display:flex;width:36px;height:36px;border:1px solid transparent;border-radius:5px;font-size:16px;color:#878B96;justify-content:center;align-items:center;transition:all .3s;}
+.page a:hover, .page button:hover{background:#F5F6F7;color:#3a3c41;}
+.page .active,.page .on{border:1px solid #E2E7EF;background:#e2e7ef;font-weight:600;color:#3a3c41;}
+.page .btn_page{border:1px solid #d2d7df;border-radius:5px;overflow:hidden;}
+.page .btn_page:hover{background-color:#F5F6F7;}
+.page .btn_page i{display:inline-block;width:100%;height:100%;transition:all .3s;}
+.btn_first i{background:url(/publish/adm/images/component/icon_double_arrow_left_page.png) no-repeat center;}
+.btn_prev i{background:url(/publish/adm/images/component/icon_arrow_left_page.png) no-repeat center;}
+.btn_next i{background:url(/publish/adm/images/component/icon_arrow_right_page.png) no-repeat center;}
+.btn_last i{background:url(/publish/adm/images/component/icon_double_arrow_right_page.png) no-repeat center;}
+
+/* Legacy USS compatibility */
+.btnWrap{display:flex;justify-content:flex-end;align-items:center;gap:8px;flex-wrap:wrap;margin:24px 0 0;}
+.btnWrap.left{justify-content:flex-start;}
+.btnWrap.center{justify-content:center;}
+.btnWrap.right{justify-content:flex-end;}
+.btnWrap .left,
+.btnWrap .right{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
+
+.btn_wrap.btn_layout01{align-items:center;}
+.btn_wrap.btn_layout01 .area_left,
+.btn_wrap.btn_layout01 .area_right{display:flex;width:auto;gap:8px;}
+.btn_wrap.btn_layout01 .area_right{margin-left:auto;}
+
+.btnType01,
+.btnType02,
+.btnType03,
+.btnType04,
+.btnType05,
+.btnType06,
+.btnType07,
+.btnType08,
+.btnType09{
+	display:inline-flex;
+	min-width:88px;
+	height:38px;
+	padding:0 16px;
+	border-radius:6px;
+	border:1px solid transparent;
+	font-size:15px;
+	font-weight:500;
+	line-height:1;
+	text-decoration:none;
+	justify-content:center;
+	align-items:center;
+	box-sizing:border-box;
+	transition:all .2s ease;
+}
+
+.btnType01,
+.btnType02,
+.btnType06{background:var(--primary-color);color:#fff;}
+.btnType01:hover,
+.btnType02:hover,
+.btnType06:hover{background:var(--primary-color-hover);color:#fff;}
+
+.btnType03,
+.btnType04,
+.btnType09{background:#fff;border-color:var(--lightgray-color);color:var(--body-text-color);}
+.btnType03:hover,
+.btnType04:hover,
+.btnType09:hover{background:var(--disable-line-bg-color);}
+
+.btnType04,
+.btnType09{border-color:var(--red-color);color:var(--red-color);}
+.btnType04:hover,
+.btnType09:hover{background:var(--red-light-color);color:var(--red-color-hover);}
+
+.btnType05,
+.btnType07,
+.btnType08{background:var(--gray-color);color:#fff;}
+.btnType05:hover,
+.btnType07:hover,
+.btnType08:hover{background:var(--gray-color-hover);color:#fff;}
+
+
+
 
src/styles/adm/calendar.css (added)
+++ src/styles/adm/calendar.css
@@ -0,0 +1,20 @@
+button.duet-date__toggle{height:100%;top:0;}
+*[class*="endDate"] .duet-date__dialog{left:auto;right:0;}
+
+.wrap .duet-date__dialog-content{padding:30px 20px;border-radius:16px;;}
+.wrap .duet-date__dialog-content *{font-family:'pretendard';}
+.wrap .duet-date__mobile{display:none;}
+.wrap .duet-date__header{gap:12px;}
+.wrap .duet-date__header>div.duet-date__nav{display:none;}
+.wrap .duet-date__header>div:first-child .duet-date__select{width:100%;}
+.wrap .duet-date__select{width:45%;}
+.wrap .duet-date__select-label{width:100%;border:0;background-color:#EDF0F5;}
+
+.wrap .duet-date__table tr{background:#fff;border-bottom:0;}
+.wrap .duet-date__table-header,.wrap .duet-date__cell,.wrap .duet-date__day,.wrap .list_top .search_area .duet-date__day{width:36px !important;height:36px !important;border-bottom:3px solid transparent;line-height:1;}
+.wrap .duet-date__day:hover::before,.wrap  .duet-date__day.is-today::before,.wrap  .duet-date__day[aria-pressed=true],.wrap  .duet-date__day:focus{background:var(--secondary-color) !important;font-weight:bold !important;color:#fff !important;border-radius:100% !important;border-bottom:0 !important;}
+.wrap .duet-date__day.is-today{font-weight:500;color:var(--secondary-color);background:#fff;border:0;border-bottom:3px solid var(--secondary-color);border-radius:0;box-shadow:none;}
+.wrap .duet-date__day.is-today::before{display:none;}
+
+.duet-date__row td:first-child button{color:var(--red-color);}
+.duet-date__row td:last-child button{color:var(--primary-color);}
 
src/styles/adm/common.css (added)
+++ src/styles/adm/common.css
@@ -0,0 +1,53 @@
+@charset "utf-8";
+
+:root{
+  --primary-color: #2557B4;
+  --primary-color-hover: #214EA2;
+  --primary-light-color: #F4F7FB;
+  --primary-light-color-hover: #DCE4F3;
+  --primary-lighter-color: #E9EEF8;
+  --primary-lighter-color-hover: #CFDAEF;
+  --primary-dark-color: #1C4187;
+  --primary-dark-color-hover: #16346C;
+
+  --secondary-color: #F86A3C;
+  --secondary-color-hover: #DF5F36;
+  --secondary-light-color: #FFF8F5;
+  --secondary-light-color-hover: #FEE7E0;
+  --secondary-dark-color: #BA502D;
+  --secondary-dark-color-hover: #954024;
+
+  --red-color: #e81717;
+  --red-color-hover: #d11515;
+  --red-light-color: #fde8e8;
+  --red-light-color-hover: #fee9e2;
+
+  --green-color: #289C77;
+  --green-color-hover: #067b14;
+
+  --gray-color: #81899C;
+  --gray-color-hover: #676e80;
+  --lightgray-color: #D5D9E3;
+  --lightgray-color-hover: #BFC3CD;
+
+  --primary-title-font:'Pretendard';
+  --secondary-title-font:'Gmarket Sans TTF';
+
+  --primary-title-color:#1B1C2B;
+  --secondary-title-color:#252836;
+  --body-text-color:#313337;
+
+  --disable-fill-bg-color:#EAEBEF;
+  --disable-fill-line-color:#D3D7DE;
+  --disable-fill-text-color:#8D9098;
+
+  --default-line-color:#d3d7de;
+  --disable-line-bg-color:#F5F6F7;
+  --disable-line-border-color:#eaebef;
+  --disable-line-text-color:#bcc0ca;
+}
+
+
+
+
+
 
src/styles/adm/dashboard.css (added)
+++ src/styles/adm/dashboard.css
@@ -0,0 +1,115 @@
+/* 怨듯넻 */
+.dashboard .box_title{width:100%;font-size:20px;font-weight:700;}
+.dashboard .box_wrap{display:flex;flex-wrap:wrap;justify-content:flex-start;padding:40px;box-sizing:border-box;gap:30px;}
+.dashboard .box{width:calc((100%/3) - 20px);height:auto;border-radius:5px;border:5px solid #EFF2F9;background:#fff;}
+.dashboard .box_tit{display:flex;height:60px;align-items:center;justify-content:space-between;padding:0 25px;border-bottom:1px solid #E6E8EB;box-sizing: border-box;}
+.dashboard .box_tit p{font-size:20px;font-weight:bold;letter-spacing:-0.5px;color:#333;}
+.dashboard .box_tit .btn_plus{display:flex;font-size:16px;font-weight:300;color:#aaa;letter-spacing:-0.5px;align-items:center;gap:8px;}
+.dashboard .box_tit .btn_plus i{display:inline-block;width:14px;height:14px;background:url(/publish/adm/images/component/icon_plus.png) no-repeat center center;margin:-2px 0 0 0;transition:all .5s;}
+.dashboard .box_tit .btn_plus:hover{color:#666;font-weight:400;}
+.dashboard .box_tit .btn_plus:hover i{transform:rotate(90deg);}
+.dashboard .box_cont{position:relative;height:calc(100% - 60px);padding:20px 25px;box-sizing:border-box;}
+/* //怨듯넻 */
+
+/* ?ㅻ뒛 ?ъ슜???꾪솴 */
+.today_box{display: flex; justify-content: space-between; align-items: center;}
+.today_box .today_status{text-align: center; width: calc((100% - 80px)/3);}
+.today_box p{font-size: 16px; font-weight: 300; margin-top: 12px;}
+.today_box .today_status i{display: block; width: 84px; height: 84px; background-color: #E8ECF4; border-radius: 100%; margin: 23px auto; background-repeat: no-repeat; background-position: center;}
+/* .today_box .status01 i{background-image: url(/publish/adm/images/dashboard/icon_today01.png);}
+.today_box .status02 i{background-image: url(/publish/adm/images/dashboard/icon_today02.png);}
+.today_box .status03 i{background-image: url(/publish/adm/images/dashboard/icon_today03.png);} */
+.today_box span{font-size: 24px; font-weight: bold;}
+/* .today_box .status_pcs{width: 24px; height: 9px; background-image: url(/publish/adm/images/dashboard/icon_today_pcs.png);} */
+/* //?ㅻ뒛 ?ъ슜???꾪솴 */
+
+/* ?쒖뒪?쒓?由?*/
+.system_box{display: flex; flex-wrap: wrap; justify-content: space-between;}
+.system_box a{position: relative; display: flex; flex-flow: column; width: calc((100% - 10px)/2); height: 90px; justify-content: center; align-items: flex-start; border-radius: 10px; background-color: #666; margin: 5px 0; padding: 0 20px; box-sizing: border-box; background-repeat: no-repeat; background-position: calc(100% - 20px) center; box-shadow: 0 0 5px rgba(0,0,0,0.3); transition: background-color 0.2s ease-in-out;}
+.system_box a:hover{transition: background-color 0.2s ease-in-out;}
+.system_box .system01{background-color: #7991C3;/*  background-image: url(/publish/adm/images/dashboard/icon_system01.png); */}
+.system_box .system01:hover{background-color: #6281c4;}
+.system_box .system02{background-color: #2C3B5B;/*  background-image: url(/publish/adm/images/dashboard/icon_system02.png); */}
+.system_box .system02:hover{background-color: #1F2D4A;}
+.system_box .system03{background-color: #2557B4;/*  background-image: url(/publish/adm/images/dashboard/icon_system03.png); */}
+.system_box .system03:hover{background-color: #18418D;}
+.system_box .system04{background-color: #F86A3C;/*  background-image: url(/publish/adm/images/dashboard/icon_system04.png); */}
+.system_box .system04:hover{background-color: rgb(241, 85, 33);}
+.system_box a::before{position: absolute; content: ""; width: 58px; height: 58px; background-color: rgba(255,255,255,0.3); border-radius: 100%; right: -5px; bottom: -5px;}
+.system_box p{font-size: 18px; font-weight: 400; color: #fff; letter-spacing: -0.5px; width: calc(100% - 40px); line-height: 1.3;}
+.system_box span{display: block; font-size: 15px; font-weight: 300; color: #fff; padding-top: 10px;}
+/* //?쒖뒪?쒓?由?*/
+
+/* 2021 ?좎껌 泥섎━?꾪솴 */
+.dashboard .box_cont.ds_box{padding-top:27px;}
+.ds_box .chartType01 li{display: flex; justify-content: space-between; align-items: center; margin-bottom: 22px;}
+.ds_box .chartType01 li:last-child{margin-bottom: 0;}
+.ds_box .chartType01 p{font-size: 15px; font-weight: 400; width: auto; min-width:30px; text-align: right;}
+.ds_box .chartType01 p:first-child{margin:0 10px 0 0;}
+.ds_box .chartType01 .chart_wrap{width: calc(100% - 100px); height: 15px; background-color: #f1eeed; border-radius: 10px; box-shadow: inset 3px 2px 3px rgba(0,0,0,0.15); overflow: hidden;}
+.ds_box .chartType01 .chart_wrap div{width: 50%; height: 100%; background-color: #3A3C41; border-radius: 10px; box-shadow: inset 3px 2px 3px rgba(0,0,0,0.15);}
+.ds_box .chartType01 li:first-child .chart_wrap div{background-color: #428ef6;}
+.ds_box .chartType01 li:nth-child(2) .chart_wrap div{background-color: #fc6d38;}
+.ds_box .chartType01 li:nth-child(3) .chart_wrap div{background-color: #f7be0f;}
+.ds_box .chartType01 li:nth-child(4) .chart_wrap div{background-color: #ad65eb;}
+.ds_box .chartType01 li:last-child .chart_wrap div{background-color: #41b691;}
+.ds_box .case_number{color:#3A3C41; white-space:nowrap;}
+.ds_box .case_number span{font-weight:600;}
+.ds_box .chart_num{display: flex; width: calc(100% - 100px); justify-content: space-between; margin-left: auto; margin:15px auto 0 auto; color:#666;}
+/* //2021 ?좎껌 泥섎━?꾪솴 */
+
+/* ?€?쒕낫??由ъ뒪??*/
+.dashboard_list li{display:flex;font-weight:300;letter-spacing:-0.5px;border-bottom:1px solid #e5e5e5;padding:0 0 8px 0;margin:0 0 12px 0;justify-content:space-between;}
+.dashboard_list li:last-child{border-bottom:0;margin:0;padding:0;}
+.dashboard_list li p,.notice_box li a{padding:0 5px;box-sizing:border-box;}
+.dashboard_list li:hover p,.dashboard_list li:hover a{color:#222;font-weight:400;}
+.dashboard_list li a{width:98%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:17px;color:#222;}
+.dashboard_list .list_tit{display:inline-block;width:calc(100% - 170px);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}
+.dashboard_list .list_tit img{display:inline-block;vertical-align:text-top;}
+.dashboard_list .list_writer,.dashboard_list .list_date{font-size:16px;color:#777777;}
+.dashboard_list .list_writer{width:60px;max-width:60px;text-align: right;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}
+.dashboard_list .list_date{width: 100px; text-align: right;}
+
+.dashboard_list.status{display:flex;flex-wrap:wrap;}
+.dashboard_list.status li{width:100%;align-items:center;gap:8px;}
+
+.dashboard_list .status{display:flex;min-width:75px;min-height:27px;height: 27px;font-size: 14px;font-weight:500;padding:0 12px;border-radius:28px;justify-content:center;align-items:center;transition: all 0.3s;}
+.dashboard_list .line.gray{border:1px solid #c1c5ce;color:#616576;}
+.dashboard_list .line.blue{border:1px solid #2557B4;color:#2557B4;}
+.dashboard_list .line.orange{border:1px solid #F86A3C;color:#F86A3C;}
+.dashboard_list .fill.gray{background:#e4e7ee;color:#616576;}
+.dashboard_list .fill.green{background:#d9f0e9;color:#289c77;}
+.dashboard_list .fill.purple{background:#f3e8fc;color:#ad65eb;}
+
+.dashboard_list li:hover .line.gray{border:1px solid #c1c5ce;background:#F5F6F7;color:#616576;}
+.dashboard_list li:hover .line.blue{border:1px solid #2557B4;background:#F4F7FB;color:#2557B4;}
+.dashboard_list li:hover .line.orange{border:1px solid #F86A3C;background:#FEF0EC;color:#F86A3C;}
+.dashboard_list li:hover .fill.gray{background:#d2d6df;color:#494c59;}
+.dashboard_list li:hover .fill.green{background:#C1E8DC;color:#177C5C;}
+.dashboard_list li:hover .fill.purple{background:#EDD8FE;color:#9747DD;}
+
+/* //?€?쒕낫??由ъ뒪??*/
+
+/* 李⑦듃 */
+.chart_box{text-align: center;}
+.chart_box img{box-sizing: border-box; width: 100%; height: 100%;}/* ?섏쨷??李⑦듃 異붽??섍퀬 吏€??寃?*/
+/* //李⑦듃 */
+
+@media all and (max-width:1600px){
+
+	/* 怨듯넻 */
+	.dashboard .box{width: calc((100% - 30px)/2);}
+	/* //怨듯넻 */
+
+}
+
+@media all and (max-width:1300px){
+
+	/* ?쒖뒪?쒓?由?*/
+	.system_box a{background-size: 35px;}
+	.system_box .system01{background-size: 33px;}
+	.system_box .system04{background-size: 30px;}
+	/* //?쒖뒪?쒓?由?*/
+
+}
+
 
src/styles/adm/icon.css (added)
+++ src/styles/adm/icon.css
@@ -0,0 +1,24 @@
+@charset "utf-8";
+
+.icon{display:inline-block;width:100%;height:100%;vertical-align:middle;;}
+
+.icon.excel{width:40px;height:40px;background:url(/publish/adm/images/component/icon_excel.png) no-repeat center center;}
+.icon.excel.download{background:url(/publish/adm/images/component/icon_excel_download.png) no-repeat center center;}
+.icon.excel.upload{background:url(/publish/adm/images/component/icon_excel_upload.png) no-repeat center center;background-size:contain;}
+
+.icon.file{width:20px;height:20px;background:url(/publish/adm/images/component/icon_file.png) no-repeat center center;}
+.icon.file.blue{background:url(/publish/adm/images/component/icon_file_blue.png) no-repeat center center;}
+.icon.file_bg{width:60px;height:60px;background:url(/publish/adm/images/component/icon_file_table.png) no-repeat center center;}
+
+.icon.delete{width:30px;height:30px;background:url(/publish/adm/images/component/icon_x.png) no-repeat center;}
+.icon.delete.red{background:url(/publish/adm/images/component/icon_x_red.png) no-repeat center;}
+
+.icon.x{width:30px;height:30px;background:url(/publish/adm/images/component/icon_x.png) no-repeat center;}
+.icon.x.white{background:url(/publish/adm/images/component/icon_x_white.png) no-repeat center;}
+.icon.x.red{background:url(/publish/adm/images/component/icon_x_red.png) no-repeat center;}
+
+.icon.excel{width:40px;height:40px;background:url(/publish/adm/images/component/icon_excel.png) no-repeat center center;}
+
+.icon.lock{width:24px;height:24px;background:url(/publish/adm/images/component/icon_lock.png) no-repeat center center;}
+
+.icon.comment{width:20px;height:20px;background:url(/publish/adm/images/component/icon_comment.png) no-repeat center center;}
 
src/styles/adm/layout.css (added)
+++ src/styles/adm/layout.css
@@ -0,0 +1,286 @@
+.wrap{width:100%;height:100%;position:relative;display:flex;font-family:var(--primary-title-font);align-items:stretch;min-width:1240px;}
+.container{width:calc(100% - 280px);}
+.content_wrap{position:relative;height:calc(100% - 100px);padding:0 48px;margin:0 0 60px 0;}
+
+.content_title{display:flex;align-items:center;justify-content:space-between;}
+.content_title h3{position:relative;padding:0 0 0 20px;margin:0 0 40px 0;;font-size:26px;font-weight:bold;color:var(--primary-title-color);}
+.content_title h3::before{position:absolute;content:"";width:6px;height:27px;background:var(--primary-color);left:0;top:8px;}
+.content_title h4{position:relative;padding:0 0 0 20px;margin:0 0 12px 0;;font-size:20px;font-weight:bold;color:var(--primary-title-color);}
+.content_title h4::before{position:absolute;content:"";width:10px;height:10px;border:3px solid var(--primary-color);border-radius:100%;left:0;top:10px;}
+.content_title h5{position:relative;padding:0;margin:0;font-size:18px;font-weight:bold;color:var(--primary-color);}
+
+.breadcrumb{display:flex;font-size:14px;color:#636469;gap:8px;align-items:center;}
+.breadcrumb a{position:relative;display:flex;height:24px;padding:0 8px;align-items:center;}
+.breadcrumb a::after{position:absolute;width:24px;height:24px;content:"";background:url(/publish/adm/images/component/icon_arrow_right_gray_24.png) no-repeat right center;right:-16px;top:1px;}
+.breadcrumb .home i{display:flex;width:24px;height:24px;background:url(/publish/adm/images/component/icon_home.png) no-repeat center center;}
+.breadcrumb .current_location{height:24px;padding:0 0 0 8px;color:var(--primary-color);}
+
+/* leftmenu */
+.menu_wrap{width:280px;min-height:100vh;background-color: #2557b4; box-shadow: 5px 0 10px rgba(0,0,0,0.1); z-index: 1; transition: width 0.3s linear; border-radius: 0 35px 35px 0;}
+.menu_wrap .logo{width: 100%; height: 100px; text-align: center; border-bottom: 1px solid #688DD0;}
+.menu_wrap .logo a{height: 100%; display: flex; justify-content: center; align-items: center;}
+.menu_wrap .logo img{margin-left: -15px;}
+.depth01{position: relative; border-bottom: 1px solid #688DD0;}
+.menu_title{width: 100%; height: 50px; padding: 0 20px; text-align: left; font-size: 18px; font-weight: 500; color: #fff; background-image: url(/publish/adm/images/common/icon_leftmenu_open.png); background-repeat: no-repeat; background-position: calc(100% - 20px) center; transition:all .3s;}
+.menu_title:not(:has(+ .depth02 li)) {background-image: none !important;padding-right: 0 !important;}
+.menu_title:hover{background-color:#1A499F;}
+.depth01.on .menu_title{background:#fff; color: #2557b4; font-weight:600; background-image: url(/publish/adm/images/common/icon_leftmenu_on.png); background-repeat: no-repeat; background-position: calc(100% - 20px) center;}
+.depth01.on .depth02 {max-height: 500px; padding: 8px 0; }
+.depth02{background-color: #16459A;
+	max-height: 0;
+	overflow: hidden;
+	transition: all 0.5s cubic-bezier(0.25, 0.8, 0.25, 1);
+}
+.depth02 li a{display: flex; align-items: center; width: 100%; height: 40px; padding: 0 5px 0 32px; font-size: 16px; font-weight: 300; color: #8BA2CD; box-sizing: border-box; position: relative;}
+.depth02 li a::before{position: absolute; content: ""; left: 0; font-size: 20px;}
+.depth02 li a:hover,.depth02 li.on a{color: #fff; font-weight: 400;}
+.depth03 {padding: 5px 0;background-color: #123a82;}
+.depth03 li a {display: flex;align-items: center;width: 100%;height: 36px;padding: 0 5px 0 48px;font-size: 14px;font-weight: 300;color: #AFC0E0;box-sizing: border-box;position: relative;}
+.depth03 li a:hover, .depth03 li.on a {color: #fff;font-weight: 400;}
+/* //leftmenu */
+
+/* top_util */
+.top_util{display:flex;width:100%;height:100px;justify-content:space-between;background:#fff;padding:0 48px;box-sizing:border-box;align-items:center;}
+.user,.user_info,.alram{display:flex;align-items:center;}
+
+.user_util{display:flex;gap:36px;}
+.user_util li{display:flex;align-items:center;gap:4px;}
+.user_util *{display:inline-block;vertical-align:middle;font-size:14px;color:#666666;letter-spacing:-0.5px;}
+.user_util i{width:20px;height:20px;margin:0 2px 0 0;}
+.user_util .time_out i{background:url(/publish/adm/images/component/icon_clock.png) no-repeat center;}
+.user_util .final_date i{background:url(/publish/adm/images/component/icon_calendar.png) no-repeat center;}
+.user_util .ip i{background:url(/publish/adm/images/component/icon_ip.png) no-repeat center;}
+.user_util .time_out #ViewTimer font,.user_util .time_out .view_timer{color:#F86A3C;font-weight:bold;vertical-align:bottom;}
+.user_util .btn_extend{width:45px;height:26px;border:1px solid #F86A3C;color:#f86a3c;background:#FFF1EC;border-radius:5px;margin:0 0 0 4px;font-weight:600;transition:all 0.3s;}
+.user_util .btn_extend:hover{background:#F86A3C;color:#fff;}
+
+.top_util .area_right{position:relative;display:flex;width:auto;background:#fff;transition:width 0.3s linear;gap:12px;}
+.user_info_ul{display:inline-flex;height:38px;padding:0 20px;border-radius:35px;background:#f4f5f6;align-items:center;}
+.user_info_ul li{position:relative;display:inline-flex;align-items:center;line-height:1.8;}
+/* .user_info_ul li:first-child{margin:0 20px 0 0;}
+.user_info_ul li:first-child:after{position:absolute;content:"";width:1px;height:15px;background:#d5d5d5;right:0;} */
+.user_info_ul select{width:145px;padding:0 0 0 20px;font-size:16px;border:0;background:transparent url(/publish/adm/images/component/icon_arrow_down.png) no-repeat calc(100% - 20px) center;}
+.btn_logout{width:auto;height:38px;padding:8px 17px;font-size:16px;color:#fff;border-radius:40px;background:var(--gray-color);transition: all 0.3s;}
+.btn_logout:hover{background:var(--gray-color-hover);}
+/* //top_util */
+
+/* footer */
+.footer{display:flex;width:calc(100% - 90px);padding:60px 0;border-top:1px solid #D7D9DF;margin:0 auto;box-sizing:border-box;align-items:center;gap:40px;}
+.footer h1{margin:-14px 0 0 0;}
+.footer address{font-size:14px;color:#959698;line-height:1.5;}
+.footer address span{font-weight:600;margin:0 10px;}
+/* //footer */
+
+@media all and (max-width:1440px){
+
+	/* leftmenu */
+	.area_left{width: 240px;}
+	.area_left .logo img{width: 75%;}
+	
+	.menu_tit{padding:0 12px;font-size:16px;}
+	.depth02 li a{font-size:14px;}
+	/* //leftmenu */
+
+	/* top_util */
+	.area_right{width: calc(100% - 240px);}
+
+	.top_util{padding: 0 20px;}
+	.alram{margin-left: -15px;}
+	.user_util{padding: 8px 0;gap:8px;}
+
+	.user_util *{font-size: 14px;}
+	.user .user_id{width: calc(100% - 130px);}
+
+	.user_info_ul li{font-size:14px;}	
+	.user_info_ul select{width:120px;font-size:14px;}
+	
+	/* //top_util */
+
+	footer{padding: 31px 20px;}
+}
+
+/* 媛꾧꺽 */
+.p0 {padding: 0px!important;}
+.p5 {padding: 5px!important;}
+
+.pt5 {padding-top: 5px!important;}
+.pt10 {padding-top: 10px!important;}
+.pt15 {padding-top: 15px!important;}
+.pt20 {padding-top: 20px!important;}
+.pt25 {padding-top: 25px!important;}
+.pt30 {padding-top: 30px!important;}
+.pt35 {padding-top: 35px!important;}
+.pt40 {padding-top: 40px!important;}
+.pt45 {padding-top: 45px!important;}
+.pt50 {padding-top: 50px!important;}
+
+.pr0 {padding-right: 0px!important;}
+.pr20 {padding-right: 20px!important;}
+
+.pb5 {padding-bottom: 5px!important;}
+.pb10 {padding-bottom: 10px!important;}
+.pb15 {padding-bottom: 15px!important;}
+.pb20 {padding-bottom: 20px!important;}
+.pb25 {padding-bottom: 25px!important;}
+.pb30 {padding-bottom: 30px!important;}
+.pb35 {padding-bottom: 35px!important;}
+.pb40 {padding-bottom: 40px!important;}
+.pb45 {padding-bottom: 45px!important;}
+.pb50 {padding-bottom: 50px!important;}
+
+.pl0 {padding-left: 0px!important;}
+.pl15 {padding-left: 15px!important;}
+.pl20 {padding-left: 20px!important;}
+
+.m20 {margin: 20px!important;}
+
+.mt-1 {margin-top: -1px!important;}
+.mt0 {margin-top: 0px!important;}
+.mt5 {margin-top: 5px!important;}
+.mt10 {margin-top: 10px!important;}
+.mt15 {margin-top: 15px!important;}
+.mt20 {margin-top: 20px!important;}
+.mt25 {margin-top: 25px!important;}
+.mt30 {margin-top: 30px!important;}
+.mt35 {margin-top: 35px!important;}
+.mt40 {margin-top: 40px!important;}
+.mt45 {margin-top: 45px!important;}
+.mt50 {margin-top: 50px!important;}
+.mt60 {margin-top: 60px!important;}
+.mt70 {margin-top: 70px!important;}
+.mt80 {margin-top: 80px!important;}
+.mt90 {margin-top: 90px!important;}
+.mt100 {margin-top: 100px!important;}
+
+.mr0 {margin-right: 0px!important;}
+.mr3 {margin-right: 3px!important;}
+.mr5 {margin-right: 5px!important;}
+.mr10 {margin-right: 10px!important;}
+.mr15 {margin-right: 15px!important;}
+.mr20 {margin-right: 20px!important;}
+.mr25 {margin-right: 25px!important;}
+.mr30 {margin-right: 30px!important;}
+.mr35 {margin-right: 35px!important;}
+.mr40 {margin-right: 40px!important;}
+.mr45 {margin-right: 45px!important;}
+.mr50 {margin-right: 50px!important;}
+.mr60 {margin-right: 60px!important;}
+.mr70 {margin-right: 70px!important;}
+.mr80 {margin-right: 80px!important;}
+.mr90 {margin-right: 90px!important;}
+.mr100 {margin-right: 100px!important;}
+
+.mb-4 {margin-bottom: -4px!important;}
+.mb0 {margin-bottom: 0px!important;}
+.mb1 {margin-bottom: 1px!important;}
+.mb5 {margin-bottom: 5px!important;}
+.mb10 {margin-bottom: 10px!important;}
+.mb15 {margin-bottom: 15px!important;}
+.mb18 {margin-bottom: 18px!important;}
+.mb20 {margin-bottom: 20px!important;}
+.mb25 {margin-bottom: 25px!important;}
+.mb30 {margin-bottom: 30px!important;}
+.mb35 {margin-bottom: 35px!important;}
+.mb40 {margin-bottom: 40px!important;}
+.mb45 {margin-bottom: 45px!important;}
+.mb50 {margin-bottom: 50px!important;}
+.mb60 {margin-bottom: 60px!important;}
+.mb70 {margin-bottom: 70px!important;}
+.mb80 {margin-bottom: 80px!important;}
+.mb90 {margin-bottom: 90px!important;}
+.mb100 {margin-bottom: 100px!important;}
+
+.ml0 {margin-left: 0px!important;}
+.ml5 {margin-left: 5px!important;}
+.ml10 {margin-left: 10px!important;}
+.ml15 {margin-left: 15px!important;}
+.ml20 {margin-left: 20px!important;}
+.ml25 {margin-left: 25px!important;}
+.ml30 {margin-left: 30px!important;}
+.ml35 {margin-left: 35px!important;}
+.ml40 {margin-left: 40px!important;}
+.ml45 {margin-left: 45px!important;}
+.ml50 {margin-left: 50px!important;}
+.ml60 {margin-left: 60px!important;}
+.ml70 {margin-left: 70px!important;}
+.ml80 {margin-left: 80px!important;}
+.ml90 {margin-left: 90px!important;}
+.ml100 {margin-left: 100px!important;}
+
+/* ?덈퉬, ?믪씠 */
+.w100per {width: 100% !important;}
+.w99per {width: 99%;}
+.w95per {width: 95%;}
+.w90per {width: 90%;}
+.w85per {width: 85%;}
+.w80per {width: 80%;}
+.w75per {width: 75%;}
+.w70per {width: 70%;}
+.w65per {width: 65%;}
+.w60per {width: 60%;}
+.w50per {width: 50%;}
+.w55per {width: 55%;}
+.w45per {width: 45%;}
+.w40per {width: 40%;}
+.w35per {width: 35%;}
+.w33per {width: 33.3333333%;}
+.w30per {width: 30%;}
+.w25per {width: 25%;}
+.w20per {width: 20%;}
+.w19per {width: 19%;}
+.w18per {width: 18%;}
+.w17per {width: 17%;}
+.w16per {width: 16%;}
+.w15per {width: 15%;}
+.w14per {width: 14%;}
+.w13per {width: 13%;}
+.w12per {width: 12%;}
+.w11per {width: 11%;}
+.w10per {width: 10%;}
+.w9per {width: 9%;}
+.w8per {width: 8%;}
+.w7per {width: 7%;}
+.w6per {width: 6%;}
+.w5per {width: 5%;}
+.w4per {width: 4%;}
+.w3per {width: 3%;}
+.w2per {width: 2%;}
+.w1per {width: 1%;}
+
+.w5 {width: 5px;}
+.w10 {width: 10px;}
+.w15 {width: 15px;}
+.w20 {width: 20px;}
+.w25 {width: 25px;}
+.w30 {width: 30px;}
+.w35 {width: 35px;}
+.w40 {width: 40px;}
+.w45 {width: 45px;}
+.w50 {width: 50px;}
+.w55 {width: 55px;}
+.w60 {width: 60px;}
+.w70 {width: 70px;}
+.w80 {width: 80px;}
+.w90 {width: 90px;}
+.w100 {width: 100px;}
+.w110 {width: 110px;}
+.w120 {width: 120px;}
+.w130 {width: 130px;}
+.w140 {width: 140px;}
+.w150 {width: 150px;}
+.w160 {width: 160px;}
+.w170 {width: 170px;}
+.w180 {width: 180px;}
+.w190 {width: 190px;}
+.w200 {width: 200px;}
+.w250 {width: 250px;}
+.w300 {width: 300px;}
+.w325 {width: 325px;}
+.w350 {width: 350px;}
+.w400 {width: 400px;}
+.w500 {width: 500px;}
+
+.mw100 {min-width: 100px;}
+
+.h100 {height: 100px;}
+.h100per {height: 100%;}
 
src/styles/adm/popup.css (added)
+++ src/styles/adm/popup.css
@@ -0,0 +1,63 @@
+@charset "utf-8";
+
+.mask{position:fixed;display:none;width:100%;height:100%;background:rgba(0,0,0,0.64);left:0;top:0;z-index:9;}
+.popup{background:#fff;}
+.popup_title_area{display:flex;width:100%;height:60px;padding:0 20px;border-bottom:1px solid #eee;background:#fff;align-items:center;justify-content:space-between;}
+.popup h1.popup_title{font-size:18px;font-weight:600;color:#222;}
+.popup_title_area .btn_popup_close{width:30px;height:30px;}
+.popup_title_wrap{display:flex;align-items:center;justify-content:space-between;}
+.popup_title_wrap h2{font-size:16px;font-weight:600;color:var(--primary-title-color);}
+.popup_content{padding:30px 24px 50px 24px;}
+
+.popup .btn.large{height:40px;font-size:16px;padding:0 12px;font-weight:500;}
+.popup .btn.xlarge{height:50px;font-size:16px;padding:0 24px;font-weight:500;}
+
+.popup .text_primary{font-size:16px;font-weight:500;}
+.popup .text_secondary{font-size:14px;font-weight:400;}
+
+.popup .search_area.box{padding:0 10px;font-size:14px;}
+.popup .search_item{padding:4px 0;}
+
+.popup .input{height:30px;}
+.popup .input.medium{height:36px;}
+.popup select,.popup .select{height:30px;border:1px solid var(--default-line-color);border-radius:5px;padding:0 32px 0 12px;background:#fff url(/publish/adm/images/component/icon_arrow_down.png) no-repeat calc(100% - 4px) center;}
+
+.popup .radio_wrap,.popup .checkbox_wrap{gap:8px;}
+.popup .radio_item,.popup .checkbox_item{font-size:14px;}
+
+.popup_title_wrap+.table{margin:12px 0 40px 0;}
+.popup.table_type_cols thead>tr>th,.popup.table_type_cols tbody>tr>td{height:40px;font-size:15px;}
+.popup.table_type_rows tbody>tr>th, .popup.table_type_rows tbody>tr>td{height:40px;font-size:15px;padding:8px 12px;}
+
+.popup .page a{width:32px;height:32px;}
+
+/* ?덉씠??*/
+.popup:not(.popup_window){position:absolute;display:none;min-width:200px;min-height:200px;border-radius:12px;overflow:hidden;opacity:0;transition:all 0.3s;left:50%;top:50%;transform:translate(-50%,-50%);}
+.popup.active:not(.popup_window){display:block;opacity:1;z-index:11;}
+
+
+/* ?덉갹?앹뾽 */
+.popup_window{padding:20px;box-sizing:border-box;}
+.popup_window h2.title{display:flex;width:100%;height:50px;font-size:20px;font-weight:bold;color:#fff;padding:0 20px;border-radius:4px;background:#f86a3c;align-items:center;}
+.popup_window h2.title .text_secondary{font-weight:300;}
+
+.popup_window .content_title{margin:40px 0 12px 0;}
+.popup_window h3.title{font-size:18px;font-weight:bold;margin:0;padding:0;}
+.popup_window h3.title::before{display:none;}
+
+.popup_window .search_title{font-weight:400;}
+.popup_window .search_title::after{top:12px;}
+.popup_window .search_area.box{border-radius:4px;}
+.popup_window input[type="text"]{height:30px;}
+.popup_window .search_item:has(input[type='hidden']:only-child){display:none;}
+
+.popup_window .tree{display:flex;border:1px solid #CDD5E6;border-radius:4px;flex-direction:column;}
+.popup_window .tree_title{display:flex;width:100%;height:50px;font-weight:500;padding:0 12px;background:#eff2f9;align-items:center;gap:8px;}
+.popup_window .tree .tree_body{padding:4px 0;max-height:300px;overflow:scroll;}
+.popup_window .tree .tree-node{display:flex;height:auto;font-size:14px;flex-direction:column;align-items:flex-start;padding:0 12px;}
+.popup_window .tree .tree-node label{display:flex;min-height:35px;align-items:center;gap:4px;}
+.popup_window .tree-node.folder .tree-label{padding:0 0 0 26px;}
+.popup_window .tree-node.folder .tree-label::before{width:24px;height:24px;top:50%;transform:translateY(-50%);}
+.popup_window .tree-node.file label{min-height:25px;}
+.popup_window .tree .tree-children{display:flex;width:calc(100% - 24px);font-size:14px;background:#f2f4f5;flex-direction:column;gap:4px;border-radius:4px;padding:8px 12px;margin:0 auto;}
+.popup_window .tree .tree-children .tree-node{height:auto;}
 
src/styles/adm/style.css (added)
+++ src/styles/adm/style.css
@@ -0,0 +1,158 @@
+@charset "utf-8";
+@import url(./icon.css);
+
+/* font weight */
+.fwLg{font-weight: 300 !important}
+.fwRg{font-weight: 400 !important}
+.fwMd{font-weight: 500 !important}
+.fwBold{font-weight: 700 !important}
+
+.sub_font{font-family:var(--secondary-title-font);}
+
+.show{display:block !important;}
+.hide{display:none !important;}
+
+.text_left{text-align:left;}
+.text_right{text-align:right;}
+.text_center{text-align:center;}
+
+.input{height:34px;background:#fff;border:1px solid var(--default-line-color);border-radius:5px;padding:0 12px;}
+input[type="checkbox"].checkbox{width:20px;height:20px;border:1px solid var(--default-line-color);}
+textarea, .testarea{background:#fff;border:1px solid var(--default-line-color);border-radius:5px;padding:8px 12px;}
+select, .select{height:34px;border:1px solid var(--default-line-color);border-radius:5px;padding:0 32px 0 12px;background:#fff url(/publish/adm/images/component/icon_arrow_down.png) no-repeat calc(100% - 4px) center;}
+
+.form_group{display:flex;gap:8px;align-items:center;}
+.form_group.column{flex-direction:column;align-items:flex-start;gap:12px;}
+
+.form_wrap{display:flex;gap:8px;align-items:center;}
+.form_wrap.column{flex-direction:column;align-items:flex-start;gap:4px;}
+
+.email_wrap{display:flex;gap:8px;align-items:center;}
+.email_wrap .input{width:160px;}
+.email_wrap .select{width:160px;}
+
+.radio_wrap,.checkbox_wrap{display:flex;align-items:center;gap:16px;}
+.radio_wrap.column,.checkbox_wrap.column{flex-direction:column;align-items:flex-start;gap:4px;}
+.radio_item,.checkbox_item{display:flex;align-items:center;gap:4px;font-size:16px;}
+
+.input_mix_wrap{display:flex;gap:8px;align-items:center;}
+
+.address_wrap{display:flex;flex-direction:column;align-items:flex-start;gap:8px;}
+.address_row{display:flex;width:60%;gap:8px;}
+.input_post{width:calc(100% - 200px);}
+.adr_default{width:60%;}
+.adr_detail{width:40%;}
+
+.input_desc_wrap{display:flex;width:100%;gap:12px;}
+.input_desc_wrap.column{flex-direction:column;gap:0;margin:8px 0 0 0;}
+.input_desc_wrap .input_desc{margin:0;}
+
+.input_desc{font-size:14px;font-weight:400;color:#666;margin:0 0 0 8px;}
+.input_desc.red{color:var(--red-color);}
+.input_desc.blue{color:var(--primary-color);}
+
+.calendar_wrap{display:flex;align-items:center;gap:8px;}
+.calendar{width:140px;background:#fff url(/publish/adm/images/component/icon_calendar.png) no-repeat calc(100% - 8px) center;}
+.btn_calendar,input.btn_calendar{width:32px;height:32px;background:transparent !important;border:0 !important;margin:0 0 0 -42px;cursor:pointer;}
+
+.time_layer_wrap{position:relative;}
+.time_input{width:110px;background:#fff url(/publish/adm/images/component/icon_clock.png) no-repeat calc(100% - 8px) center;}
+.time_layer{position:absolute;width:230px;padding:20px;border-radius:16px;background:#fff;box-shadow:0 0 10px rgba(0,0,0,0.1);top:calc(100% + 4px);left:0;transform:scale(0.96) translateZ(0) translateY(-20px);opacity:0;transition: transform 300ms ease, opacity 300ms ease, visibility 300ms ease;}
+.time_layer.active{transform:scale(1.0001) translateZ(0) translateY(0);opacity:1;}
+.time_layer .title{display:block;font-size:16px;font-weight:bold;color:var(--primary-title-color);text-align:left;padding:0 0 8px 0;}
+.time_wrap{display:flex;gap:8px;align-items:center;}
+.time_select{width:73px;background-color:#edf0f5;border:0;}
+.time_layer button{width:100%;margin:12px 0 0 0;}
+
+/* search */
+.search_area{display:flex;align-items:flex-end;justify-content:space-between;}
+.search_area.box{padding:0 20px;margin:0 0 40px 0;border:1px solid #cdd5e6;border-radius:10px;background:#eff2f9;flex-direction:column;}
+
+.search_item{display:flex;width:100%;padding:8px 0;align-items:center;border-bottom:1px solid #cdd5e6;}
+.search_item:last-child{border-bottom:0;}
+.search_title{position:relative;min-width:120px;padding:0 0 0 12px;}
+.search_title::after{position:absolute;content:"";width:4px;height:4px;background:var(--primary-color);border-radius:100%;left:0;top:9px;}
+.search_title+.form_wrap{width:calc(100% - 120px);}
+
+.search_select{min-width:120px;}
+.search_input{min-width:300px;}
+
+.search_left .total_number{font-size:14px;color:var(--body-text-color);}
+.search_left .total_number b{font-size:16px;font-weight:bold;color:var(--primary-color);}
+.search_right{display:flex;gap:10px;align-items:center;}
+.search_select{min-width:120px;height:34px;}
+.search_input{min-width:150px;}
+.search_right button{height:34px;padding:0 12px;font-size:16px;font-weight:400;}
+.search_right .btn_search{background:var(--primary-color);color:#fff;}
+.search_right .btn_reset{background:var(--gray-color);color:#fff;}
+
+/* status */
+.status{min-height:34px;font-size:16px;font-weight:500;border-radius:100px;padding:3px 12px;}
+
+.status.line.blue{border:1px solid #135add;color:#135add;background:#fff;}
+.status.line.gray{border:1px solid #d1d6df;color:#858B97;background:#eff0f2;}
+.status.line.orange{border:1px solid #df5f36;color:#df5f36;background:#fff;}
+
+.status.fill.blue{background:#E9EEF8;color:#2557B4;}
+.status.fill.gray{background:#E4E7EE;color:#616576;}
+.status.fill.orange{background:#FEF0EC;color:#F86A3C;}
+
+.status.text{position:relative;padding:0;}
+.status.text::after{position:absolute;content:"";width:100%;height:5px;opacity:0.2;left:0;bottom:2px;}
+.status.text.blue{color:#135add;}
+.status.text.blue::after{background:#135add;}
+.status.text.gray{color:#858B97;}
+.status.text.gray::after{background:#858B97;}
+
+.file_list{display:flex;flex-direction:column;gap:4px;}
+.file_list a{display:flex;gap:4px;align-items:center;}
+
+.file_list.box{padding:15px 35px;margin:40px 0 0 0;background:#f5f7f9;border-radius:15px;gap:10px;}
+.file_list.box a{gap:8px;font-size:18px;color:var(--body-text-color);text-decoration:none;}
+
+/* gallery list */
+.gallery_list{display:flex;border-top:2px solid var(--primary-color);border-bottom:1px solid var(--lightgray-color);margin:12px 0 40px 0;padding:40px 0;gap:20px;flex-wrap:wrap;}
+.gallery_list>li{width:calc((100%/4) - 15px);}
+.gallery_list a{position:relative;width:100%;height:100%;border:1px solid #E2E7EF;}
+.gallery_list .status{position:absolute;display:flex;min-height:30px;font-size:16px;letter-spacing:0.3px;padding:2px 8px;right:12px;top:12px;border-radius:8px;justify-content:center;align-items:center;}
+.gallery_list .primary{background:var(--primary-color);color:#fff;}
+.gallery_list .gray{background:var(--gray-color);color:#fff;}
+.gallery_list .images_area{position:relative;display:flex;width:100%;height:240px;background:#f2f4f7;overflow:hidden;justify-content:center;align-items:center;}
+.gallery_list .images_area .check{position:absolute;left:10px;top:10px;}
+.gallery_list .images_area img{max-width:100%;max-height:100%;object-fit:contain;margin:0 auto;}
+.gallery_list .list_content{padding:20px;}
+.gallery_list .list_title{text-overflow: ellipsis;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;font-size:20px;font-weight:600;color:var(--primary-title-color);}
+.gallery_list .list_info{display:flex;font-size:14px;font-weight:400;color:#636469;margin:12px 0 0 0;}
+.gallery_list .list_info li{position:relative;padding:0 10px;}
+.gallery_list .list_info li:first-child{padding:0 10px 0 0;}
+.gallery_list .list_info li::after{position:absolute;content:"";width:1px;height:10px;background:#636469;right:0;top:6px;}
+.gallery_list .list_info li:last-child::after{display:none;}
+
+
+/* ?볤? */
+.cmmt_wrap{margin:60px 0 0 0;}
+.cmmt_title{display:flex;margin:0 0 12px 0;align-items:center;gap:6px;justify-content:flex-start;}
+.cmmt_title p{font-size:16px;font-weight:400;}
+.cmmt_title p b{font-weight:600;color:var(--primary-color);}
+
+.cmmt_list{display:flex;border-top:2px solid var(--primary-color);flex-direction:column;}
+.cmmt_list li{padding:20px;border-bottom:1px solid var(--default-line-color);}
+.cmmt_top{display:flex;gap:8px;align-items:center;}
+.cmmt_top .writer{font-size:16px;color:var(--primary-title-color);}
+.cmmt_top .cmmt_date{font-size:14px;font-weight:400;color:#666;}
+.cmmt_detail{padding:8px 0 12px 0;font-size:16px;color:var(--body-text-color);}
+.cmmt_bottom .cmmt_date{font-size:14px;color:#666;}
+
+.cmmt_input{margin:40px 0 0 0;}
+/* .cmmt_input form:first-child{display:flex;padding:12px 20px;margin:40px 0 0 0;border-top:1px solid #cdd5e6;border-bottom:1px solid #cdd5e6;background:#f2f4f6;align-items:center;gap:8px;} */
+.cmmt_input textarea{width:calc(100% - 100px);height:120px;}
+.cmmt_input button.btn.xlarge{height:120px;}
+
+
+/* 硫붾돱愿€由?*/
+.menu_container{display:flex;gap:20px;}
+.menu_list_content{width:20%;}
+.menu_list_top{display:flex;justify-content:space-between;align-items:center;}
+.menu_list{width:100%;max-height:calc(100vh - 300px);margin:12px 0 0 0;border-radius:4px;}
+.menu_detail{width:80%;}
+
 
src/styles/adm/tab.css (added)
+++ src/styles/adm/tab.css
@@ -0,0 +1,24 @@
+@charset "utf-8";
+
+.tabs{display:flex;width:100%;margin:0 0 40px 0;}
+
+.tabs.tab02 li{width:calc(100%/2);}
+.tabs.tab03 li{width:calc(100%/3);}
+.tabs.tab04 li{width:calc(100%/4);}
+.tabs.tab05 li{width:calc(100%/5);}
+.tabs.tab06 li{width:calc(100%/6);}
+
+.tabs.fill{background:#EFF2F9;border-radius:10px;padding:0 20px;}
+.tabs.fill .tab{width:100%;min-width:180px;height:60px;font-size:20px;font-weight:500;color:#8F96A6;}
+.tabs.fill .tab.active{border-bottom:3px solid var(--primary-color);font-weight:600;color:var(--primary-color);}
+
+/* .tabs.line{border-bottom:2px solid var(--primary-color);border-top:1px solid #CED3DE;border-radius:10px 10px 0 0;overflow:hidden;} */
+.tabs.line{border:1px solid #ced3de;border-bottom:2px solid var(--primary-color);border-radius:10px 10px 0 0;}
+.tabs.line .tab{position:relative;width:100%;height:50px;font-size:18px;border-right:1px solid #ced3de;}
+.tabs.line .tab.active{background:#E9EEF8;color:var(--primary-color);font-weight:600;border-radius:10px 10px 0 0;}
+.tabs.line .tab.active::after{position:absolute;content:"";width:calc(100% + 2px);height:calc(100% + 2px);left:-1px;top:-1px;border:2px solid var(--primary-color);border-bottom:0;border-radius:10px 10px 0 0;}
+.tabs.line :last-child .tab{border-right:0;}
+
+
+.tab_content{display:none;}
+.tab_content.active{display:block;}
 
src/styles/adm/table.css (added)
+++ src/styles/adm/table.css
@@ -0,0 +1,57 @@
+@charset "utf-8";
+
+.table{border-top:2px solid var(--primary-color);margin:0 0 40px 0;}
+.content_title.h4+.table{margin:0 0 20px 0;}
+.content_title.h5+.table{margin:12px 0 40px 0;}
+
+.table table{table-layout:fixed;width:100%;}
+.table .mobile_show,.table .mobile_hide{display:none;}
+.table .required{color:var(--red-color);margin:0 4px 0 0;}
+
+.table td.visible{overflow:visible !important;}
+
+.table_type_cols{margin:12px 0 40px 0;}
+.table_type_cols tr{border-bottom:1px solid #DEE6F4;}
+.table_type_cols th,.table_type_cols td{padding:4px 8px;font-size:16px;text-align:center;box-sizing:border-box;}
+.table_type_cols thead>tr>th{height:50px;font-weight:500;color:#25272A;background:#eff2f9;}
+.table_type_cols tbody>tr>td{height:50px;font-weight:400;color:#444;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}
+.table_type_cols .text_left a{width:100%;text-align:left;}
+
+
+.table_type_rows{margin:30px 0;}
+.table_type_rows tr{border-bottom:1px solid #e2e7ef;}
+.table_type_rows tbody>tr>th,.table_type_rows tbody>tr>td{height:50px;padding:12px 20px;font-size:16px;color:#25272A;text-align:left;box-sizing:border-box;}
+.table_type_rows tbody>tr>th{font-weight:500;background:#F2F3F5;}
+.table_type_rows tbody>tr>td{font-weight:400;}
+
+.file_top{display:flex;justify-content:space-between;align-items:flex-end;}
+.file_table{height:150px;margin:12px 0 0 0;border:1px solid var(--lightgray-color);border-radius:8px;}
+.file_table table{table-layout:fixed;width:100%;border-collapse: collapse;}
+.file_table tbody{width:100%;max-height:150px;overflow-y:auto;}
+.file_table th{height:36px;font-size:14px;color:#222;padding:0 8px;text-align:center;}
+.file_table tbody>tr>td{height:36px;font-size:14px;color:#444;padding:0 8px;text-align:center;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}
+.file_table .btn_delete{width:28px;}
+.file_table .btn_delete i{width:100%;height:100%;}
+
+.file_table.before_file_table table{height:100%;}
+.file_table.before_file_table thead{opacity:0.3;}
+.file_table.before_file_table tbody{background:#EFF0F4;}
+.file_table.before_file_table tbody tr{height:100%;border:0;text-align:center;}
+.file_table.before_file_table p{font-size:14px;}
+.file_table.before_file_table b{color:var(--primary-color);}
+
+/* 由ъ뒪?몄뿉 ?덈뒗 ?뚯씪?뚯씠釉?*/
+.list_file_td .file_table{height:auto;border:0;margin:0;}
+.list_file_td .file_table tbody>tr>td{height:auto;}
+.list_file_td .file_table .file_row{display:inline-block;max-width:95%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin:6px 0 0 0;}
+.list_file_td .file_table .file_row .file{margin:-2px 0 0 0;}
+
+td.file_view .file_table{margin:0;}
+
+/* 由ъ뒪??- ?댁쟾湲€/?ㅼ쓬湲€ */
+.list_nav{margin:40px 0 0 0;border-top:2px solid var(--primary-color);}
+.list_nav li{display:flex;height:50px;border-bottom:1px solid #D3D7DE;align-items:center;}
+.list_nav li.none .title,.list_nav li.none a{opacity:0.6;}
+.list_nav .title{width:120px;font-size:16px;color:#242426;padding:0 0 0 20px;}
+
+
 
src/styles/adm/validate.css (added)
+++ src/styles/adm/validate.css
@@ -0,0 +1,9 @@
+.input-error {
+    border: 1px solid #e74c3c !important;
+}
+
+.error-text {
+    color: #e74c3c;
+    font-size: 12px;
+    margin-top: 4px;
+}
 
src/styles/app.css (added)
+++ src/styles/app.css
@@ -0,0 +1,30 @@
+.skin_switcher {
+  position: fixed;
+  z-index: 99999;
+  right: 16px;
+  bottom: 16px;
+  display: flex;
+  gap: 6px;
+  padding: 6px;
+  border: 1px solid #cfd6e2;
+  background: #fff;
+  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.16);
+}
+
+.skin_switcher button {
+  height: 32px;
+  padding: 0 12px;
+  border: 1px solid #c7ceda;
+  background: #f8fafc;
+  color: #222;
+  font-size: 13px;
+  font-weight: 700;
+  cursor: pointer;
+}
+
+.skin_switcher button.active {
+  border-color: #2457d6;
+  background: #2457d6;
+  color: #fff;
+}
+
 
src/styles/common/font.css (added)
+++ src/styles/common/font.css
@@ -0,0 +1,317 @@
+/* ================================
+   Noto Sans KR
+   ================================ */
+
+@font-face {
+     font-family: 'Noto Sans KR';
+     font-style: normal;
+     font-weight: 300;
+     src: url('/font/NotoSansKR-Light.woff2') format('woff2'),
+          url('/font/NotoSansKR-Light.woff') format('woff'),
+          url('/font/NotoSansKR-Light.ttf') format('truetype');
+     font-display: block;
+}
+
+@font-face {
+     font-family: 'Noto Sans KR';
+     font-style: normal;
+     font-weight: 400;
+     src: url('/font/NotoSansKR-Regular.woff2') format('woff2'),
+          url('/font/NotoSansKR-Regular.woff') format('woff'),
+          url('/font/NotoSansKR-Regular.ttf') format('truetype');
+     font-display: block;
+}
+
+@font-face {
+     font-family: 'Noto Sans KR';
+     font-style: normal;
+     font-weight: 500;
+     src: url('/font/NotoSansKR-Medium.woff2') format('woff2'),
+          url('/font/NotoSansKR-Medium.woff') format('woff'),
+          url('/font/NotoSansKR-Medium.ttf') format('truetype');
+     font-display: block;
+}
+
+@font-face {
+     font-family: 'Noto Sans KR';
+     font-style: normal;
+     font-weight: 700;
+     src: url('/font/NotoSansKR-Bold.woff2') format('woff2'),
+          url('/font/NotoSansKR-Bold.woff') format('woff'),
+          url('/font/NotoSansKR-Bold.ttf') format('truetype');
+     font-display: block;
+}
+
+@font-face {
+     font-family: 'Noto Sans KR';
+     font-style: normal;
+     font-weight: 800;
+     src: url('/font/NotoSansKR-ExtraBold.woff2') format('woff2'),
+          url('/font/NotoSansKR-ExtraBold.woff') format('woff'),
+          url('/font/NotoSansKR-ExtraBold.ttf') format('truetype');
+     font-display: block;
+}
+
+
+/* ================================
+     Pretendard
+     ================================ */
+
+/* Thin (100) */
+@font-face {
+     font-family: 'Pretendard';
+     font-weight: 100;
+     font-style: normal;
+     src: url('/font/Pretendard-Thin.woff2') format('woff2'),
+          url('/font/Pretendard-Thin.woff') format('woff'),
+          url('/font/Pretendard-Thin.ttf') format('truetype'),
+          url('/font/Pretendard-Thin.otf') format('opentype');
+     font-display: swap;
+}
+
+/* ExtraLight (200) */
+@font-face {
+     font-family: 'Pretendard';
+     font-weight: 200;
+     font-style: normal;
+     src: url('/font/Pretendard-ExtraLight.woff2') format('woff2'),
+          url('/font/Pretendard-ExtraLight.woff') format('woff'),
+          url('/font/Pretendard-ExtraLight.ttf') format('truetype'),
+          url('/font/Pretendard-ExtraLight.otf') format('opentype');
+     font-display: swap;
+}
+
+/* Light (300) */
+@font-face {
+     font-family: 'Pretendard';
+     font-weight: 300;
+     font-style: normal;
+     src: url('/font/Pretendard-Light.woff2') format('woff2'),
+          url('/font/Pretendard-Light.woff') format('woff'),
+          url('/font/Pretendard-Light.ttf') format('truetype'),
+          url('/font/Pretendard-Light.otf') format('opentype');
+     font-display: swap;
+}
+
+/* Regular (400) */
+@font-face {
+     font-family: 'Pretendard';
+     font-weight: 400;
+     font-style: normal;
+     src: url('/font/Pretendard-Regular.woff2') format('woff2'),
+          url('/font/Pretendard-Regular.woff') format('woff'),
+          url('/font/Pretendard-Regular.ttf') format('truetype'),
+          url('/font/Pretendard-Regular.otf') format('opentype');
+     font-display: swap;
+}
+
+/* Medium (500) */
+@font-face {
+     font-family: 'Pretendard';
+     font-weight: 500;
+     font-style: normal;
+     src: url('/font/Pretendard-Medium.woff2') format('woff2'),
+          url('/font/Pretendard-Medium.woff') format('woff'),
+          url('/font/Pretendard-Medium.ttf') format('truetype'),
+          url('/font/Pretendard-Medium.otf') format('opentype');
+     font-display: swap;
+}
+
+/* SemiBold (600) */
+@font-face {
+     font-family: 'Pretendard';
+     font-weight: 600;
+     font-style: normal;
+     src: url('/font/Pretendard-SemiBold.woff2') format('woff2'),
+          url('/font/Pretendard-SemiBold.woff') format('woff'),
+          url('/font/Pretendard-SemiBold.ttf') format('truetype'),
+          url('/font/Pretendard-SemiBold.otf') format('opentype');
+     font-display: swap;
+}
+
+/* Bold (700) */
+@font-face {
+     font-family: 'Pretendard';
+     font-weight: 700;
+     font-style: normal;
+     src: url('/font/Pretendard-Bold.woff2') format('woff2'),
+          url('/font/Pretendard-Bold.woff') format('woff'),
+          url('/font/Pretendard-Bold.ttf') format('truetype'),
+          url('/font/Pretendard-Bold.otf') format('opentype');
+     font-display: swap;
+}
+
+/* ExtraBold (800) */
+@font-face {
+     font-family: 'Pretendard';
+     font-weight: 800;
+     font-style: normal;
+     src: url('/font/Pretendard-ExtraBold.woff2') format('woff2'),
+          url('/font/Pretendard-ExtraBold.woff') format('woff'),
+          url('/font/Pretendard-ExtraBold.ttf') format('truetype'),
+          url('/font/Pretendard-ExtraBold.otf') format('opentype');
+     font-display: swap;
+}
+
+/* Black (900) */
+@font-face {
+     font-family: 'Pretendard';
+     font-weight: 900;
+     font-style: normal;
+     src: url('/font/Pretendard-Black.woff2') format('woff2'),
+          url('/font/Pretendard-Black.woff') format('woff'),
+          url('/font/Pretendard-Black.ttf') format('truetype'),
+          url('/font/Pretendard-Black.otf') format('opentype');
+     font-display: swap;
+}
+
+
+/* ================================
+     Gmarket Sans TTF
+     ================================ */
+
+@font-face {
+     font-family: 'Gmarket Sans TTF';
+     font-weight: 300;
+     font-style: normal;
+     src: url('/font/GmarketSansTTFLight.woff2') format('woff2'),
+          url('/font/GmarketSansTTFLight.woff') format('woff'),
+          url('/font/GmarketSansTTFLight.ttf') format('truetype'),
+          url('/font/GmarketSansTTFLight.eot?#iefix') format('embedded-opentype');
+     font-display: swap;
+}
+
+@font-face {
+     font-family: 'Gmarket Sans TTF';
+     font-weight: 500;
+     font-style: normal;
+     src: url('/font/GmarketSansTTFMedium.woff2') format('woff2'),
+          url('/font/GmarketSansTTFMedium.woff') format('woff'),
+          url('/font/GmarketSansTTFMedium.ttf') format('truetype'),
+          url('/font/GmarketSansTTFMedium.eot?#iefix') format('embedded-opentype');
+     font-display: swap;
+}
+
+@font-face {
+     font-family: 'Gmarket Sans TTF';
+     font-weight: 700;
+     font-style: normal;
+     src: url('/font/GmarketSansTTFBold.woff2') format('woff2'),
+          url('/font/GmarketSansTTFBold.woff') format('woff'),
+          url('/font/GmarketSansTTFBold.ttf') format('truetype'),
+          url('/font/GmarketSansTTFBold.eot?#iefix') format('embedded-opentype');
+     font-display: swap;
+}
+
+/* ================================
+     S-Core Dream 1
+     ================================ */
+
+@font-face {
+     font-family: 'S-Core Dream';
+     src: url('/font/S-CoreDream-1Thin.eot');
+     src: url('/font/S-CoreDream-1Thin.eot?#iefix') format('embedded-opentype'),
+          url('/font/S-CoreDream-1Thin.woff2') format('woff2'),
+          url('/font/S-CoreDream-1Thin.woff') format('woff'),
+          url('/font/S-CoreDream-1Thin.ttf') format('truetype');
+     font-weight: 100;
+     font-style: normal;
+     font-display: swap;
+}
+
+@font-face {
+     font-family: 'S-Core Dream';
+     src: url('/font/S-CoreDream-2ExtraLight.eot');
+     src: url('/font/S-CoreDream-2ExtraLight.eot?#iefix') format('embedded-opentype'),
+          url('/font/S-CoreDream-2ExtraLight.woff2') format('woff2'),
+          url('/font/S-CoreDream-2ExtraLight.woff') format('woff'),
+          url('/font/S-CoreDream-2ExtraLight.ttf') format('truetype');
+     font-weight: 200;
+     font-style: normal;
+     font-display: swap;
+}
+
+@font-face {
+     font-family: 'S-Core Dream';
+     src: url('/font/S-CoreDream-3Light.eot');
+     src: url('/font/S-CoreDream-3Light.eot?#iefix') format('embedded-opentype'),
+          url('/font/S-CoreDream-3Light.woff2') format('woff2'),
+          url('/font/S-CoreDream-3Light.woff') format('woff'),
+          url('/font/S-CoreDream-3Light.ttf') format('truetype');
+     font-weight: 300;
+     font-style: normal;
+     font-display: swap;
+}
+
+@font-face {
+     font-family: 'S-Core Dream';
+     src: url('/font/S-CoreDream-4Regular.eot');
+     src: url('/font/S-CoreDream-4Regular.eot?#iefix') format('embedded-opentype'),
+          url('/font/S-CoreDream-4Regular.woff2') format('woff2'),
+          url('/font/S-CoreDream-4Regular.woff') format('woff'),
+          url('/font/S-CoreDream-4Regular.ttf') format('truetype');
+     font-weight: 400;
+     font-style: normal;
+     font-display: swap;
+}
+
+@font-face {
+     font-family: 'S-Core Dream';
+     src: url('/font/S-CoreDream-5Medium.eot');
+     src: url('/font/S-CoreDream-5Medium.eot?#iefix') format('embedded-opentype'),
+          url('/font/S-CoreDream-5Medium.woff2') format('woff2'),
+          url('/font/S-CoreDream-5Medium.woff') format('woff'),
+          url('/font/S-CoreDream-5Medium.ttf') format('truetype');
+     font-weight: 500;
+     font-style: normal;
+     font-display: swap;
+}
+
+@font-face {
+     font-family: 'S-Core Dream';
+     src: url('/font/S-CoreDream-6Bold.eot');
+     src: url('/font/S-CoreDream-6Bold.eot?#iefix') format('embedded-opentype'),
+          url('/font/S-CoreDream-6Bold.woff2') format('woff2'),
+          url('/font/S-CoreDream-6Bold.woff') format('woff'),
+          url('/font/S-CoreDream-6Bold.ttf') format('truetype');
+     font-weight: 600;
+     font-style: normal;
+     font-display: swap;
+}
+
+@font-face {
+     font-family: 'S-Core Dream';
+     src: url('/font/S-CoreDream-7ExtraBold.eot');
+     src: url('/font/S-CoreDream-7ExtraBold.eot?#iefix') format('embedded-opentype'),
+          url('/font/S-CoreDream-7ExtraBold.woff2') format('woff2'),
+          url('/font/S-CoreDream-7ExtraBold.woff') format('woff'),
+          url('/font/S-CoreDream-7ExtraBold.ttf') format('truetype');
+     font-weight: 700;
+     font-style: normal;
+     font-display: swap;
+}
+
+@font-face {
+     font-family: 'S-Core Dream';
+     src: url('/font/S-CoreDream-8Heavy.eot');
+     src: url('/font/S-CoreDream-8Heavy.eot?#iefix') format('embedded-opentype'),
+          url('/font/S-CoreDream-8Heavy.woff2') format('woff2'),
+          url('/font/S-CoreDream-8Heavy.woff') format('woff'),
+          url('/font/S-CoreDream-8Heavy.ttf') format('truetype');
+     font-weight: 800;
+     font-style: normal;
+     font-display: swap;
+}
+
+@font-face {
+     font-family: 'S-Core Dream';
+     src: url('/font/S-CoreDream-9Black.eot');
+     src: url('/font/S-CoreDream-9Black.eot?#iefix') format('embedded-opentype'),
+          url('/font/S-CoreDream-9Black.woff2') format('woff2'),
+          url('/font/S-CoreDream-9Black.woff') format('woff'),
+          url('/font/S-CoreDream-9Black.ttf') format('truetype');
+     font-weight: 900;
+     font-style: normal;
+     font-display: swap;
+}
+
 
src/styles/common/reset.css (added)
+++ src/styles/common/reset.css
@@ -0,0 +1,210 @@
+/* ========================================================================
+   reset.css ??2025
+   ?묒꽦?? ?뺤닔鍮?
+   ?좎쭨: 2025-10-17
+   ======================================================================== */
+
+/* box-sizing & 湲곕낯 由ъ뀑 */
+*, *::before, *::after {
+  box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+}
+
+/* HTML5 ?붿냼 湲곕낯 ?쒖떆 蹂댁옣 */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section, main {
+  display: block;
+}
+
+/* root ?ㅼ젙 */
+html {
+  scroll-behavior: smooth;
+  -webkit-text-size-adjust: 100%;
+  font-size: 16px;
+}
+
+body {
+  min-height: 100vh;
+  line-height: 1.5;
+  font-family: 'Noto Sans KR', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  letter-spacing: -0.35px;
+  color: #222;
+  background-color: #fff;
+}
+
+/* ?띿뒪???붿냼 */
+h1, h2, h3, h4, h5, h6, p {
+  font-weight: inherit;
+  font-size: inherit;
+  color: inherit;
+  margin: 0;
+  padding: 0;
+}
+
+a {
+  color: inherit;
+  text-decoration: none;
+  display: inline-block;
+}
+a:focus-visible {
+  outline: 2px solid #222;
+  outline-offset: 3px;
+}
+
+/* 由ъ뒪??*/
+ol, ul {
+  list-style: none;
+}
+
+/* ?대?吏€ 諛?誘몃뵒??*/
+img, picture, video, canvas, svg {
+  display: block;
+  max-width: 100%;
+  height: auto;
+  border: 0;
+  font-size: 0;
+}
+
+/* ??*/
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+  table-layout: fixed;
+  width: 100%;
+}
+
+/* ???붿냼 */
+button, input, select, textarea {
+  font: inherit;
+  color: inherit;
+  border: none;
+  background: none;
+  margin: 0;
+  padding: 0;
+  vertical-align: middle;
+  
+  appearance: none;
+}
+
+/* ?쇰뵒?? 泥댄겕諛뺤뒪??appearance ?쒓굅 湲덉? (湲곕낯 ?쒖떆 ?좎?) */
+input[type="radio"],
+input[type="checkbox"] {
+  appearance: auto;
+  -webkit-appearance: auto;
+  -moz-appearance: auto;
+  display: inline-block;
+  width: auto;
+  height: auto;
+  cursor: pointer;
+  vertical-align: middle;
+}
+
+button {
+  cursor: pointer;
+  background: transparent;
+}
+
+input::placeholder,
+textarea::placeholder {
+  color: #777;
+  font-weight: 400;
+  font-size:14px;
+}
+
+input:disabled,
+input:read-only,
+textarea:disabled,
+textarea:read-only,
+select:disabled,
+select:read-only
+input.readonly,
+textarea.readonly,
+select.readonly{
+  background-color: var(--disable-fill-bg-color) !important;
+  color: var(--disable-fill-text-color) !important;
+  border: 1px solid var(--disable-fill-line-color) !important;
+}
+
+/* ?묎렐??- label ?④? 泥섎━ */
+caption,.caption, .label, .sr-only, .visually-hidden {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  white-space: nowrap;
+  border: 0;
+}
+
+/* ?ㅽ겕濡ㅻ컮 而ㅼ뒪?곕쭏?댁쭠 */
+::-webkit-scrollbar {
+  width: 7px;
+  height: 7px;
+}
+::-webkit-scrollbar-thumb {
+  background: #adadad;
+  border-radius: 10px;
+}
+::-webkit-scrollbar-track {
+  background: transparent;
+}
+
+/* ?몄슜, 湲고? */
+blockquote, q {
+  quotes: none;
+}
+blockquote::before, blockquote::after,
+q::before, q::after {
+  content: '';
+}
+
+/* ???덉쇅 泥섎━ */
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  appearance: none;
+}
+
+/* 二쇱냼, ?댄깶由???*/
+address, em, i {
+  font-style: normal;
+}
+
+/* hr */
+hr {
+  border: none;
+  height: 1px;
+  background: #e0e0e0;
+  margin: 0;
+}
+
+/* ?띿뒪?몄쁺??湲곕낯 */
+textarea {
+  resize: vertical;
+  color: #333;
+}
+
+/* ?묎렐?? 紐⑥뀡 以꾩씠湲??좏샇 ??*/
+@media (prefers-reduced-motion: reduce) {
+  *, *::before, *::after {
+    animation-duration: 0.001ms !important;
+    transition-duration: 0.001ms !important;
+    scroll-behavior: auto !important;
+  }
+}
+
+/* ?ㅽ겕紐⑤뱶 湲곕낯 ?€??*/
+/*@media (prefers-color-scheme: dark) {*/
+/*  body {*/
+/*    color: #e6e6e6;*/
+/*    background-color: #111;*/
+/*  }*/
+/*  ::-webkit-scrollbar-thumb {*/
+/*    background: #666;*/
+/*  }*/
+/*}*/
+
 
src/styles/common/reset_bak.css (added)
+++ src/styles/common/reset_bak.css
@@ -0,0 +1,53 @@
+/* reset ?뚯씪 ?뺣━ */
+
+html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video {margin: 0;padding: 0;border: 0;font-size: 100%;font: inherit;vertical-align: baseline;color: inherit;font-weight: inherit;font-family: 'Noto Sans KR', sans-serif; word-break: keep-all;}
+article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section {display: block; font-family: 'Noto Sans KR', sans-serif; margin: 0; padding: 0; border: 0; font-size: 100%;}
+body {min-height: 100vh;line-height: 1.4;-webkit-font-smoothing: antialiased;letter-spacing:-0.5px;;}
+ol,ul,li {list-style: none;}
+p, h1, h2, h3, h4, h5, h6 {margin: 0; padding: 0;letter-spacing: -0.35px;}
+h1, h2, h3, h4, h5, h6, button, input, label{line-height:1.1;}
+a {color: inherit; text-decoration: none; display: block;}
+/* a:focus:active:hover{outline: 0} */
+img {display:block;max-width: 100%;font-size: 0; border: 0;}
+table {border-collapse: collapse; border-spacing: 0; table-layout: fixed;}
+select, input {vertical-align: middle; font-family: 'Noto Sans KR', sans-serif; margin:0;}
+caption, .label{position: absolute;width: 1px; height: 1px; margin: 0; border: none; clip: rect(0,0,0,0); overflow: hidden;}
+/* ?덈뱶濡쒖씠??諛??꾩씠?곗뿉??湲곕낯?곸쑝濡??곸슜?섏뼱?덈뒗 select, input css ?쒓굅. */
+select {background-color: #fff; appearance: none; -webkit-appearance: none; -moz-appearance: none;}
+select::-ms-expand {display: none;}
+button,html input[type="button"],input[type="reset"],input[type="submit"] {-webkit-appearance: button; cursor: pointer; *overflow: visible; font-family: 'Noto Sans KR', sans-serif;}
+button[disabled],html input[disabled] {cursor: default;}
+/* ie ?섏쐞踰꾩쟾 湲곕낯?곸쑝濡??곸슜?섏뼱 ?덈뒗 css 蹂€寃?*/
+input[type="checkbox"],input[type="radio"] {box-sizing: border-box; padding: 0; *height: 13px; *width: 13px;}
+/* ?꾩씠??湲곕낯?곸쑝濡??곸슜?섏뼱 ?덈뒗 踰꾪듉 css 蹂€寃?*/
+input{-webkit-appearance: button;}
+input::placeholder{font-size:15px;font-weight:300;font-family:'Noto Sans KR', sans-serif;}
+/* ?ы뙆由?, ?щ\?먯꽌 湲곕낯?곸쑝濡??곸슜?섏뼱 ?덈뒗 css 蹂€寃?*/
+input[type="search"] {-webkit-appearance: textfield; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; box-sizing: content-box;}
+input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration {-webkit-appearance: none;}
+address, em, i {font-style: normal;}
+button {border: 0; background: none; cursor: pointer;}
+hr {margin: 0; border: none; padding: 0; display: block;}
+figure, figcaption {margin: 0; padding: 0;}
+form, fieldset {border: none; margin: 0; padding: 0; line-height: 1;}
+input[type="submit"] {-webkit-appearance: none; -moz-appearance: none; appearance: none;}
+header, footer, article, section, aside, nav, main {display: block;}
+textarea{color: #666;font-size: 20px;font-weight: 300; font-family: 'Noto Sans KR', sans-serif;}
+
+input::placeholder,input[type="text"]::placeholder,input[type="password"]::placeholder,input[type="text"]:-ms-input-placeholder,input[type="password"]:-ms-input-placeholder{color: #666 !important; font-size: 16px !important;}
+input[type="text"]:focus::placeholder,input[type="password"]:focus::placeholder{color: transparent;}
+
+input:disabled,input[disabled="disabled"],input:read-only,input[readonly="readonly"]{background-color: #f8f9fa !important; color: #aaa !important; border:1px solid #d8d8d8 !important; font-size: 16px;}
+button:disabled,button[disabled="disabled"]{background-color: #f8f9fa !important; color: #aaa !important; border: 1px solid #d8d8d8 !important;}
+select:disabled,select[disabled="disabled"],select.read-only,select[readonly="readonly"]{background-color: #f8f9fa !important; color: #aaa !important; border: 1px solid #d8d8d8 !important;pointer-events:none;}
+*,*::before,*::after {box-sizing: border-box;}
+
+:target{scroll-margin-block: 5ex;}
+
+/* a:hover, a:active,a:hover:active { outline: none; }
+a:focus:not(:focus) {outline: none;}
+a:focus:not(:focus-visible){outline: none;} */
+
+::-webkit-scrollbar{width:7px;height:7px;} /* ?ㅽ겕濡ㅻ컮 ?덈퉬 */
+::-webkit-scrollbar-thumb{background:#adadad;border-radius:10px;} /* ?ㅽ겕濡ㅻ컮 紐⑥뼇 */
+::-webkit-scrollbar-track{background:transparent;} /* ?룸같寃?*/
 
src/styles/common/style.css (added)
+++ src/styles/common/style.css
@@ -0,0 +1,187 @@
+@charset "utf-8";
+
+/* 媛꾧꺽 */
+.p0 {padding: 0px!important;}
+.p5 {padding: 5px!important;}
+
+.pt5 {padding-top: 5px!important;}
+.pt10 {padding-top: 10px!important;}
+.pt15 {padding-top: 15px!important;}
+.pt20 {padding-top: 20px!important;}
+.pt25 {padding-top: 25px!important;}
+.pt30 {padding-top: 30px!important;}
+.pt35 {padding-top: 35px!important;}
+.pt40 {padding-top: 40px!important;}
+.pt45 {padding-top: 45px!important;}
+.pt50 {padding-top: 50px!important;}
+
+.pr0 {padding-right: 0px!important;}
+.pr20 {padding-right: 20px!important;}
+
+.pb5 {padding-bottom: 5px!important;}
+.pb10 {padding-bottom: 10px!important;}
+.pb15 {padding-bottom: 15px!important;}
+.pb20 {padding-bottom: 20px!important;}
+.pb25 {padding-bottom: 25px!important;}
+.pb30 {padding-bottom: 30px!important;}
+.pb35 {padding-bottom: 35px!important;}
+.pb40 {padding-bottom: 40px!important;}
+.pb45 {padding-bottom: 45px!important;}
+.pb50 {padding-bottom: 50px!important;}
+
+.pl0 {padding-left: 0px!important;}
+.pl15 {padding-left: 15px!important;}
+.pl20 {padding-left: 20px!important;}
+
+.m20 {margin: 20px!important;}
+
+.mt-1 {margin-top: -1px!important;}
+.mt0 {margin-top: 0px!important;}
+.mt5 {margin-top: 5px!important;}
+.mt10 {margin-top: 10px!important;}
+.mt15 {margin-top: 15px!important;}
+.mt20 {margin-top: 20px!important;}
+.mt25 {margin-top: 25px!important;}
+.mt30 {margin-top: 30px!important;}
+.mt35 {margin-top: 35px!important;}
+.mt40 {margin-top: 40px!important;}
+.mt45 {margin-top: 45px!important;}
+.mt50 {margin-top: 50px!important;}
+.mt60 {margin-top: 60px!important;}
+.mt70 {margin-top: 70px!important;}
+.mt80 {margin-top: 80px!important;}
+.mt90 {margin-top: 90px!important;}
+.mt100 {margin-top: 100px!important;}
+
+.mr0 {margin-right: 0px!important;}
+.mr3 {margin-right: 3px!important;}
+.mr5 {margin-right: 5px!important;}
+.mr10 {margin-right: 10px!important;}
+.mr15 {margin-right: 15px!important;}
+.mr20 {margin-right: 20px!important;}
+.mr25 {margin-right: 25px!important;}
+.mr30 {margin-right: 30px!important;}
+.mr35 {margin-right: 35px!important;}
+.mr40 {margin-right: 40px!important;}
+.mr45 {margin-right: 45px!important;}
+.mr50 {margin-right: 50px!important;}
+.mr60 {margin-right: 60px!important;}
+.mr70 {margin-right: 70px!important;}
+.mr80 {margin-right: 80px!important;}
+.mr90 {margin-right: 90px!important;}
+.mr100 {margin-right: 100px!important;}
+
+.mb-4 {margin-bottom: -4px!important;}
+.mb0 {margin-bottom: 0px!important;}
+.mb1 {margin-bottom: 1px!important;}
+.mb5 {margin-bottom: 5px!important;}
+.mb10 {margin-bottom: 10px!important;}
+.mb15 {margin-bottom: 15px!important;}
+.mb18 {margin-bottom: 18px!important;}
+.mb20 {margin-bottom: 20px!important;}
+.mb25 {margin-bottom: 25px!important;}
+.mb30 {margin-bottom: 30px!important;}
+.mb35 {margin-bottom: 35px!important;}
+.mb40 {margin-bottom: 40px!important;}
+.mb45 {margin-bottom: 45px!important;}
+.mb50 {margin-bottom: 50px!important;}
+.mb60 {margin-bottom: 60px!important;}
+.mb70 {margin-bottom: 70px!important;}
+.mb80 {margin-bottom: 80px!important;}
+.mb90 {margin-bottom: 90px!important;}
+.mb100 {margin-bottom: 100px!important;}
+
+.ml0 {margin-left: 0px!important;}
+.ml5 {margin-left: 5px!important;}
+.ml10 {margin-left: 10px!important;}
+.ml15 {margin-left: 15px!important;}
+.ml20 {margin-left: 20px!important;}
+.ml25 {margin-left: 25px!important;}
+.ml30 {margin-left: 30px!important;}
+.ml35 {margin-left: 35px!important;}
+.ml40 {margin-left: 40px!important;}
+.ml45 {margin-left: 45px!important;}
+.ml50 {margin-left: 50px!important;}
+.ml60 {margin-left: 60px!important;}
+.ml70 {margin-left: 70px!important;}
+.ml80 {margin-left: 80px!important;}
+.ml90 {margin-left: 90px!important;}
+.ml100 {margin-left: 100px!important;}
+
+/* ?덈퉬, ?믪씠 */
+.w100per {width: 100% !important;}
+.w99per {width: 99%;}
+.w95per {width: 95%;}
+.w90per {width: 90%;}
+.w85per {width: 85%;}
+.w80per {width: 80%;}
+.w75per {width: 75%;}
+.w70per {width: 70%;}
+.w65per {width: 65%;}
+.w60per {width: 60%;}
+.w50per {width: 50%;}
+.w55per {width: 55%;}
+.w45per {width: 45%;}
+.w40per {width: 40%;}
+.w35per {width: 35%;}
+.w33per {width: 33.3333333%;}
+.w30per {width: 30%;}
+.w25per {width: 25%;}
+.w20per {width: 20%;}
+.w19per {width: 19%;}
+.w18per {width: 18%;}
+.w17per {width: 17%;}
+.w16per {width: 16%;}
+.w15per {width: 15%;}
+.w14per {width: 14%;}
+.w13per {width: 13%;}
+.w12per {width: 12%;}
+.w11per {width: 11%;}
+.w10per {width: 10%;}
+.w9per {width: 9%;}
+.w8per {width: 8%;}
+.w7per {width: 7%;}
+.w6per {width: 6%;}
+.w5per {width: 5%;}
+.w4per {width: 4%;}
+.w3per {width: 3%;}
+.w2per {width: 2%;}
+.w1per {width: 1%;}
+
+.w5 {width: 5px;}
+.w10 {width: 10px;}
+.w15 {width: 15px;}
+.w20 {width: 20px;}
+.w25 {width: 25px;}
+.w30 {width: 30px;}
+.w35 {width: 35px;}
+.w40 {width: 40px;}
+.w45 {width: 45px;}
+.w50 {width: 50px;}
+.w55 {width: 55px;}
+.w60 {width: 60px;}
+.w70 {width: 70px;}
+.w80 {width: 80px;}
+.w90 {width: 90px;}
+.w100 {width: 100px;}
+.w110 {width: 110px;}
+.w120 {width: 120px;}
+.w130 {width: 130px;}
+.w140 {width: 140px;}
+.w150 {width: 150px;}
+.w160 {width: 160px;}
+.w170 {width: 170px;}
+.w180 {width: 180px;}
+.w190 {width: 190px;}
+.w200 {width: 200px;}
+.w250 {width: 250px;}
+.w300 {width: 300px;}
+.w325 {width: 325px;}
+.w350 {width: 350px;}
+.w400 {width: 400px;}
+.w500 {width: 500px;}
+
+.mw100 {min-width: 100px;}
+
+.h100 {height: 100px;}
+.h100per {height: 100%;}
 
src/styles/usr/button.css (added)
+++ src/styles/usr/button.css
@@ -0,0 +1,82 @@
+/* 踰꾪듉 */
+/* -> 踰꾪듉?€ readonly ?놁쓬 */
+/* -> disabled???ㅽ??쇰쭔 留뚮뱾怨??ъ슜X(?뱀젒洹쇱꽦 ?몄쬆 ???덈맖. ?대옒?ㅻ줈 ?€泥? */
+
+/* 踰꾪듉 ?덉씠?꾩썐 */
+.btn_wrap{display:flex;justify-content:space-between;}
+.btn_wrap.column{flex-direction:column;gap:4px;}
+.btn_wrap>div{display:flex;width:calc(100%/3);gap:8px}
+
+.btn_wrap.left, .btn_wrap .left{justify-content:flex-start;}
+.btn_wrap.center,.btn_wrap .center{justify-content:center;}
+.btn_wrap.right,.btn_wrap .right{justify-content:flex-end;}
+
+
+/* 踰꾪듉 ?ㅽ???*/
+.btn{border-radius: 5px;box-sizing:border-box;}
+.btn:hover{box-shadow: 0px 0px 1px 1px rgba(0,0,0,0.08);transition: all 0.3s ease;}
+
+.btn.only_text{padding:0 !important;}
+.btn.only_icon{padding:0 !important;}
+
+.btn.xssmall{height:28px;font-size:14px;padding:0 4px;}
+.btn.ssmall{height:30px;font-size:14px;padding:0 6px;}
+.btn.small{height:32px;font-size:16px;padding:0 6px;}
+.btn.medium{height:34px;font-size:16px;padding:0 8px;}
+.btn.large{height:38px;font-size:18px;padding:0 12px;}
+.btn.xlarge{height:50px;font-size:18px;padding:0 24px;}
+
+.btn.fill.primary{background-color: var(--primary-color);color: #fff;}
+.btn.fill.primary:hover{background-color: var(--primary-color-hover);color: #fff;}
+.btn.fill.primary_light{background-color: var(--primary-light-color);border: 1px solid var(--primary-light-border);color:#222;}
+.btn.fill.primary_light:hover{background-color: var(--primary-light-color-hover);}
+.btn.fill.secondary{background-color: var(--secondary-color);color: #1A1B1D;}
+.btn.fill.secondary:hover{background-color: var(--secondary-color-hover);}
+.btn.fill.accent{background-color: var(--accent-color);color: #fff;}
+.btn.fill.accent:hover{background-color: var(--accent-color-hover);}
+.btn.fill.accent_light{background-color: var(--accent-light-color);color: var(--accent-dark-color);}
+.btn.fill.accent_light:hover{background-color: var(--accent-light-color-hover);}
+.btn.fill.red{background-color: var(--red-color);color: #fff;}
+.btn.fill.red:hover{background-color: var(--red-color-hover);}
+.btn.fill.green{background-color: var(--green-color);color: #fff;}
+.btn.fill.green:hover{background-color: var(--green-color-hover);}
+.btn.fill.gray{background-color: var(--gray-color);color: #fff;}
+.btn.fill.gray:hover{background-color: var(--gray-color-hover);}
+.btn.fill.lightgray{background-color: var(--lightgray-color);color: #5b606c;}
+.btn.fill.lightgray:hover{background-color: var(--lightgray-color-hover);}
+
+.btn.line.primary{border: 1px solid var(--primary-color);color: var(--primary-color);}
+.btn.line.primary:hover{border: 1px solid var(--primary-color-hover);color: var(--primary-color-hover);}
+.btn.line.secondary{border: 1px solid var(--secondary-color);color: #222;}
+.btn.line.secondary:hover{border: 1px solid var(--secondary-color-hover);}
+.btn.line.accent{border: 1px solid var(--accent-color);color: var(--accent-color);}
+.btn.line.accent:hover{border: 1px solid var(--accent-color-hover);}
+.btn.line.red{border: 1px solid var(--red-color);color: var(--red-color);}
+.btn.line.red:hover{background:var(--red-light-color);color: var(--red-color-hover);}
+.btn.line.green{border: 1px solid var(--green-color);color: var(--green-color);}
+.btn.line.green:hover{background-color: var(--green-color-hover);}
+.btn.line.gray{border: 1px solid var(--gray-color);color: var(--gray-color);}
+.btn.line.gray:hover{background-color: var(--disable-line-bg-color);}
+.btn.line.lightgray{border: 1px solid var(--lightgray-color);color: #5B606C;}
+.btn.line.lightgray:hover{background-color: var(--disable-line-bg-color);}
+
+
+.btn.fill.disabled,.btn.fill.readonly,.btn.fill:disabled{background:var(--disable-fill-bg-color) !important; color:var(--disable-fill-text-color) !important; pointer-events:none;}
+.btn.line.disabled,.btn.line.readonly,.btn.line:disabled{background:var(--disable-line-bg-color) !important;border:1px solid var(--disable-line-border-color);color:var(--disable-line-text-color) !important;pointer-events:none;}
+
+.btn_delete i.icon.delete{background-size:80%;margin:-1px 0 0 0;}
+
+
+/* ?섏씠吏€ */
+.page{display:flex;gap:6px;margin:30px auto 0 auto;justify-content:center;align-items:center;}
+.page a{display:flex;width:36px;height:36px;border:1px solid transparent;border-radius:5px;font-size:16px;color:#878B96;justify-content:center;align-items:center;transition:all .3s;}
+.page a:hover{background:#F5F6F7;color:#3a3c41;}
+.page .active{border:1px solid #E2E7EF;background:#e2e7ef;font-weight:600;color:#3a3c41;}
+.page .btn_page{border:1px solid #d2d7df;border-radius:5px;overflow:hidden;}
+.page .btn_page:hover{background-color:#F5F6F7;}
+.page .btn_page i{display:inline-block;width:100%;height:100%;transition:all .3s;}
+.btn_first i{background:url(/publish/usr/images/component/icon_double_arrow_left_page.png) no-repeat center;}
+.btn_prev i{background:url(/publish/usr/images/component/icon_arrow_left_page.png) no-repeat center;}
+.btn_next i{background:url(/publish/usr/images/component/icon_arrow_right_page.png) no-repeat center;}
+.btn_last i{background:url(/publish/usr/images/component/icon_double_arrow_right_page.png) no-repeat center;}
+
 
src/styles/usr/calendar.css (added)
+++ src/styles/usr/calendar.css
@@ -0,0 +1,1 @@
+(No newline at end of file)
 
src/styles/usr/common.css (added)
+++ src/styles/usr/common.css
@@ -0,0 +1,59 @@
+@charset "utf-8";
+
+:root{
+  --primary-color: #2c45c3;
+  --primary-color-hover: #283eb0;
+  --primary-light-color: #eaecf9;
+  --primary-light-color-hover: #dfe3f6;
+  --primary-lighter-color: #F0F2FB;
+  --primary-lighter-color-hover: #D2D7EF;
+  --primary-dark-color: #213492;
+  --primary-dark-color-hover: #1a2975;
+
+  --secondary-color: #2de394;
+  --secondary-color-hover: #29cc85;
+  --secondary-light-color: #eafcf4;
+  --secondary-light-color-hover: #e0fbef;
+  --secondary-dark-color: #22aa6f;
+  --secondary-dark-color-hover: #1b8859;
+
+  --accent-color:#f86a3c;
+  --accent-color-hover:#df5f36;
+  --accent-light-color:#fef0ec;
+  --accent-light-color-hover:#fee9e2;
+  --accent-dark-color:#ba502d;
+  --accent-dark-color-hover:#954024;
+
+
+  --red-color: #e81717;
+  --red-color-hover: #d11515;
+  --red-light-color: #fde8e8;
+  --red-light-color-hover: #fee9e2;
+
+  --green-color: #19B32B;
+  --green-color-hover: #0E9A1F;
+
+  --gray-color: #81899C;
+  --gray-color-hover: #717379;
+  --lightgray-color: #D5D9E3;
+  --lightgray-color-hover: #BFC3CD;
+
+  --primary-title-font:'Pretendard';
+  --secondary-title-font:'Gmarket Sans TTF';
+
+  --primary-title-color:#1A1B1D;
+  --body-text-color:#3F4043;
+
+  --disable-fill-bg-color:#F8F9FA;
+  --disable-fill-line-color:#D3D7DE;
+  --disable-fill-text-color:#8d9098;
+
+  --default-line-color:#d3d7de;
+  --disable-line-bg-color:#f5f6f7;
+  --disable-line-border-color:#eaebef;
+  --disable-line-text-color:#bcc0ca;
+}
+
+
+
+
 
src/styles/usr/content.css (added)
+++ src/styles/usr/content.css
@@ -0,0 +1,420 @@
+/* ==================================================
+     怨듯넻?덉씠?꾩썐
+  ================================================== */
+
+  body.lock_scroll{overflow:hidden;}
+
+  .sub_visual{position:relative;width:100%;height:615px;border-radius:0 0 80px 80px;}
+  .sub_title{display:flex;height:100%;font-family:var(--secondary-title-font);font-size:60px;font-weight:bold;color:#fff;letter-spacing:1px;text-shadow:0 0 20px rgba(0,0,0,.3);align-items:center;justify-content:center;}
+  .sub_visual_nav{position:relative;display:flex;width:45%;border-radius:38px 38px 0 0;background:#fff;padding:0 20px;bottom:66px;left:50%;transform:translateX(-50%);align-items:center;}
+  .sub_visual_nav a,.sub_visual_nav .snb_wrap{position:relative;height:66px;}
+  .sub_visual_nav>a::after,.sub_visual_nav .snb_wrap::after{position:absolute;display:inline-block;content:"";width:1px;height:20px;background:#d9d9d9;right:0;top:50%;transform:translateY(-50%);}
+  .sub_visual_nav .snb_wrap:last-child::after{display:none;}
+  .sub_visual_nav::before,.sub_visual_nav::after{position:absolute;content:"";width:41px;height:41px;bottom:0;}
+  .sub_visual_nav::before{background:url(/publish/usr/images/common/sub_visual_nav_left.png);left:-40px;}
+  .sub_visual_nav::after{background:url(/publish/usr/images/common/sub_visual_nav_right.png);right:-40px;}
+  .sub_visual_nav .snb_wrap{width:calc((100% - 66px)/2);}
+  .snb_title{width:100%;height:100%;font-size:20px;font-weight:500;text-align:left;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding:0 60px 0 20px;border:none;background:url(/publish/usr/images/component/icon_select.png) no-repeat calc(100% - 20px) center;}
+  .snb_select{position:absolute;display:none;width:100%;background:#fff;padding:10px;overflow:hidden;top:calc(100% + 4px);border-radius:8px;box-shadow:2px 3px 4px 0 rgba(0, 0, 0, .08);}
+  .snb_select a{display:flex;height:40px;font-size:16px;padding:0 20px;justify-content:flex-start;align-items:center;}
+  .snb_select a:hover{background:var(--primary-light-color);color:var(--primary-color);border-radius:8px;}
+  .active .snb_select{width:100%;height:auto;left:0;border:1px solid #f0f0f0;}
+  
+  .company .sub_visual{background:url(/publish/usr/images/company/visual.jpg);}
+  .major_result .sub_visual{background:url(/publish/usr/images/major_result/visual.jpg);}
+  .platform_tech .sub_visual{background:url(/publish/usr/images/platform_tech/visual.jpg);}
+  
+  .con_title{display:flex;margin:80px 0 36px 0;flex-direction:column;}
+  .con_title .summary{font-family:var(--secondary-title-font);font-size:24px;margin:0 0 12px 0;}
+  .con_title .summary.black{font-family:var(--primary-title-font);}
+  .con_title .title{font-family:var(--secondary-title-font);font-size:36px;}
+  
+  .box{background:#f2f4f6;border-radius:40px;}
+  
+  
+  /* ==================================================
+       Company
+    ================================================== */
+  
+  /* ?ㅻ┰諛곌꼍 */
+  .overview{text-align:center;}
+  .overview_contents_top{background:url(/publish/usr/images/company/corp_bg.png) no-repeat center 80px;}
+  .overview .txt strong{font-family:var(--secondary-title-font);font-size:52px;font-weight:bold;}
+  .overview .txt strong span{font-family:var(--secondary-title-font);font-weight:bold;}
+  .overview .txt p{font-family:var(--secondary-title-font);font-size:24px;}
+  .overview .card{display:flex;padding:90px 0 280px 0;gap:46px;justify-content:center;}
+  .overview .card li{position:relative;display:flex;width:calc((100% / 4) - 90px);height:363px;padding:0 30px;text-align:left;color:#fff;border-radius:24px;flex-direction:column;justify-content:flex-end;}
+  .overview .card li:nth-child(2n){transform:translateY(52px);}
+  .overview .card li:nth-child(1){background:url(/publish/usr/images/company/card_01.png) no-repeat center;}
+  .overview .card li:nth-child(2){background:url(/publish/usr/images/company/card_02.png) no-repeat center;}
+  .overview .card li:nth-child(3){background:url(/publish/usr/images/company/card_03.png) no-repeat center;}
+  .overview .card li:nth-child(4){background:url(/publish/usr/images/company/card_04.png) no-repeat center;}
+  .overview .card .number,.overview .card .title{font-family:var(--secondary-title-font);font-weight:bold;}
+  .overview .card .number{position:absolute;font-size:20px;top:25px;right:25px;}
+  .overview .card .title{display:block;font-size:24px;font-weight:bold;}
+  .overview .card .summary{font-size:16px;opacity:0.8;margin:0 0 32px 0;word-break:keep-all;}
+  
+  .overview .circles{position:relative;justify-content:space-between;padding:0 180px;margin:80px 0;}
+  .overview .circles::after{position:absolute;content:"";width:45%;height:1px;border:1px dashed var(--primary-color);right:180px;z-index:-1;}
+  .overview .circles,.overview .circles .left{display:flex;align-items:center;}
+  
+  .overview .circles .left, .overview .circles .right{position:relative;}
+  .overview .circles .left::after, .overview .circles .right::after{position:absolute;content:"";width:16px;height:16px;border-radius:100%;top:50%;transform:translateY(-50%);}
+  .overview .circles .left::after{background:var(--primary-color);right:-8px;}
+  .overview .circles .right::after{border:1px solid var(--primary-color);background:#fff;left:-8px;}
+  
+  .overview .circle.line{position:relative;display:flex;width:400px;height:400px;font-family:var(--secondary-title-font);font-size:32px;color:var(--primary-color);background:#fff;border:1px solid var(--primary-color);border-radius:100%;justify-content:center;align-items:center;}
+  .overview .circle.line:first-child{z-index:2;background:transparent;}
+  .overview .circle.line:first-child::after{position:absolute;content:"+";width:20px;height:40px;font-family:var(--secondary-title-font);font-size:32px;font-weight:bold;right:18px}
+  .overview .circle.line:last-child{margin:0 0 0 -60px;}
+  
+  .overview .circle.fill{position:relative;display:flex;width:460px;height:460px;font-family:var(--secondary-title-font);font-size:40px;color:#fff;background:var(--primary-color);border-radius:100%;justify-content:center;align-items:center;}
+  .overview .circle.fill::after{position:absolute;content:"";width:calc(100% + 60px);height:calc(100% + 60px);background:url(/publish/usr/images/company/obg_deco.png) no-repeat center center;left:-30px;top:-30px;z-index:-1;}
+  
+  /* 議곗쭅??*/
+  .org_list{display:flex;flex-wrap:wrap;gap:48px 58px;}
+  .org_list>li{width:calc((100% / 2) - 29px);padding:40px;background:#f2f4f6;border-radius:20px;}
+  .org_name{display:flex;flex-direction:column;}
+  .org_name span{font-size:16px;font-weight:700;}
+  .org_name strong{font-family:var(--secondary-title-font);font-size:28px;font-weight:700;}
+  .org_list .list{display:flex;list-style:disc;margin:12px 0 0 0;padding:0 20px;flex-direction:column;gap:4px;}
+  .org_list .list .summary{font-size:14px;color:#444;text-indent:28px;}
+  
+  /* ?ㅼ떆??湲?*/
+  .location_list{display:flex;flex-direction:column;gap:80px;}
+  .location_list>li{display:flex;gap:60px;align-items:center;}
+  .location_area{width:760px;height:500px;border-radius:20px;background:#f2f4f6;border:1px solid #e0e0e0;}
+  
+  .location_list .title{display:flex;margin:0 0 20px 0;font-size:36px;align-items:center;gap:12px;}
+  .location_list .location{width:32px;height:42px;background:url(/publish/usr/images/component/location.png) no-repeat center;}
+  .location_list .info{width:calc(100% - 820px);}
+  .location_list .info p{font-size:20px;font-weight:400;}
+  
+  .location_list .boxs{display:flex;margin:40px 0 0 0;flex-direction:column;gap:20px;}
+  .location_list .boxs li{display:flex;height:80px;font-size:20px;font-weight:bold;background:#f2f4f6;border-radius:20px;justify-content:center;align-items:center;gap:12px;}
+  .location_list .phone{width:40px;height:40px;background:url(/publish/usr/images/component/phone.png) no-repeat center center;}
+  .location_list .email{width:40px;height:40px;background:url(/publish/usr/images/component/email.png) no-repeat center center;}
+  .location_list .btn_map{width:100%;height:80px;font-size:20px;font-weight:bold;margin:20px 0 0 0;border:1px solid #000;border-radius:100px;;}
+
+  /* ?고쁺 */
+  .history_area{position:relative;display:flex;height:818px;gap:89px;overflow:hidden;}
+  .history_year{position:sticky;width:600px;display:flex;height:900px;flex-shrink:0;flex-direction:column;top:0;}
+  .year_item{position:absolute;text-align:right;opacity:0;transform:translateY(-100PX);transition:opacity 0.6s ease-in-out, transform 0.6s ease-in-out;top:0;left:0;}
+  .year_item.active{opacity:1;transform:translateY(0);}
+  .year_item strong{font-family:var(--secondary-title-font);font-size:60px;font-weight:bold;}
+  .year_item .img_box{margin:20px 0 0 0;border-radius:20px;overflow:hidden;}
+  .history_month {position:absolute;width:100%;max-height:100%;overflow-y:auto;-ms-overflow-style:none;scrollbar-width:none;}
+  .month_ul{display:flex;width:calc(100% - 690px);flex-direction:column;margin:0 0 0 auto;}
+  .month_ul:first-child li:first-child{border-top:1px solid #e0e0e0;}
+  .month_ul:last-child{margin:40px 0 0 auto;}
+  .month_ul li{border-bottom:1px solid #e0e0e0;}
+  .month_ul dl{display:flex;padding:40px 0;gap:60px;align-items:flex-start;}
+  .month_ul dd{width:calc(100% - 80px);}
+  .month_ul dd p:nth-child(n+2){margin:36px 0 0 0;}
+  .month_ul .month{width:80px;font-family:var(--secondary-title-font);font-size:24px;font-weight:bold;color:var(--primary-color);letter-spacing:-0.5px;}
+  .month_ul strong{font-size:20px;font-weight:600;;}
+  .month_ul .summary{display:block;font-size:20px;font-weight:400;color:#444;margin:8px 0 0 0;}
+
+  .history_month.active{position:fixed;left:0;top:207px;}
+  .active .month_ul{width:calc(100% - 980px);margin:0 7% 0 auto;}
+
+  /* ==================================================
+       Major Result
+    ================================================== */
+  
+  .figure_content{display:flex;gap:65px;align-items:center;}
+  .figure_content.column{flex-direction:column;align-items:flex-start;}
+  
+  .figure_content .box{display:flex;width:50%;padding:50px 30px;justify-content:center;align-items:center;box-sizing:border-box;}
+  .figure_content .box img{mix-blend-mode:multiply;}
+  .figure_content.column .box{width:100%;margin:20px 0 60px 0;}
+  .figure_content.column .figure_desc{width:100%;}
+  
+  .figure_desc{display:flex;flex-direction:column;gap:24px;}
+  .figure_desc li{min-height:30px;font-size:24px;font-weight:400;text-indent:32px;}
+  .figure_desc.circle li{background:url(/publish/usr/images/component/list_circle.png) no-repeat left 8px;}
+  .figure_desc.square li{background:url(/publish/usr/images/component/list_square.png) no-repeat left 8px;}
+  
+  /* Anti Cancer */
+  .cancer .figure_content .box img{mix-blend-mode:darken;}
+  
+  /* R&D */
+  .rd .figure_content.column{gap:40px;}
+  .rd .figure_content .box{margin:0;}
+  .rd .figure_content .box:first-child img{mix-blend-mode: normal;}
+  
+  /* Pipeline Summary */
+  .pipeline table{table-layout:fixed;width:100%;border-spacing:12px;border-collapse:separate;}
+  .pipeline thead th{font-family:var(--primary-title-font);font-size:20px;font-weight:500;padding:10px 0;background:#AFBCDF;border-radius:8px;word-break:break-all;}
+  .pipeline thead tr:nth-child(2) th{height:44px;font-size:16px;background:#EBEFF7;}
+  
+  .pipeline tr>th,.pipeline tr>td{height:84px;padding:10px 0;border-radius:8px;font-size:20px;font-weight:500;line-height:1.2;text-align:center;word-break:break-all;}
+  .pipeline tbody th{background:#f4f4f4;}
+  .pipeline tbody td{position:relative;border:1px solid #e0e0e0;background:#fff;}
+  .pipeline tbody td[colspan="6"]{border:2px solid #cbd7ff;}
+  .pipeline .graph{position:absolute;width:100%;top:50%;transform:translateY(-50%);}
+  .pipeline .graph span{position:relative;display:flex;height:30px;border-radius:30px 0 0 30px;background:linear-gradient(90deg, #DBE5FF 0%, #3B5BB0 100%);color:#fff;text-shadow:0 0 5px rgba(0,0,0,0.3);justify-content:center;align-items:center;left:10px}
+  .pipeline .graph span::after{position:absolute;content:"";width:51px;height:70px;background:url(/publish/usr/images/major_result/polygon_blue.png) no-repeat center center;right:-44px;}
+  .pipeline .graph.purple span{background:linear-gradient(90deg, #EFEDF7 0%, #5F48B0 100%);}
+  .pipeline .graph.purple span::after{background:url(/publish/usr/images/major_result/polygon_purple.png) no-repeat center center;}
+  .pipeline .graph.orange span{background:linear-gradient(90deg, #FFEADF 0%, #FF8748 100%);}
+  .pipeline .graph.orange span::after{background:url(/publish/usr/images/major_result/polygon_orange.png) no-repeat center center;}
+  .pipeline .graph1 span{width:calc((100% / 6) - 20px);}
+  .pipeline .graph2 span{width:calc((100% / 6)*2 - 100px);}
+  .pipeline .graph3 span{width:calc((100% / 6)*3 - 100px);}
+  .pipeline .graph4 span{width:calc((100% / 6)*4 - 100px);}
+  .pipeline .graph5 span{width:calc((100% / 6)*5 - 100px);}
+  
+  
+  .pipeline ul{display:flex;}
+  .pipeline ul li{height:42px;border-right:1px dashed #bbc8ea;font-size:16px;font-weight:bold;flex-grow:1;}
+  .pipeline ul li:last-child{border:0;}
+  .pipeline tr:first-child ul li:nth-child(5){flex-grow:0.5;color:#3b5bb0;}
+  
+  .pipeline .purple+ul li{color:#5F48B0;}
+  .pipeline .purple+ul li:nth-child(4){flex-grow:1.2;}
+  .pipeline .orange+ul li{color:#FF8748;}
+  .pipeline .orange+ul li:nth-child(5){flex-grow:1.2;}
+  
+  
+  
+  
+  /* ==================================================
+       Platform Tech
+    ================================================== */
+  .dl_wrap{display:flex;width:100%;gap:32px;}
+  .dl_wrap dl{width:50%;}
+  .dl_wrap dt{font-size:20px;font-weight:700;text-align:center;padding:11px 36px;background:var(--secondary-light-color);border-radius:8px;}
+  .dl_wrap dt span{display:block;font-size:16px;font-weight:400;}
+  .dl_wrap dd{display:flex;height:calc(100% - 100px);background:#f2f4f6;border-radius:8px;margin:36px 0 0 0;justify-content:center;align-items:center;}
+  .dl_wrap dd img{mix-blend-mode:darken;}
+  
+  
+  /* background */
+  .background .figure_content .box img{mix-blend-mode:normal;}
+  
+  /* autophagy */
+  .step_ul{display:flex;width:100%;align-items:center;gap:12px;}
+  .step_ul li:not(.next){display:flex;width:calc(100%/6);min-height:91px;font-size:20px;font-weight:500;text-align:center;padding:0 10px;background:#f2f4f6;border-radius:20px;justify-content:center;align-items:center;box-sizing:border-box;}
+  
+  .autophagy .box:nth-child(2){margin:0;}
+  
+  
+  
+  
+  @media (max-width: 1400px){
+  
+    /* ==================================================
+       怨듯넻?덉씠?꾩썐
+    ================================================== */
+    .sub_visual_nav{width:80%;}
+  
+    /* ==================================================
+       Company
+    ================================================== */
+  
+    /* ?ㅻ┰諛곌꼍 */
+    .overview .card li{width:calc((100% / 4) - 60px);}
+  
+    /* ?ㅼ떆??湲?*/
+    .location_area{width:660px;}
+  
+  
+  
+  }
+  
+  @media (max-width: 1280px){
+  
+     /* ==================================================
+       怨듯넻?덉씠?꾩썐
+    ================================================== */
+    .sub_title{font-size:40px;}
+    .sub_visual{height:480px;}
+    .sub_visual_nav{width:65%;}
+    .sub_visual_nav .snb_wrap{width:calc(100% - 66px);}
+    .con_title{margin:80px 0 16px 0;}
+    .con_title .title{font-size:28px;}
+    .con_title .summary{font-size:20px;}
+  
+    .platform_tech .sub_visual{background-position:75% center;}
+  
+    /* ==================================================
+       Company
+    ================================================== */
+  
+    /* ?ㅻ┰諛곌꼍 */
+    .overview .card{flex-wrap:wrap;}
+    .overview .card li{width:calc((100% / 2) - 60px);height:485px;}
+    .overview .card li:nth-child(1),.overview .card li:nth-child(2),.overview .card li:nth-child(3),.overview .card li:nth-child(4){background-size:cover;}
+  
+    .overview .circles, .overview .circles .left{flex-direction:column;}
+    .overview .circles{gap:120px;}
+    .overview .circles::after{width:1px;height:45%;right:50%;bottom:0;transform:translateX(-50%);}
+    .overview .circles .left::after{left:50%;bottom:-8px;top:auto;transform:translateX(-50%);}
+    .overview .circles .right::after{left:50%;top:-8px;transform:translateX(-50%);}
+    .overview .circle.line:last-child{margin:-60px 0 0 0;}
+    .overview .circle.line:first-child::after{bottom:10px;right:45%;transform:translateX(-50%);}
+
+    /* ?고쁺 */
+    .history_area{flex-direction:column;}
+    .history_year{display:none;}
+    .month_ul{position:relative;width:90%;padding:100px 0 0 0;margin:0 auto;}
+    .month_ul::after{position:absolute;content:"";width:100%;height:70px;top:0;font-family:var(--secondary-title-font);font-size:52px;font-weight:bold;}
+    .month_ul:last-child{margin:160px auto 0 auto;}
+    #year_2023::after{content:"2023";}
+    #year_2022::after{content:"2022";}
+  
+    /* ?ㅼ떆??湲?*/
+    .location_list>li{flex-wrap:wrap;gap:30px}
+    .location_area{width:100%;}
+    .location_list .info{width:100%;}
+    .location_list .boxs{flex-direction:row;}
+    .location_list .boxs li{width:50%;}
+    .location_list .boxs li:only-child{width:100%;}
+  
+    /* ==================================================
+       Platform Tech
+    ================================================== */
+  
+    /* autophagy */
+    .step_ul{flex-wrap:wrap;}
+    .step_ul li:not(.next){width:calc((100%/3) - 40px);}
+    .step_ul li:nth-child(6){display:none;}
+  
+    /* ==================================================
+       Major Result
+    ================================================== */
+  
+    .figure_desc{gap:12px;}
+    .figure_desc li{font-size:20px;}
+  
+    .figure_content.column .box{margin:20px 0;}
+  
+    /* Pipeline Summary */
+    .pipeline .table_wrap{width:100%;overflow:auto;}
+    .pipeline table{width:1024px;border-spacing:6px;}
+    .pipeline tr>th, .pipeline tr>td{height:60px;font-size:14px;}
+    .pipeline .graph span{font-size:14px;}
+    .pipeline .graph span::after{background-size:60% auto;right:-38px;}
+    .pipeline .graph.purple span::after,.pipeline .graph.orange span::after{background-size:60% auto;right:-38px;}
+    .pipeline tr:first-child ul li:nth-child(5),.pipeline .purple+ul li:nth-child(4),.pipeline .orange+ul li:nth-child(5){font-size:14px;}
+  
+    .pipeline ul li{display:flex;justify-content:center;align-items:center;}
+  
+    .pipeline .graph1 span{width:calc((100% / 6) - 20px);}
+    .pipeline .graph2 span{width:calc((100% / 6)*2 - 60px);}
+    .pipeline .graph3 span{width:calc((100% / 6)*3 - 60px);}
+    .pipeline .graph4 span{width:calc((100% / 6)*4 - 60px);}
+    .pipeline .graph5 span{width:calc((100% / 6)*5 - 60px);}
+  
+    .rd .figure_content.column{gap:0;}
+  
+  }
+  
+  
+  @media (max-width: 768px){
+  
+    /* ==================================================
+       怨듯넻?덉씠?꾩썐
+    ================================================== */
+    .sub_visual{height:500px;border-radius:0 0 40px 40px;;}
+    .sub_visual_nav{height:66px;}
+    .sub_visual_nav>a{display:none;}
+    .sub_visual_nav .snb_wrap{width:calc(100% / 2);}
+  
+    .con_title .title{font-size:28px;}
+  
+  
+    /* ==================================================
+       Company
+    ================================================== */
+  
+    /* ?ㅻ┰諛곌꼍 */
+    .overview .txt strong{font-size:40px;line-height:1.4;}
+    .overview .txt strong span{display:block;}
+    .overview .card{gap:20px;}
+    .overview .card li{width:calc((100% / 2) - 20px);height:400px;}
+  
+    .figure_content.row{flex-direction:column;gap:20px;}
+    .figure_content.row .box{width:100%;}
+  
+    .figure_desc{width:100%;gap:12px;}
+    .figure_desc li{font-size:18px;}
+    .figure_desc.square li{text-indent:26px;background:url(/publish/usr/images/component/list_square.png) no-repeat left 4px;}
+    .figure_desc.circle li{text-indent:26px;background:url(/publish/usr/images/component/list_circle.png) no-repeat left 4px;background-size:auto 20px;}
+  
+    /* 議곗쭅??*/
+    .org_list{gap:20px}
+    .org_list>li{width:100%;}
+
+    /* ?고쁺 */
+    .month_ul{padding:80px 0 0 0;}
+    .month_ul::after{font-size:36px;}
+
+    .month_ul .month{width:60px;font-size:20px;}
+    .month_ul dl{padding:20px 0;gap:20px;}
+    .month_ul dt{padding:2px 0 0 0;}
+    .month_ul dd p:nth-child(n+2){margin:18px 0 0 0;}
+    .month_ul strong{font-size:18px;}
+    .month_ul .summary{font-size:16px;}
+  
+    /* ?ㅼ떆??湲?*/
+    .location_list .boxs{flex-direction:column;}
+    .location_list .boxs li{width:100%;}
+  
+    /* ==================================================
+       Platform Tech
+    ================================================== */
+    .dl_wrap{flex-direction:column;gap:60px;}
+    .dl_wrap dl{width:100%;}
+    .dl_wrap dd{margin:20px 0 0 0;;}
+  }
+  
+  @media (max-width: 640px){
+  
+  
+    /* ==================================================
+       怨듯넻?덉씠?꾩썐
+    ================================================== */
+    .sub_visual_nav .snb_wrap{width:100%;}
+    .sub_visual_nav .snb_wrap:nth-child(2){display:none;}
+    .content_title h3{font-size:40px;}
+  
+  
+    /* ==================================================
+       Company
+    ================================================== */
+  
+    /* ?ㅻ┰諛곌꼍 */
+    .overview .txt strong{font-size:28px;}
+    .overview .txt p{font-size:18px;margin:8px 0 0 0;}
+    .overview .card{gap:36px;padding:90px 0 120px 0;}
+    .overview .card li{width:100%;}
+    .overview .card li:nth-child(2n){transform:none;;}
+    .overview .card .title br{display:none;}
+  
+    .overview .circles{padding:0;margin:40px 0 80px 0;gap:60px;}
+    .overview .circles::after{height:50%;right:49.5%;}
+    .overview .circle.line{width:200px;height:200px;font-size:18px;}
+    .overview .circle.line:last-child{margin:-40px 0 0 0;}
+    .overview .circle.line:first-child::after{height:20px;font-size:24px;bottom:14px;right:40%;}
+    .overview .circle.fill{width:260px;height:260px;font-size:20px;;}
+    .overview .circle.fill::after{width:calc(100% + 20px);height:calc(100% + 20px);left:-10px;top:-10px;background-size:100% auto;}
+    .overview .circles .left::after, .overview .circles .right::after{width:12px;height:12px;}
+    .overview .circles .left::after{bottom:-5px;}
+  
+    /* ==================================================
+       Platform Tech
+    ================================================== */
+  
+    /* autophagy */
+    .step_ul{flex-direction:column;}
+    .step_ul li:not(.next){width:100%;}
+    .step_ul li.next img{transform:rotate(90deg);}
+    .step_ul li:nth-child(6){display:block;}
+  }
+
+  @media (max-width: 500px){
+   .month_ul dl{flex-direction:column;gap:12px;}
+   .month_ul dd{width:100%;}
+  }
 
src/styles/usr/content_layout.css (added)
+++ src/styles/usr/content_layout.css
@@ -0,0 +1,97 @@
+/* ?ㅺ??쒖뒪???욎엫 */
+
+.wrap{position:relative;width:100%;height:100%;}
+.inner{max-width:1700px;width:100%;height:100%;margin:0 auto;padding:0 20px;box-sizing:border-box;}
+.container{min-height:calc(100vh - 358px);}
+.container.sub .content_wrap{display:inline-block;width:100%;margin:125px 0 80px 0;padding:20px 0 0 0;vertical-align:top;}
+.content_title{margin:0 0 80px 0;}
+.content_title h3{font-family:var(--secondary-title-font);font-size:52px;font-weight:bold;color:var(--primary-title-color);text-align:center;}
+.content_title h3 span{font-family:var(--secondary-title-font);font-weight:500;}
+.breadcrumb{display:flex;font-size:14px;color:#636469;gap:8px;align-items:center;}
+.breadcrumb a{position:relative;display:flex;padding:0 8px;align-items:center;}
+.breadcrumb a::after{position:absolute;width:100%;height:100%;content:"";background:url(/publish/usr/images/component/icon_arrow_right_gray.png) no-repeat right center;right:-12px;top:1px;}
+.breadcrumb .home i{display:flex;width:15px;height:15px;background:url(/publish/usr/images/component/icon_home.png) no-repeat center center;}
+.breadcrumb .current_location{padding:0 0 0 8px;}
+
+.lang_switch{display:flex;align-items:center;font-size:16px;color:#fff;}
+.lang_switch button{position:relative;width:auto;padding:0 12px;opacity:0.6;}
+.lang_switch button:first-child{padding:0 12px 0 4px;}
+.lang_switch button::after{position:absolute;content:"";width:1px;height:11px;background:#d5d5d5;right:0;top:15.5px;}
+.lang_switch button:last-child::after{display:none;}
+.lang_switch .active{font-weight:bold;opacity:1;}
+
+.header.scrolled{background:#fff;box-shadow: 0 4px 12px rgba(0,0,0,0.08);}
+.header.scrolled .gnb a{color:#222;}
+.header.scrolled .btn_sitemap i{background:url(/publish/usr/images/common/menu_scrolled.png) no-repeat center center;}
+.header.scrolled .lang_switch{color:#222;}
+
+/* 紐⑤컮??硫붾돱 */
+.mobile_nav {position:fixed;width:100%;height:100%;top:0;right:-100%;background:#fff;transition:right .6s ease;z-index:1000;flex-direction:column;}
+.mobile_nav.active {right:0;}
+.mobile_nav_top {display:flex;width:100%;justify-content:space-between;align-items:center;padding:20px;}
+
+.mobile_nav .gnb{display:block;width:100%;margin:20px 0 80px 0;}
+.mobile_nav .gnb .depth01{display:flex;width:100%;height:80px;padding:0 20px;font-family:var(--secondary-title-font);font-size:28px;font-weight:bold;align-items:center;justify-content:space-between;}
+.mobile_nav .gnb .active .depth01{color:var(--primary-color);}
+.mobile_nav .depth02_ul{display:flex;padding:20px;background:#f2f4f6;flex-direction:column;gap:8px;}
+.mobile_nav .depth02_ul li{width:100%;}
+.mobile_nav a.depth02{border:0;justify-content:flex-start;}
+
+
+
+/* footer */
+.footer{position:relative;width:100%;padding:60px 0;margin:80px 0 0 0;background:#222427;border-radius:30px 30px 0 0;box-sizing:border-box;bottom:0;}
+.footer .inner{position:relative;display:flex;justify-content:flex-start;align-items:center;gap:32px;}
+.footer .footer_left{display:flex;flex-direction:column;gap:50px;}
+.footer .footer_logo{mix-blend-mode:luminosity;}
+.footer .link{display:flex;align-items:center;}
+.footer .link a{position:relative;font-size:16px;color:#72787d;padding:0 20px;}
+.footer .link a::after{position:absolute;content:"";width:1px;height:12px;background:#72787d;right:0;top:6.5px;}
+.footer .link :first-child a{padding:0 20px 0 0;color:#2DE394;font-weight:bold;}
+.footer .link :last-child a::after{display:none;}
+.footer .footer_right{font-size:16px;color:#72787d;line-height:1.8;letter-spacing:0.3px;}
+.footer .footer_right address b{margin:0 8px 0 0;}
+.footer .footer_right address b:nth-child(3){margin:0 8px 0 16px;}
+.footer .btn_top{position:absolute;display:flex;width:66px;height:66px;font-family:var(--secondary-title-font);font-size:14px;font-weight:bold;color:#fff;letter-spacing:1px;border:1px solid #fff;border-radius:28px;flex-direction:column;justify-content:center;align-items:center;right:20px;}
+.footer .btn_top i{display:inline-block;width:26px;height:14px;background:url(/publish/usr/images/common/footer_top.png) no-repeat center center;}
+
+
+/* sitemap */
+.sitemap {position:fixed;width:100%;height:100%;left:0;top:-100%;background:#fff;transition:top .6s ease;z-index:1000;flex-direction:column;}
+.sitemap.active {top:0;}
+.sitemap_top.inner {display:flex;width:100%;height:auto;justify-content:space-between;align-items:center;padding:20px;}
+
+.sitemap .sitemenu{display:flex;width:100%;margin:20px 0 80px 0;padding:0 140px;justify-content:space-between;box-sizing:border-box;}
+.sitemap .sitemenu .depth01{display:flex;width:100%;height:80px;padding:0 20px;margin:0;font-family:var(--secondary-title-font);font-size:48px;font-weight:bold;color:var(--primary-color);align-items:center;}
+.sitemap .depth02_ul{display:flex;flex-direction:column;gap:20px;}
+.sitemap .depth02_ul li{width:100%;font-size:24px;text-align:center;}
+.sitemap a.depth02{display:flex;width:100%;padding:8px 0;border:0;border-radius:8px;justify-content:center;align-items:center;}
+.sitemap a.depth02:hover{color:var(--primary-color);background:var(--primary-light-color);}
+
+
+
+
+
+@media (max-width: 1280px){
+  .header_container nav:not(.mobile_nav){display:none;}
+
+  .content_title h3{font-size:40px;}
+  
+}
+
+@media (max-width: 1024px){
+  .footer .footer_right{width:60%;}
+}
+
+@media (max-width: 768px){
+  .footer .inner{flex-direction:column;align-items:flex-start;}
+  .footer .footer_right{width:100%;}
+}
+
+@media (max-width: 640px){
+  .header_container .logo img{height:60px;}
+
+  .container.sub .content_wrap{margin:80px 0 80px 0;}
+  .content_title{margin:0 0 60px 0;}
+
+}
 
src/styles/usr/icon.css (added)
+++ src/styles/usr/icon.css
@@ -0,0 +1,28 @@
+@charset "utf-8";
+
+.icon{display:inline-block;width:100%;height:100%;vertical-align:middle;;}
+
+.icon.lang{width:20px;height:40px;background:url(/publish/usr/images/common/lang.png) no-repeat center 12px;}
+.scrolled .icon.lang{background:url(/publish/usr/images/common/lang_scrolled.png) no-repeat center 12px;}
+
+.icon.close{width:40px;height:40px;background:url(/publish/usr/images/common/menu_close.png) no-repeat center;}
+
+.icon.home{width:66px;height:66px;background:url(/publish/usr/images/common/home.png) no-repeat center;}
+
+.icon.file{width:20px;height:20px;background:url(/publish/usr/images/component/icon_file.png) no-repeat center center;}
+.icon.file.blue{background:url(/publish/usr/images/component/icon_file_blue.png) no-repeat center center;}
+.icon.file_bg{width:60px;height:60px;background:url(/publish/usr/images/component/icon_file_table.png) no-repeat center center;}
+
+.icon.delete{width:30px;height:30px;background:url(/publish/usr/images/component/icon_x.png) no-repeat center;}
+.icon.delete.red{background:url(/publish/usr/images/component/icon_x_red.png) no-repeat center;}
+
+.icon.calendar{width:30px;height:30px;background:url(/publish/usr/images/component/icon_calendar.png) no-repeat center;}
+.icon.writer{width:30px;height:30px;background:url(/publish/usr/images/component/icon_writer.png) no-repeat center;}
+.icon.view{width:30px;height:30px;background:url(/publish/usr/images/component/icon_view.png) no-repeat center;}
+
+.icon.arrow.left{width:40px;height:40px;background:url(/publish/usr/images/component/arrow_left.png) no-repeat center;}
+.icon.arrow.right{width:40px;height:40px;background:url(/publish/usr/images/component/arrow_right.png) no-repeat center;}
+.icon.arrow.bottom{width:40px;height:40px;background:url(/publish/usr/images/component/arrow_bottom.png) no-repeat center;}
+.icon.arrow.top{width:40px;height:40px;background:url(/publish/usr/images/component/arrow_top.png) no-repeat center;}
+
+.icon.comment{width:20px;height:20px;background:url(/publish/usr/images/component/icon_comment.png) no-repeat center center;}
 
src/styles/usr/layout.css (added)
+++ src/styles/usr/layout.css
@@ -0,0 +1,77 @@
+@charset "utf-8";
+
+.wrap{position:relative;width:100%;height:100%;}
+.inner{max-width:1440px;width:100%;height:100%;margin:0 auto;padding:0 20px;box-sizing:border-box;}
+.container{margin:140px 0 0 0;}
+.container.sub .content_wrap{display:inline-block;width:100%;margin:0;padding:20px 0 0 0;vertical-align:top;}
+.content_title,.section_title{display:flex;margin:0 0 20px 0;align-items:center;justify-content:space-between;}
+.content_title h3{font-size:40px;font-weight:bold;color:var(--primary-title-color);}
+.section_title{margin:60px 0 20px 0;}
+.section_title h4{font-size:22px;font-weight:bold;}
+.breadcrumb{display:flex;font-size:14px;color:#636469;gap:8px;align-items:center;}
+.breadcrumb a{position:relative;display:flex;padding:0 8px;align-items:center;}
+.breadcrumb a::after{position:absolute;width:100%;height:100%;content:"";background:url(/publish/usr/images/component/icon_arrow_right_gray.png) no-repeat right center;right:-12px;top:1px;}
+.breadcrumb .home i{display:flex;width:15px;height:15px;background:url(/publish/usr/images/component/icon_home.png) no-repeat center center;}
+.breadcrumb .current_location{padding:0 0 0 8px;}
+
+/* header */
+.header{position:fixed;width:100%;left:0;top:0;z-index:9;}
+.header_top{width:100%;height:40px;background:#EEEFF4;}
+.header_top .inner{display:flex;height:100%;justify-content:space-between;}
+.header_top .user_menu{display:flex;align-items:center;}
+.header_top .user_menu a{position:relative;height:100%;padding:0 20px;margin:0 0 6px 0;font-size:14px;color:#656770;}
+.header_top .user_menu a::after{position:absolute;content:"";width:1px;height:16px;background:#c5c6cc;right:0;top:3px;}
+.header_top .user_menu :last-child a::after{display:none;}
+
+.header_container{position:relative;width:100%;height:100px;background:#fff;}
+.header_container .inner{display:flex;height:100%;justify-content:space-between;align-items:center;}
+.header_container nav,.header_container .gnb{display:flex;height:100%;}
+.header_container .gnb{width:calc(100% - 100px);gap:100px;}
+.header_container .gnb a{display:flex;height:100%;padding:0 10px;font-size:20px;font-weight:bold;color:#222;align-items:center;justify-content:center;white-space:nowrap;}
+.header_container .depth02_container{position:absolute;width:100%;border-top:1px solid #eeeff4;top:100%;left:0;background:#fff;box-shadow:0 8px 10px rgba(0,0,0,0.05);max-height:0;overflow:hidden;opacity:0;visibility:hidden;transition:max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1),opacity 0.3s ease,transform 0.4s cubic-bezier(0.4, 0, 0.2, 1),visibility 0.4s;}
+.header_container .active .depth02_container{max-height:100vh;opacity:1;visibility:visible;}
+.header_container .depth02_ul{display:flex;max-width:1440px;margin:0 auto;padding:40px 0;gap:20px;justify-content:center;}
+.header_container .depth02_ul>li{width:calc(100% / 4);}
+.header_container a.depth02{display:flex;width:100%;height:50px;font-size:18px;font-weight:400;text-align:center;padding:0 18px;border:2px solid #eeeff4;border-radius:8px;justify-content:center;align-items:center;}
+.header_container .depth03_ul{display:flex;margin:8px 0 0 0;flex-direction:column;gap:8px;text-align:center;}
+.header_container .depth03_ul a.depth03{font-size:16px;font-weight:300;}
+
+
+.header_util{display:flex;gap:12px;align-items:center;}
+.header_util button{width:40px;height:40px;}
+.header_util button i{display:inline-block;width:100%;height:100%;}
+.btn_search i{background:url(/publish/usr/images/common/search.png) no-repeat center center;}
+.btn_sitemap i{background:url(/publish/usr/images/common/menu.png) no-repeat center center;}
+
+
+/* footer */
+.footer{width:100%;padding:60px 0;margin:100px 0 0 0;background:#222427;border-radius:30px 30px 0 0;box-sizing:border-box;}
+.footer .inner{display:flex;justify-content:space-between;align-items:center;}
+.footer .footer_left{display:flex;flex-direction:column;gap:50px;}
+.footer .link{display:flex;align-items:center;}
+.footer .link a{position:relative;font-size:16px;color:#72787d;padding:0 20px;}
+.footer .link a::after{position:absolute;content:"";width:1px;height:12px;background:#72787d;right:0;top:6.5px;}
+.footer .link :first-child a{padding:0 20px 0 0;color:#2DE394;font-weight:bold;}
+.footer .link :last-child a::after{display:none;}
+.footer .footer_right{font-size:16px;color:#72787d;line-height:1.8;letter-spacing:0.3px;}
+.footer .footer_right address b{margin:0 8px 0 0;}
+.footer .footer_right address b:nth-child(3){margin:0 8px 0 16px;}
+
+
+/* sidemenu */
+.sidemenu{display:inline-block;width:300px;background:#f2f4f6;border-radius:20px;}
+.sidemenu_tit{position:relative;width:100%;height:164px;border-radius:20px;background:linear-gradient(166deg,rgba(44, 69, 195, 1) 0%, rgba(21, 33, 93, 1) 100%);}
+.sidemenu_tit::after{position:absolute;content:"";width:100%;height:100%;background:url(/publish/usr/images/common/sidemenu_title_bg.png) no-repeat calc(100% + 4px) calc(100% + 11px);right:0;bottom:0;mix-blend-mode:luminosity;}
+.sidemenu_tit h2{position:absolute;font-family:var(--secondary-title-font);font-size:24px;font-weight:bold;color:#fff;bottom:30px;left:35px;}
+.sidemenu_nav{padding:40px 20px 160px 20px;background:url(/publish/usr/images/common/sidemenu_nav_bg.png) no-repeat calc(100% - 20px) calc(100% - 20px);box-sizing: border-box;}
+.sidemenu_nav .depth01_list{display:flex;flex-direction:column;gap:8px;}
+.sidemenu_nav .depth01{display:flex;width:100%;height:50px;font-size:18px;font-weight:500;color:var(--primary-title-color);padding:0 16px;border-radius:8px;align-items:center;justify-content:space-between;transition:all .3s;}
+.sidemenu_nav .depth01:hover{background:var(--primary-color);color:#fff;}
+.sidemenu_nav .depth01 i{width:24px;height:24px;background:url(/publish/usr/images/component/icon_arrow_down.png) no-repeat center;}
+.sidemenu_nav .depth01:hover i{background:url(/publish/usr/images/component/icon_arrow_down_white.png) no-repeat center;}
+.sidemenu_nav .depth01.active{background:var(--primary-color);color:#fff;}
+.sidemenu_nav .depth01.active i{background: url(/publish/usr/images/component/icon_arrow_up_white.png) no-repeat center;color:#fff;}
+.sidemenu_nav .depth02_list{background:#fff;padding:16px;margin:8px 0 0 0;border-radius:8px;}
+.sidemenu_nav .depth02{display:flex;width:100%;height:30px;font-size:16px;font-weight:400;color:#3f4043;align-items:center;}
+.sidemenu_nav .depth02:hover,.sidemenu_nav .depth02.active{color:var(--primary-color);font-weight:500;}
+
 
src/styles/usr/main.css (added)
+++ src/styles/usr/main.css
@@ -0,0 +1,115 @@
+@charset "utf-8";
+
+.section{margin:140px 0 0 0;}
+.section .inner{display:flex;gap:40px;}
+.title_wrap{display:flex;width:100%;margin:0 0 40px 0;justify-content:space-between;align-items:center;}
+.cont_wrap{position:relative;width:100%;;}
+.main_title{font-family: var(--secondary-title-font);font-size:36px;font-weight:bold;color:var(--primary-title-color);}
+.btn_more{display:inline-flex;height:40px;padding:0 5px 0 20px;background:#fff;border:1px solid #1a1b1d;font-size:16px;font-weight:500;color:var(--primary-title-color);border-radius:50px;align-items:center;}
+.btn_more i{width:40px;height:40px;background:url(/publish/usr/images/main/icon_plus.png) no-repeat center center;}
+
+.main .tabs{display:flex;gap:30px;}
+.main .tab{position:relative;font-size:20px;font-weight:400;color:#636469;}
+.main .tab.active{font-weight:bold;color:var(--primary-color);}
+.main .tab.active::after{position:absolute;content:"";width:6px;height:6px;background:var(--primary-color);border-radius:100%;right:-8px;top:-2px;}
+.main .tab_content{position:absolute;display:none;width:100%;left:0;}
+.main .tab.active+.tab_content{display:block;}
+
+/* 硫붿씤鍮꾩<??*/
+
+.main_visual{width:100%;height:422px;}
+.main_visual .visual_slide{width:100%;height:100%;border-radius:20px;}
+.main_visual .visual_slide a:first-child{background:blue;}
+.main_visual .visual_slide a:nth-child(2){background:red;}
+.main_visual .visual_slide a:nth-child(3){background:salmon;}
+
+/* //硫붿씤鍮꾩<??*/
+
+/* section01 */
+.section01{height:452px;}
+.sch_cont{position:relative;width:calc(100% - 470px);}
+.sch_cont .cont_wrap{top:-85px;left:290px;}
+.sch_cont .tab_content{width:100%;left:-290px;top:calc(100% + 40px);}
+.sch_cont .sch_title{margin:0 0 20px 0;}
+.sch_cont .current_date{font-size:30px;font-weight:bold;}
+.sch_cont .list{width:100%;border-top:1px solid #000;}
+.sch_cont .list>li{border-bottom:1px dashed #aeafb2;}
+.sch_cont .list a{display:flex;padding:19px 16px;align-items:center;justify-content:space-between;}
+.sch_cont .status{height:30px;padding:4px 16px;margin:0 4px 0 0;font-size:16px;font-weight:500;box-sizing:border-box;border-radius:30px;}
+.sch_cont .status.green{background:#CEF5E4;color:#00A15B;}
+.sch_cont .status.gray{background:#F2F4F6;color:#636469;}
+.sch_cont .list .title{font-size:18px;font-weight:400;color:var(--primary-title-color);line-height:1.3;}
+.sch_cont .list_info{display:flex;font-size:16px;color:#7f868f;margin:16px 0 0 0;gap:20px;}
+.sch_cont .list_info em{font-weight:600;margin:0 8px 0 0;}
+.sch_cont .text_move{display:flex;font-size:16px;font-weight:600;color:#9FA1A8;align-items:center;transition:all 0.3s;}
+.sch_cont .text_move i{display:inline-block;width:24px;height:24px;margin:1px 0 0 8px;background:url(/publish/usr/images/main/btn_more.png) no-repeat center bottom;transition:color .3s;}
+.sch_cont a:hover .text_move{color:var(--primary-title-color);}
+.sch_cont a:hover .text_move i{background:url(/publish/usr/images/main/btn_more.png) no-repeat center top;}
+.sch_cont .tab_content .btn_more{position:absolute;top:3px;right:0;}
+
+
+.allim_cont{position:relative;width:430px;border-radius:20px;overflow:hidden;}
+.allim_slide{width:100%;height:100%;}
+.allim_slide a:first-child{background:blue;}
+.allim_slide a:nth-child(2){background:red;}
+.allim_slide a:nth-child(3){background:salmon;}
+.allim_bottom{position:absolute;display:flex;width:100%;height:60px;padding:0 24px;background:#303347;left:0;bottom:0;justify-content:space-between;align-items:center;z-index:1;}
+.allim_bottom .title{font-size:20px;font-weight:bold;color:#fff;}
+.allim_util{display:flex;align-items:center;gap:8px;}
+.allim_util p{font-size:16px;font-weight:400;color:#858897;letter-spacing:2px;}
+.allim_util .current_num{font-weight:bold;color:#2de394;}
+.allim_util button{width:24px;height:24px;}
+.allim_util button i{display:inline-block;width:100%;height:100%;}
+.allim_util .btn_prev{background:url(/publish/usr/images/main/icon_prev.png) no-repeat center center;}
+.allim_util .btn_pause{background:url(/publish/usr/images/main/icon_pause.png) no-repeat center center;}
+.allim_util .btn_play{background:url(/publish/usr/images/main/icon_play.png) no-repeat center center;}
+.allim_util .btn_next{background:url(/publish/usr/images/main/icon_next.png) no-repeat center center;}
+
+/* //section01 */
+
+/* section02 */
+.section02 .inner{display:block;height:427px;}
+.section02 .cont_wrap{top:-85px;left:190px;}
+.section02 .tab_content{top:calc(100% + 40px);left:-190px;}
+.section02 .card_list{display:flex;align-items:stretch;gap:30px;}
+.section02 .card_list>li{width:calc((100% / 4));}
+.section02 .card_list a{padding:30px;background:#F2F4F6;border:2px solid transparent;border-radius:10px;transition:all .3s;}
+.section02 .card_list a:hover{background:#fff;transform:translateY(-10px);}
+.section02 .part_notice a:hover{border:2px solid var(--primary-color);box-shadow:0 3px 5px 3px rgba(44,69,195,0.15);}
+.section02 .part_data a:hover{border:2px solid #00a15b;box-shadow:0 3px 5px 3px rgba(0,161,91,0.15);}
+.section02 .card_list .part{display:flex;font-size:16px;font-weight:600;gap:8px;align-items:center;}
+.section02 .card_list .part i{display:inline-block;width:22px;height:22px;}
+.section02 .part_notice .part{color:var(--primary-color);}
+.section02 .part_notice .part i{background:url(/publish/usr/images/main/icon_notice.png) no-repeat center center;}
+.section02 .part_data .part{color:#00a15b;}
+.section02 .part_data .part i{background:url(/publish/usr/images/main/icon_data.png) no-repeat center center;}
+.section02 .card_list .title{display:-webkit-box;width:100%;height:102px;margin:10px 0 15px 0;font-size:24px;font-weight:600;color:var(--primary-title-color);line-height:1.4;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;}
+.section02 .card_list .summary{display:-webkit-box;width:100%;font-size:16px;font-weight:400;color:#636469;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;}
+.section02 .list_util{display:flex;width:100%;font-size:14px;color:#636469;margin:24px 0 0 0;gap:18px;}
+.section02 .list_util li{display:flex;align-items:center;gap:4px;}
+.section02 .list_util .icon{display:inline-block;width:22px;height:22px;}
+.section02 .list_util .calendar{background:url(/publish/usr/images/main/icon_calendar.png) no-repeat center;}
+.section02 .list_util .writer{background:url(/publish/usr/images/main/icon_writer.png) no-repeat center;}
+.section02 .list_util .view{background:url(/publish/usr/images/main/icon_view.png) no-repeat center;}
+.section02 .btn_more{position:absolute;top:-71px;right:0;}
+
+/* //section02 */
+
+/* section03 */
+.section03 .inner{display:flex;gap:30px;}
+.faq_cont, .qna_cont{width:50%;}
+.box_list{width:100%;background:#f2f4f6;border-radius:20px;padding:30px 30px 20px 30px;}
+.box_list span{display:flex;width:100%;font-size:18px;font-weight:500;color:var(--primary-title-color);align-items:flex-start;}
+.box_list li{padding:16px 0;border-bottom:1px solid #D8D8D8;}
+.box_list li:first-child{padding:0 0 16px 0;}
+.box_list li:last-child{border-bottom:0;}
+.box_list li:first-child .question{font-size:24px;}
+.box_list em{font-family:var(--secondary-title-font);font-size:20px;font-weight:700;margin:0 16px 0 0;vertical-align:middle;}
+.box_list li:first-child em{font-size:24px;}
+.box_list .question em{color:var(--primary-color);}
+.box_list .answer{display:flex;align-items:flex-start;margin:16px 0 0 0;}
+.box_list .answer span{display:-webkit-box;font-size:16px;font-weight:400;color:#636469;margin:2px 0 0 0;line-height:1.4;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;}
+.box_list .answer em{color:#7A7C86;}
+
+.qna_cont .cont_wrap{height:calc(100% - 94px);background:salmon;border-radius:20px;}
+/* //section03 */
 
src/styles/usr/popup.css (added)
+++ src/styles/usr/popup.css
@@ -0,0 +1,37 @@
+
+.popup_wrap{display:none;position:fixed;box-shadow:0 0 10px rgba(0,0,0,0.25);border-radius:8px;z-index: 50;}
+.popup_wrap .title_wrap {display:flex;height:45px;background-color:var(--primary-color);justify-content:space-between;align-items:center;font-size:18px;font-weight:500;color:#fff;padding:0 12px 0 20px;border-radius:8px 8px 0 0;box-sizing:border-box;}
+
+.btn_popup_close{width:30px;height:30px;padding:0;}
+.btn_popup_close i{display:inline-block;width:100%;height:100%;background:url(/publish/usr/images/component/icon_x_white.png) no-repeat center center;background-size:95%;}
+
+.popup_content {color: #222; padding:20px; box-sizing: border-box;background-color: #fff; border-radius: 0 0 5px 5px;}
+
+.popup_content .input{height:30px;border:1px solid var(--default-line-color);border-radius:5px;padding:0 12px;}
+.popup_content textarea, .popup_content .testarea{border:1px solid var(--default-line-color);border-radius:5px;padding:0 12px;}
+.popup_content select, .popup_content .select{height:30px;border:1px solid var(--default-line-color);border-radius:5px;padding:0 32px 0 12px;background:url(/publish/usr/images/component/icon_arrow_down.png) no-repeat calc(100% - 4px) center;}
+
+/* popup - btn */
+.popup_wrap .btn_wrap.bottom{margin:15px 0 0 0;}
+.popup_wrap .btn_wrap.bottom button{padding:0 12px;}
+
+
+/* popup - title */
+.popup_content .content_title{display:flex;margin:0 0 15px 0;justify-content:space-between;align-items:center;}
+.popup_content h3{position:relative;font-size:18px;font-weight:600;padding:0 0 0 12px;}
+.popup_content h3::before{position:absolute;content:"";width:3px;height:16px;background:var(--primary-color);left:0;top:6.5px;}
+
+
+/* popup - table */
+.popup_table_cols tr{border-bottom:1px solid #e2e7ef;}
+.popup_table_cols th,.popup_table_cols td{padding:4px 8px;font-size:15px;text-align:center;box-sizing:border-box;}
+.popup_table_cols thead>tr>th{height:60px;font-weight:500;color:#25272A;}
+.popup_table_cols tbody>tr>td{height:50px;font-weight:400;color:#444;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}
+.popup_table_cols .text_left a{width:100%;text-align:left;}
+
+.popup_table_rows tr{border-bottom:1px solid #e2e7ef;}
+.popup_table_rows tbody>tr>th,.popup_table_rows tbody>tr>td{height:40px;padding:4px 8px;font-size:15px;color:#25272A;box-sizing:border-box;}
+.popup_table_rows tbody>tr>th{text-align:center;font-weight:500;background:#F2F3F5;}
+.popup_table_rows tbody>tr>td{text-align:left;font-weight:400;}
+
+
 
src/styles/usr/reset.css (added)
+++ src/styles/usr/reset.css
@@ -0,0 +1,200 @@
+/* ========================================================================
+   reset.css ??2025
+   ?묒꽦?? ?뺤닔鍮?
+   ?좎쭨: 2025-10-17
+   ======================================================================== */
+
+/* box-sizing & 湲곕낯 由ъ뀑 */
+*, *::before, *::after {
+  box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+}
+
+/* HTML5 ?붿냼 湲곕낯 ?쒖떆 蹂댁옣 */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section, main {
+  display: block;
+}
+
+/* root ?ㅼ젙 */
+html {
+  scroll-behavior: smooth;
+  -webkit-text-size-adjust: 100%;
+  font-size: 16px;
+}
+
+body {
+  min-height: 100vh;
+  line-height: 1.5;
+  font-family: 'Noto Sans KR', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  letter-spacing: -0.35px;
+  color: #222;
+  background-color: #fff;
+}
+
+/* ?띿뒪???붿냼 */
+h1, h2, h3, h4, h5, h6, p {
+  font-weight: inherit;
+  font-size: inherit;
+  color: inherit;
+  margin: 0;
+  padding: 0;
+}
+
+a {
+  color: inherit;
+  text-decoration: none;
+  display: inline-block;
+}
+a:focus-visible {
+  outline: 2px solid #222;
+  outline-offset: 3px;
+}
+
+/* 由ъ뒪??*/
+ol, ul {
+  list-style: none;
+}
+
+/* ?대?吏€ 諛?誘몃뵒??*/
+img, picture, video, canvas, svg {
+  display: block;
+  max-width: 100%;
+  height: auto;
+  border: 0;
+  font-size: 0;
+}
+
+/* ??*/
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+  table-layout: fixed;
+  width: 100%;
+}
+
+/* ???붿냼 */
+button, input, select, textarea {
+  font: inherit;
+  color: inherit;
+  border: none;
+  background: none;
+  margin: 0;
+  padding: 0;
+  vertical-align: middle;
+  
+  appearance: none;
+}
+
+/* ?쇰뵒?? 泥댄겕諛뺤뒪??appearance ?쒓굅 湲덉? (湲곕낯 ?쒖떆 ?좎?) */
+input[type="radio"],
+input[type="checkbox"] {
+  appearance: auto;
+  -webkit-appearance: auto;
+  -moz-appearance: auto;
+  display: inline-block;
+  width: auto;
+  height: auto;
+  cursor: pointer;
+  vertical-align: middle;
+}
+
+button {
+  cursor: pointer;
+  background: transparent;
+}
+
+input::placeholder,
+textarea::placeholder {
+  color: #777;
+  font-weight: 400;
+  font-size:14px;
+}
+
+input:disabled,
+input:read-only,
+textarea:disabled,
+textarea:read-only,
+select:disabled,
+select:read-only
+input.readonly,
+textarea.readonly,
+select.readonly{
+  background-color: var(--disable-fill-bg-color) !important;
+  color: var(--disable-fill-text-color) !important;
+  border: 1px solid var(--disable-fill-line-color) !important;
+  cursor: not-allowed;
+}
+
+/* ?묎렐??- label ?④? 泥섎━ */
+caption,.caption, .label, .sr-only, .visually-hidden {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  white-space: nowrap;
+  border: 0;
+}
+
+/* ?ㅽ겕濡ㅻ컮 而ㅼ뒪?곕쭏?댁쭠 */
+::-webkit-scrollbar {
+  width: 7px;
+  height: 7px;
+}
+::-webkit-scrollbar-thumb {
+  background: #adadad;
+  border-radius: 10px;
+}
+::-webkit-scrollbar-track {
+  background: transparent;
+}
+
+/* ?몄슜, 湲고? */
+blockquote, q {
+  quotes: none;
+}
+blockquote::before, blockquote::after,
+q::before, q::after {
+  content: '';
+}
+
+/* ???덉쇅 泥섎━ */
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  appearance: none;
+}
+
+/* 二쇱냼, ?댄깶由???*/
+address, em, i {
+  font-style: normal;
+}
+
+/* hr */
+hr {
+  border: none;
+  height: 1px;
+  background: #e0e0e0;
+  margin: 0;
+}
+
+/* ?띿뒪?몄쁺??湲곕낯 */
+textarea {
+  resize: vertical;
+  color: #333;
+}
+
+/* ?묎렐?? 紐⑥뀡 以꾩씠湲??좏샇 ??*/
+@media (prefers-reduced-motion: reduce) {
+  *, *::before, *::after {
+    animation-duration: 0.001ms !important;
+    transition-duration: 0.001ms !important;
+    scroll-behavior: auto !important;
+  }
+}
+
 
src/styles/usr/style.css (added)
+++ src/styles/usr/style.css
@@ -0,0 +1,141 @@
+@charset "utf-8";
+@import url(../common/style.css);
+@import url(./icon.css);
+
+/* ?고듃 */
+.fwLg{font-weight: 300 !important}
+.fwRg{font-weight: 400 !important}
+.fwMd{font-weight: 500 !important}
+.fwBold{font-weight: 700 !important}
+
+.sub_font{font-family:var(--secondary-title-font);}
+
+.show{display:block !important;}
+.hide{display:none !important;}
+
+.text_left{text-align:left;}
+.text_right{text-align:right;}
+.text_center{text-align:center;}
+
+.input{height:34px;border:1px solid var(--default-line-color);border-radius:5px;padding:0 12px;}
+textarea, .testarea{border:1px solid var(--default-line-color);border-radius:5px;padding:0 12px;}
+select, .select{height:34px;border:1px solid var(--default-line-color);border-radius:5px;padding:0 32px 0 12px;background:url(/publish/usr/images/component/icon_arrow_down.png) no-repeat calc(100% - 4px) center;}
+
+.email_wrap{display:flex;gap:8px;align-items:center;}
+.email_wrap .input{width:160px;}
+.email_wrap .select{width:160px;}
+
+.radio_wrap,.checkbox_wrap{display:flex;align-items:center;gap:16px;}
+.radio_item,.checkbox_item{display:flex;align-items:center;gap:4px;font-size:16px;}
+
+.input_mix_wrap{display:flex;gap:8px;align-items:center;}
+
+.address_wrap{display:flex;flex-direction:column;gap:8px;}
+.address_row{display:flex;gap:8px;}
+.input_post{width:calc(50% - 105px);}
+.adr_default{width:60%;}
+.adr_detail{width:40%;}
+
+.input_desc_wrap{display:flex;width:100%;gap:12px;}
+.input_desc_wrap.column{flex-direction:column;gap:0;margin:8px 0 0 0;}
+.input_desc_wrap .input_desc{margin:0;}
+
+.input_desc{font-size:14px;font-weight:400;color:#666;margin:0 0 0 8px;}
+.input_desc.red{color:var(--red-color);}
+.input_desc.blue{color:var(--primary-color);}
+
+.calendar_wrap{display:flex;align-items:center;gap:8px;}
+.calendar{width:140px;background:url(/publish/usr/images/component/icon_calendar.png) no-repeat calc(100% - 4px) center;}
+
+
+/* 寃€?됱쁺??*/
+.search_area{display:flex;align-items:flex-end;justify-content:space-between;}
+
+.search_left .total_number{font-size:14px;color:var(--body-text-color);}
+.search_left .total_number b{font-size:16px;font-weight:bold;color:var(--primary-color);}
+.search_right{display:flex;gap:10px;}
+.search_select{min-width:120px;}
+.search_input{min-width:150px;}
+.search_right button{height:34px;padding:0 12px;font-size:16px;font-weight:400;}
+.search_right .btn_search{background:var(--primary-color);color:#fff;}
+.search_right .btn_reset{background:var(--gray-color);color:#fff;}
+
+/* ?곹깭 */
+.status{min-height:34px;font-size:16px;font-weight:500;border-radius:100px;padding:3px 12px;}
+
+.status.line.blue{border:1px solid #135add;color:#135add;}
+.status.line.gray{border:1px solid #d1d6df;color:#858B97;background:#eff0f2;}
+
+.status.text{position:relative;padding:0;}
+.status.text::after{position:absolute;content:"";width:100%;height:5px;opacity:0.2;left:0;bottom:2px;}
+.status.text.blue{color:#135add;}
+.status.text.blue::after{background:#135add;}
+.status.text.gray{color:#858B97;}
+.status.text.gray::after{background:#858B97;}
+
+.file_list{display:flex;flex-direction:column;gap:4px;}
+.file_list a{display:flex;gap:4px;align-items:center;}
+
+.file_list.box{padding:15px 35px;margin:40px 0 0 0;background:#f5f7f9;border-radius:15px;gap:10px;}
+.file_list.box a{gap:8px;font-size:18px;color:var(--body-text-color);text-decoration:none;}
+.file_list.box .file_table{height:auto;border:0;margin:0;}
+
+/* 怨듭??ы빆 - ?곸꽭 */
+.board_wrap{border-top:2px solid #000;margin:0 0 30px 0;}
+.board_top{display:flex;padding:30px;border-bottom:1px solid #e2e7ef;gap:15px;flex-direction:column;}
+.board_title{font-size:25px;font-weight:700;color:var(--primary-title-color);}
+.board_info{display:flex;font-size:16px;font-weight:400;color:var(--body-text-color);align-items:center;gap:20px;}
+.board_info li{display:flex;align-items:center;gap:4px;}
+.board_info b{color:#666;font-weight:500;margin:0 6px 0 0;}
+.board_cont{font-size:18px;padding:45px 30px;line-height:1.5;border-bottom:1px solid #e2e7ef;}
+.board_cont a{text-decoration:underline;text-underline-offset:3px;}
+.view_more{border-top:2px solid #000;margin:50px 0 0 0;}
+.view_more li{padding:20px 30px;font-size:16px;color:#25272a;border-bottom:1px solid #e2e7ef;}
+.view_more .none *{opacity:0.5;}
+.view_more span{display:inline-flex;font-weight:500;align-items:center;gap:8px;}
+.view_more a{width:calc(100% - 100px);margin:0 0 0 20px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;vertical-align:bottom;}
+
+/* FAQ */
+.faq_wrap{display:flex;border-top:2px solid #000;margin:12px 0 0 0;flex-direction:column;}
+.faq_wrap li{border-bottom:1px solid #E2E7EF;}
+.question,.answer{display:flex;width:100%;padding:10px 0;font-size:18px;line-height:1.5;align-items:flex-start;}
+.question em,.answer em{display:inline-block;width:100px;font-family: 'S-Core Dream';font-size:24px;font-weight:700;text-align:center;}
+.question span:not(.visuall-hidden),.answer span:not(.visuall-hidden){width:calc(100% - 100px);text-align:left;margin:4px 0 0 0;}
+.question em{color:var(--primary-color);}
+.question{background:url(/publish/usr/images/component/icon_arrow_down_blue.png) no-repeat calc(100% - 16px) center;}
+.question.active{background:url(/publish/usr/images/component/icon_arrow_up_blue.png) no-repeat calc(100% - 16px) center;}
+.answer{padding:34px 26px 34px 0;background:#F5F7F9;border-top:1px solid #E2E7EF;}
+.answer em{color:var(--accent-color);}
+
+/* 媛ㅻ윭由?由ъ뒪??*/
+.gallery_list{display:flex;margin:12px 0 0 0;gap:20px;flex-wrap:wrap;}
+.gallery_list>li{width:calc((100%/3) - 14px);}
+.gallery_list a{width:100%;border:1px solid #E2E7EF;}
+.gallery_list .images_area{display:flex;width:100%;height:260px;background:#f2f4f7;overflow:hidden;justify-content:center;align-items:center;}
+.gallery_list .images_area img{max-width:100%;max-height:100%;object-fit:contain;}
+.gallery_list .list_content{padding:20px;}
+.gallery_list .list_title{ text-overflow: ellipsis;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;font-size:18px;font-weight:600;color:var(--primary-title-color);}
+.gallery_list .list_info{display:flex;font-size:14px;font-weight:400;color:#636469;margin:20px 0 0 0;}
+.gallery_list .list_info li{position:relative;padding:0 10px;}
+.gallery_list .list_info li:first-child{padding:0 10px 0 0;}
+.gallery_list .list_info li::after{position:absolute;content:"";width:1px;height:10px;background:#636469;right:0;top:6px;}
+.gallery_list .list_info li:last-child::after{display:none;}
+
+/* ?볤? */
+.cmmt_wrap{margin:60px 0 0 0;}
+.cmmt_title{display:flex;margin:0 0 12px 0;align-items:center;gap:6px;justify-content:flex-start;}
+.cmmt_title p{font-size:16px;font-weight:400;}
+.cmmt_title p b{font-weight:600;color:var(--primary-color);}
+
+.cmmt_list{display:flex;border-top:2px solid var(--primary-color);flex-direction:column;}
+.cmmt_list li{padding:20px;border-bottom:1px solid var(--default-line-color);}
+.cmmt_top{display:flex;gap:8px;align-items:center;}
+.cmmt_top .writer{font-size:16px;color:var(--primary-title-color);}
+.cmmt_top .cmmt_date{font-size:14px;font-weight:400;color:#666;}
+.cmmt_detail{padding:8px 0 12px 0;font-size:16px;color:var(--body-text-color);}
+.cmmt_bottom .cmmt_date{font-size:14px;color:#666;}
+
+.cmmt_input{margin:40px 0 0 0;}
+.cmmt_input textarea{width:calc(100% - 95px);height:120px;margin:0 10px 0 0;}
+.cmmt_input button.btn.xlarge{height:120px;}
+
 
src/styles/usr/tab.css (added)
+++ src/styles/usr/tab.css
@@ -0,0 +1,18 @@
+@charset "utf-8";
+
+.tabs{display:flex;width:100%;margin:0 0 30px 0;}
+
+.tabs.tab02 li{width:calc(100%/2);}
+.tabs.tab03 li{width:calc(100%/3);}
+.tabs.tab04 li{width:calc(100%/4);}
+.tabs.tab05 li{width:calc(100%/5);}
+.tabs.tab06 li{width:calc(100%/6);}
+
+.tabs.fill .tab{width:100%;height:60px;font-size:20px;font-weight:500;border:1px solid #d1d6df;border-right:0;color:#838994;}
+.tabs.fill .tab.active{border:1px solid var(--primary-color);background:var(--primary-lighter-color);color:var(--primary-color);}
+.tabs.fill :first-child .tab{border-radius:8px 0 0 8px;}
+.tabs.fill :last-child .tab{border-radius:0 8px 8px 0;border-right:1px solid #d1d6df;}
+.tabs.fill :last-child .tab.active{border:1px solid var(--primary-color);}
+
+.tab_content{display:none;}
+.tab_content.active{display:block;}
 
src/styles/usr/table.css (added)
+++ src/styles/usr/table.css
@@ -0,0 +1,37 @@
+@charset "utf-8";
+
+.table{border-top:2px solid #000;}
+.table table{table-layout:fixed;width:100%;}
+.table .mobile_show,.table .mobile_hide{display:none;}
+.table .required{color:var(--red-color);margin:0 4px 0 0;}
+
+.table_type_cols{margin:12px 0 0 0;}
+.table_type_cols tr{border-bottom:1px solid #e2e7ef;}
+.table_type_cols th,.table_type_cols td{padding:4px 8px;font-size:16px;text-align:center;box-sizing:border-box;}
+.table_type_cols thead>tr>th{height:60px;font-weight:500;color:#25272A;}
+.table_type_cols tbody>tr>td{height:50px;font-weight:400;color:#444;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}
+.table_type_cols .text_left a{width:100%;text-align:left;}
+
+
+.table_type_rows{margin:30px 0;}
+.table_type_rows tr{border-bottom:1px solid #e2e7ef;}
+.table_type_rows tbody>tr>th,.table_type_rows tbody>tr>td{height:50px;padding:12px 20px;font-size:16px;color:#25272A;box-sizing:border-box;}
+.table_type_rows tbody>tr>th{text-align:center;font-weight:500;background:#F2F3F5;}
+.table_type_rows tbody>tr>td{text-align:left;font-weight:400;}
+
+.file_top{display:flex;justify-content:space-between;align-items:flex-end;}
+.file_table{height:150px;margin:12px 0 0 0;border:1px solid var(--lightgray-color);border-radius:8px;}
+.file_table table{table-layout:fixed;width:100%;border-collapse: collapse;}
+.file_table tbody{width:100%;max-height:150px;overflow-y:auto;}
+.file_table th{height:36px;font-size:14px;color:#222;padding:0 8px;text-align:center;}
+.file_table tbody>tr>td{height:36px;font-size:14px;color:#444;padding:0 8px;text-align:center;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}
+
+.file_table.before_file_table table{height:100%;}
+.file_table.before_file_table thead{opacity:0.3;}
+.file_table.before_file_table tbody{background:#EFF0F4;}
+.file_table.before_file_table tbody tr{height:100%;border:0;text-align:center;}
+.file_table.before_file_table p{font-size:14px;}
+.file_table.before_file_table b{color:var(--primary-color);}
+
+
+
 
src/user/UserLayout.tsx (added)
+++ src/user/UserLayout.tsx
@@ -0,0 +1,132 @@
+import type { ReactNode } from 'react';
+
+const navItems = ['소개', '게시판', '자료실', '마이페이지'];
+
+function UserHeader() {
+  return (
+    <header className="header">
+      <div className="header_top">
+        <div className="inner">
+          <div className="area_left" />
+          <ul className="user_menu">
+            <li>
+              <a href="#">본인인증</a>
+            </li>
+            <li>
+              <a href="#">마이페이지</a>
+            </li>
+          </ul>
+        </div>
+      </div>
+      <div className="header_container">
+        <div className="inner">
+          <h1 className="logo">
+            <a href="#">
+              <span>BASE USER</span>
+            </a>
+          </h1>
+          <nav>
+            <ul className="gnb">
+              {navItems.map((item) => (
+                <li key={item}>
+                  <a href="#" className="depth01">
+                    {item}
+                  </a>
+                  <div className="depth02_container">
+                    <ul className="depth02_ul">
+                      <li>
+                        <a href="#" className="depth02">
+                          {item} 하위메뉴
+                        </a>
+                      </li>
+                      <li>
+                        <a href="#" className="depth02">
+                          안내
+                        </a>
+                      </li>
+                    </ul>
+                  </div>
+                </li>
+              ))}
+            </ul>
+          </nav>
+          <ul className="header_util">
+            <li>
+              <button type="button" className="btn_search" title="검색">
+                <i />
+              </button>
+            </li>
+            <li>
+              <button type="button" className="btn_sitemap" title="전체메뉴 보기">
+                <i />
+              </button>
+            </li>
+          </ul>
+        </div>
+      </div>
+    </header>
+  );
+}
+
+function UserSideMenu() {
+  return (
+    <aside className="sidemenu">
+      <div className="sidemenu_tit">
+        <h2>마이페이지</h2>
+      </div>
+      <nav className="sidemenu_nav">
+        <ul className="depth01_list">
+          <li>
+            <a href="#" className="depth01" rel="noopener noreferrer">
+              게시판 <i />
+            </a>
+            <ul className="depth02_list">
+              <li>
+                <a href="#" className="depth02">
+                  공지사항
+                </a>
+              </li>
+              <li>
+                <a href="#" className="depth02">
+                  자료실
+                </a>
+              </li>
+            </ul>
+          </li>
+          <li>
+            <a href="#" className="depth01">
+              내 신청 내역
+            </a>
+          </li>
+          <li>
+            <a href="#" className="depth01">
+              회원정보
+            </a>
+          </li>
+        </ul>
+      </nav>
+    </aside>
+  );
+}
+
+export function UserLayout({ children }: { children: ReactNode }) {
+  return (
+    <div className="wrap">
+      <UserHeader />
+      <div id="container" className="container sub">
+        <div className="inner">
+          <UserSideMenu />
+          <div className="content_wrap">
+            <div className="content_title">
+              <h2>공지사항</h2>
+            </div>
+            <div className="contents">{children}</div>
+          </div>
+        </div>
+      </div>
+      <footer className="footer">
+        <div className="inner">Copyright BASE USER.</div>
+      </footer>
+    </div>
+  );
+}
 
src/user/UserListPage.tsx (added)
+++ src/user/UserListPage.tsx
@@ -0,0 +1,136 @@
+const rows = Array.from({ length: 5 }).map((_, index) => ({
+  no: index + 1,
+  title: `게시글 제목 샘플 ${index + 1}`,
+  period: '2026-05-04 ~ 2026-05-31',
+  createdAt: '2026-05-04',
+  status: index === 0 ? '접수중' : '마감',
+}));
+
+export function UserListPage() {
+  return (
+    <>
+      <ul className="tabs fill tab03">
+        <li>
+          <button type="button" className="tab active">
+            tab1
+          </button>
+        </li>
+        <li>
+          <button type="button" className="tab">
+            tab2
+          </button>
+        </li>
+        <li>
+          <button type="button" className="tab">
+            tab3
+          </button>
+        </li>
+      </ul>
+
+      <div className="search_area">
+        <div className="search_left">
+          <p className="total_number">
+            총 게시물 <b>111</b>건
+          </p>
+        </div>
+        <div className="search_right">
+          <select title="검색조건" className="search_select">
+            <option>전체</option>
+            <option>제목</option>
+            <option>내용</option>
+          </select>
+          <div className="search_type input_type">
+            <input type="text" title="검색어 입력" className="input search_input" />
+          </div>
+          <button type="button" className="btn btn_search">
+            검색
+          </button>
+          <button type="button" className="btn btn_reset">
+            초기화
+          </button>
+        </div>
+      </div>
+
+      <div className="table table_type_cols">
+        <table>
+          <colgroup>
+            <col style={{ width: '80px' }} />
+            <col style={{ width: 'auto' }} />
+            <col style={{ width: '26%' }} />
+            <col style={{ width: '11%' }} />
+            <col style={{ width: '12%' }} />
+          </colgroup>
+          <thead>
+            <tr>
+              <th>번호</th>
+              <th>제목</th>
+              <th>기간</th>
+              <th>등록일</th>
+              <th>상태</th>
+            </tr>
+          </thead>
+          <tbody>
+            {rows.map((row) => (
+              <tr key={row.no}>
+                <td>
+                  <span className="mobile_show">번호</span>
+                  {row.no}
+                </td>
+                <td className="text_left">
+                  <span className="mobile_hide">제목</span>
+                  <a href="#">{row.title}</a>
+                </td>
+                <td>
+                  <span className="mobile_show">기간</span>
+                  {row.period}
+                </td>
+                <td>
+                  <span className="mobile_show">등록일</span>
+                  {row.createdAt}
+                </td>
+                <td>
+                  <span className="mobile_show">상태</span>
+                  <strong className={`status line ${row.status === '접수중' ? 'blue' : 'gray'}`}>{row.status}</strong>
+                </td>
+              </tr>
+            ))}
+          </tbody>
+        </table>
+      </div>
+
+      <ul className="page">
+        <li>
+          <a href="#" className="btn_page btn_first" title="첫 페이지로 이동">
+            <i />
+          </a>
+        </li>
+        <li>
+          <a href="#" className="btn_page btn_prev" title="이전 페이지로 이동">
+            <i />
+          </a>
+        </li>
+        <li>
+          <a href="#" className="active">
+            1
+          </a>
+        </li>
+        <li>
+          <a href="#">2</a>
+        </li>
+        <li>
+          <a href="#">3</a>
+        </li>
+        <li>
+          <a href="#" className="btn_page btn_next" title="다음 페이지로 이동">
+            <i />
+          </a>
+        </li>
+        <li>
+          <a href="#" className="btn_page btn_last" title="마지막 페이지로 이동">
+            <i />
+          </a>
+        </li>
+      </ul>
+    </>
+  );
+}
 
src/user/index.ts (added)
+++ src/user/index.ts
@@ -0,0 +1,16 @@
+// common
+import '../styles/common/reset.css'
+import '../styles/common/font.css'
+import '../styles/common/style.css'
+
+import '../styles/usr/common.css'
+import '../styles/usr/layout.css'
+import '../styles/usr/content_layout.css'
+import '../styles/usr/style.css'
+import '../styles/usr/button.css'
+import '../styles/usr/tab.css'
+import '../styles/usr/table.css'
+import '../styles/usr/calendar.css'
+import '../styles/usr/popup.css'
+import '../styles/usr/content.css'
+import '../styles/usr/main.css'
 
tsconfig.app.json (added)
+++ tsconfig.app.json
@@ -0,0 +1,25 @@
+{
+  "compilerOptions": {
+    "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
+    "target": "es2023",
+    "lib": ["ES2023", "DOM", "DOM.Iterable"],
+    "module": "esnext",
+    "types": ["vite/client"],
+    "skipLibCheck": true,
+
+    /* Bundler mode */
+    "moduleResolution": "bundler",
+    "allowImportingTsExtensions": true,
+    "verbatimModuleSyntax": true,
+    "moduleDetection": "force",
+    "noEmit": true,
+    "jsx": "react-jsx",
+
+    /* Linting */
+    "noUnusedLocals": true,
+    "noUnusedParameters": true,
+    "erasableSyntaxOnly": true,
+    "noFallthroughCasesInSwitch": true
+  },
+  "include": ["src"]
+}
 
tsconfig.json (added)
+++ tsconfig.json
@@ -0,0 +1,7 @@
+{
+  "files": [],
+  "references": [
+    { "path": "./tsconfig.app.json" },
+    { "path": "./tsconfig.node.json" }
+  ]
+}
 
tsconfig.node.json (added)
+++ tsconfig.node.json
@@ -0,0 +1,24 @@
+{
+  "compilerOptions": {
+    "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
+    "target": "es2023",
+    "lib": ["ES2023"],
+    "module": "esnext",
+    "types": ["node"],
+    "skipLibCheck": true,
+
+    /* Bundler mode */
+    "moduleResolution": "bundler",
+    "allowImportingTsExtensions": true,
+    "verbatimModuleSyntax": true,
+    "moduleDetection": "force",
+    "noEmit": true,
+
+    /* Linting */
+    "noUnusedLocals": true,
+    "noUnusedParameters": true,
+    "erasableSyntaxOnly": true,
+    "noFallthroughCasesInSwitch": true
+  },
+  "include": ["vite.config.ts"]
+}
 
vite.config.ts (added)
+++ vite.config.ts
@@ -0,0 +1,10 @@
+import { defineConfig } from 'vite'
+import react from '@vitejs/plugin-react'
+
+export default defineConfig({
+  plugins: [react()],
+  server: {
+    port: 5173,
+    host: '0.0.0.0'
+  },
+})
Add a comment
List