diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..44da05a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,25 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/settings.json
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..7cfa00f
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,4 @@
+dist/
+node_modules/
+public/
+*.min.js
\ No newline at end of file
diff --git a/.prettierrc.json b/.prettierrc.json
new file mode 100644
index 0000000..bd686c7
--- /dev/null
+++ b/.prettierrc.json
@@ -0,0 +1,13 @@
+{
+ "semi": true,
+ "trailingComma": "es5",
+ "singleQuote": true,
+ "printWidth": 100,
+ "tabWidth": 2,
+ "useTabs": false,
+ "bracketSpacing": true,
+ "arrowParens": "always",
+ "endOfLine": "lf",
+ "embeddedLanguageFormatting": "auto",
+ "htmlWhitespaceSensitivity": "css"
+}
\ No newline at end of file
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000..2ff0d26
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,4 @@
+{
+ "recommendations": ["esbenp.prettier-vscode"],
+ "unwantedRecommendations": []
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..1be65d1
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,19 @@
+{
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+ "editor.formatOnSave": true,
+ "editor.formatOnPaste": true,
+ "editor.tabSize": 2,
+ "[html]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[css]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[javascript]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "files.associations": {
+ "*.xml": "html",
+ "*.svg": "html"
+ }
+}
diff --git a/README.md b/README.md
index 0663813..74077bc 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,32 @@
-# homepage
+# Inova - Frontend
+فرانتاند قالب وردپرس پروژه Inova
+
+## درباره پروژه
+
+این ریپوزیتوری بخش فرانتاند قالب وردپرس پروژه اصلی است. اینجا تمام طراحیها، کامپوننتها و assetها با استفاده از Vite توسعه داده میشود.
+
+## نحوه راهاندازی پروژه
+
+### پیشنیازها
+
+- Node.js نسخه 18 یا بالاتر (نسخه 22 پیشنهاد میشه)
+- ادیتور Vs Code
+- نصب بودن اکستنشن prettier روی vs code
+- نصب بودن git روی سیستم عامل
+
+### نصب و اجرا
+
+```bash
+# کلون کردن پروژه
+git clone https://dev.novindiyar.com/Inova-Agency/inova-frontend.git
+
+# ورود به پوشه
+cd inova-frontend
+
+# نصب وابستگیها
+npm install
+
+# اجرای محیط توسعه
+npm run dev
+```
diff --git a/homepage.html b/homepage.html
new file mode 100644
index 0000000..2ddec3f
--- /dev/null
+++ b/homepage.html
@@ -0,0 +1,1251 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
INOVA
+
+
+
+
+
برند خود را با
+
+
+
+ خلاقیت
+ نوآوری
+ دیتامحوری
+
+
+
+
+
در بازار شلوغ متمایز کنید!
+
+
+ اینوا جایی است که با ترکیب نوآوری، خلاقیت و دادهمحوری، به کسبوکارها کمک میکند
+ در مسیر رشد حرکت کنند.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
خدمات برندینگ
+
طراحی و ساخت هویت منحصربهفرد
+
+
+
+
+
+
+
+
+
+
+
+
+
کمپینهای تبلیغاتی
+
طراحی و اجرای کمپینهای خلاق برای رشد برند
+
+
+
+
+
+
+
+
+
+
+
+
+
خدمات طراحی و توسعه سایت
+
+
طراحی و توسعه وبسایتهای موثر و کاربردی
+
+
+
+
+
+
+
+
+
+
+
+
+
گیمیفیکیشن
+
افزایش تعامل با بازی وارسازی هوشمند
+
+
+
+
+
+
+
+
+
+
+
+
+
+
تولید محتوا
+
خلق محتوای خلاق، جذاب و ماندگار
+
+
+
+
+
+
+
+
+
+
+
+
+
+
برگزاری رویداد
+
برنامهریزی و اجرای رویدادهای اثرگذار
+
+
+
+
+
+
+
+
+
+
+
+
+
شبکههای اجتماعی
+
مدیریت حرفهای و رشد هدفمند رسانهها
+
+
+
+
+
+
+
+
+
+
+
+
+
سئو
+
افزایش دیده شدن برند در نتایج جستجو
+
+
+
+
+
+
+
+
+
+
+
+
+
خدمات مشاوره
+
ارائه استراتژی و راهکار برای رشد کسبوکار
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
از ایدههایتان دست نکشید!
+
وقت آن رسیده که ایدهتان جان بگیرد!
+
+ ما در اینوا با تخصص، دیتا و دانش خود ایدههای خام شما رو صیقل میدهیم و به پروژههای
+ سودآور تبدیل میکنیم. همین امروز برای مشاوره اقدام کنید.
+
+
+
درخواست جلسه مشاوره
+
+
+
+
+
+
+
+
+
+
+
درباره اینوا
+
شرکت پردازشگران بینش ساز نگاه نو (اینوا)
+
+ داستان اینوا از یک دغدغه ساده شروع شد: عبور از مرزهای معمول بازاریابی. ما
+ نیامدهایم که فقط یک پروژه برایتان انجام دهیم؛ آمدهایم تا به عنوان بازوی خلاق
+ شما، ایدههای خامتان را صیقل بدهیم و آنها را به تجربههایی تبدیل کنیم که
+ مخاطبانتان عاشقش شوند.
+
+
+ درباره ما
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
آشنایی با تیم و مجموعه اینوا
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..6f6b375
--- /dev/null
+++ b/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+ Inova
+
+
+
+ سلام دنیا
+
+
+
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..bfe917c
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,889 @@
+{
+ "name": "inova-frontend",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "inova-frontend",
+ "version": "0.0.0",
+ "devDependencies": {
+ "prettier": "^3.8.3",
+ "vite": "^8.0.4"
+ }
+ },
+ "node_modules/@emnapi/core": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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/@napi-rs/wasm-runtime": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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,
+ "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.npmmirror.com/@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,
+ "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.npmmirror.com/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.15.tgz",
+ "integrity": "sha512-VDpgGBzgfg5hLg+uBpCLoFG5kVvEyafmfxGUV0UHLcL5irxAK7PKNeC2MwClgk6ZAiNhmo9FLhRYgvMmedLtnQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "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.npmmirror.com/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.15.tgz",
+ "integrity": "sha512-y1uXY3qQWCzcPgRJATPSOUP4tCemh4uBdY7e3EZbVwCJTY3gLJWnQABgeUetvED+bt1FQ01OeZwvhLS2bpNrAQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "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.npmmirror.com/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.15.tgz",
+ "integrity": "sha512-023bTPBod7J3Y/4fzAN6QtpkSABR0rigtrwaP+qSEabUh5zf6ELr9Nc7GujaROuPY3uwdSIXWrvhn1KxOvurWA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "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.npmmirror.com/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.15.tgz",
+ "integrity": "sha512-witB2O0/hU4CgfOOKUoeFgQ4GktPi1eEbAhaLAIpgD6+ZnhcPkUtPsoKKHRzmOoWPZue46IThdSgdo4XneOLYw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.15",
+ "resolved": "https://registry.npmmirror.com/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.15.tgz",
+ "integrity": "sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@tybys/wasm-util": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmmirror.com/@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/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmmirror.com/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/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmmirror.com/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/lightningcss": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz",
+ "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "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-musl": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmmirror.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz",
+ "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==",
+ "cpu": [
+ "arm64"
+ ],
+ "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-x64-gnu": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmmirror.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz",
+ "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==",
+ "cpu": [
+ "x64"
+ ],
+ "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-x64-musl": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmmirror.com/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,
+ "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.npmmirror.com/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.npmmirror.com/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/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmmirror.com/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/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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/prettier": {
+ "version": "3.8.3",
+ "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.8.3.tgz",
+ "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/rolldown": {
+ "version": "1.0.0-rc.15",
+ "resolved": "https://registry.npmmirror.com/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/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/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/tinyglobby": {
+ "version": "0.2.16",
+ "resolved": "https://registry.npmmirror.com/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/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "dev": true,
+ "license": "0BSD",
+ "optional": true
+ },
+ "node_modules/vite": {
+ "version": "8.0.8",
+ "resolved": "https://registry.npmmirror.com/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
+ }
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..44bcb07
--- /dev/null
+++ b/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "inova-frontend",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview"
+ },
+ "devDependencies": {
+ "prettier": "^3.8.3",
+ "vite": "^8.0.4"
+ }
+}
diff --git a/public/.gitkeep b/public/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/public/images/.gitkeep b/public/images/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/public/images/1.png b/public/images/1.png
new file mode 100644
index 0000000..6103de6
Binary files /dev/null and b/public/images/1.png differ
diff --git a/public/images/2.png b/public/images/2.png
new file mode 100644
index 0000000..28a0433
Binary files /dev/null and b/public/images/2.png differ
diff --git a/public/images/CTA-pic.webp b/public/images/CTA-pic.webp
new file mode 100644
index 0000000..9092250
Binary files /dev/null and b/public/images/CTA-pic.webp differ
diff --git a/public/images/DigitalPublish 1.png b/public/images/DigitalPublish 1.png
new file mode 100644
index 0000000..b748f5f
Binary files /dev/null and b/public/images/DigitalPublish 1.png differ
diff --git a/public/images/Group.png b/public/images/Group.png
new file mode 100644
index 0000000..702fb4f
Binary files /dev/null and b/public/images/Group.png differ
diff --git a/public/images/Vector (1).png b/public/images/Vector (1).png
new file mode 100644
index 0000000..3983274
Binary files /dev/null and b/public/images/Vector (1).png differ
diff --git a/public/images/Vector.png b/public/images/Vector.png
new file mode 100644
index 0000000..a02a8d0
Binary files /dev/null and b/public/images/Vector.png differ
diff --git a/public/images/bishp 1.png b/public/images/bishp 1.png
new file mode 100644
index 0000000..2ed2dd7
Binary files /dev/null and b/public/images/bishp 1.png differ
diff --git a/public/images/blure-effect 1.png b/public/images/blure-effect 1.png
new file mode 100644
index 0000000..68745ce
Binary files /dev/null and b/public/images/blure-effect 1.png differ
diff --git a/public/images/hamkaran.png b/public/images/hamkaran.png
new file mode 100644
index 0000000..70def58
Binary files /dev/null and b/public/images/hamkaran.png differ
diff --git a/public/images/hesabdari.png b/public/images/hesabdari.png
new file mode 100644
index 0000000..4c92ff1
Binary files /dev/null and b/public/images/hesabdari.png differ
diff --git a/public/images/images 1.png b/public/images/images 1.png
new file mode 100644
index 0000000..fc0b6e2
Binary files /dev/null and b/public/images/images 1.png differ
diff --git a/public/images/ipka.png b/public/images/ipka.png
new file mode 100644
index 0000000..bf99ebd
Binary files /dev/null and b/public/images/ipka.png differ
diff --git a/public/images/king 1.png b/public/images/king 1.png
new file mode 100644
index 0000000..d52ba50
Binary files /dev/null and b/public/images/king 1.png differ
diff --git a/public/images/nil.png b/public/images/nil.png
new file mode 100644
index 0000000..5a5f42c
Binary files /dev/null and b/public/images/nil.png differ
diff --git a/public/images/petboom.png b/public/images/petboom.png
new file mode 100644
index 0000000..ef9baf1
Binary files /dev/null and b/public/images/petboom.png differ
diff --git a/public/images/prof.png b/public/images/prof.png
new file mode 100644
index 0000000..767eee8
Binary files /dev/null and b/public/images/prof.png differ
diff --git a/public/images/sepidar.png b/public/images/sepidar.png
new file mode 100644
index 0000000..77d1184
Binary files /dev/null and b/public/images/sepidar.png differ
diff --git a/public/images/snap.png b/public/images/snap.png
new file mode 100644
index 0000000..1b0cc9f
Binary files /dev/null and b/public/images/snap.png differ
diff --git a/public/images/soldier 1.png b/public/images/soldier 1.png
new file mode 100644
index 0000000..f644bd0
Binary files /dev/null and b/public/images/soldier 1.png differ
diff --git a/public/images/soldier 2.png b/public/images/soldier 2.png
new file mode 100644
index 0000000..1b26ab1
Binary files /dev/null and b/public/images/soldier 2.png differ
diff --git a/public/images/thumb.png b/public/images/thumb.png
new file mode 100644
index 0000000..42db6fc
Binary files /dev/null and b/public/images/thumb.png differ
diff --git a/public/images/videotest.mp4 b/public/images/videotest.mp4
new file mode 100644
index 0000000..d4f3e65
Binary files /dev/null and b/public/images/videotest.mp4 differ
diff --git a/public/images/zabanmehr (1).png b/public/images/zabanmehr (1).png
new file mode 100644
index 0000000..bdf4d71
Binary files /dev/null and b/public/images/zabanmehr (1).png differ
diff --git a/public/images/zabanmehr (3).png b/public/images/zabanmehr (3).png
new file mode 100644
index 0000000..1643195
Binary files /dev/null and b/public/images/zabanmehr (3).png differ
diff --git a/public/images/zarin.png b/public/images/zarin.png
new file mode 100644
index 0000000..8d9590f
Binary files /dev/null and b/public/images/zarin.png differ
diff --git a/public/images/Ñëîé_10.png b/public/images/Ñëîé_10.png
new file mode 100644
index 0000000..173f267
Binary files /dev/null and b/public/images/Ñëîé_10.png differ
diff --git a/src/assets/css/homepage-responsive.css b/src/assets/css/homepage-responsive.css
new file mode 100644
index 0000000..9dc4732
--- /dev/null
+++ b/src/assets/css/homepage-responsive.css
@@ -0,0 +1,390 @@
+@media screen and (max-width: 1400px) {
+}
+@media screen and (max-width: 1200px) {
+}
+@media screen and (max-width: 992px) {
+ .services-grid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+ .text-content h3 {
+ font-size: 22px;
+ }
+ .service-grid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+ .comments-section-wrapper {
+ grid-template-columns: 1fr;
+ }
+ .about-content {
+ flex-direction: column;
+ gap: 25px;
+ }
+ .video-wrapper {
+ order: 1;
+ }
+ .content-wrapper {
+ order: 2;
+ width: 100%;
+ }
+ .content-wrapper h2 {
+ font-size: 22px;
+ }
+ .badge {
+ font-size: 12px;
+ }
+
+ .piece-1 {
+ position: absolute;
+ width: 312px;
+ left: 152px;
+ top: 21%;
+ }
+ .piece-2 {
+ position: absolute;
+ width: 482px;
+ left: 160px;
+ bottom: -144px;
+ }
+ .piece-4 {
+ position: absolute;
+ width: 472px;
+ right: -305px;
+ top: 32%;
+ }
+ .piece-5 {
+ position: absolute;
+ width: 290px;
+ right: -127px;
+ bottom: -92px;
+ }
+ .footer-container {
+ display: flex;
+ flex-direction: column;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+ margin-bottom: 24px;
+ }
+ .footer-cta {
+ bottom: 93%;
+ left: 90px;
+ right: 90px;
+ }
+}
+@media screen and (max-width: 768px) {
+ .related-boxes {
+ grid-template-columns: repeat(1, minmax(326px, 350px));
+ }
+ .related-title {
+ font-size: 22px;
+ }
+ .related-button {
+ display: none;
+ }
+ .related-button-mobile {
+ display: flex;
+ gap: 8px;
+ height: 40px;
+ padding: 0px 12px 0px 10px;
+ background-color: var(--color-primary);
+ border-radius: 10px;
+ color: #ffffff;
+ align-items: center;
+ align-self: center;
+ margin-top: 24px;
+ }
+ .related-button-mobile span {
+ font-size: 15px;
+ font-weight: 400;
+ }
+ .services-horizontal {
+ padding: 30px 14px;
+ border-radius: 18px;
+ }
+
+ .services-header {
+ text-align: center;
+ }
+
+ .services-header h2 {
+ font-size: 30px;
+ }
+
+ .services-header p {
+ font-size: 14px;
+ }
+
+ .services-grid {
+ grid-template-columns: 1fr;
+ gap: 12px;
+ }
+
+ .service-content {
+ min-height: 72px;
+ padding: 14px;
+ }
+
+ .icon-bubble {
+ width: 46px;
+ height: 46px;
+ min-width: 46px;
+ font-size: 20px;
+ }
+
+ .text-content h3 {
+ font-size: 18px;
+ margin-bottom: 4px;
+ }
+
+ .text-content p {
+ font-size: 13px;
+ }
+ .container-service-section {
+ padding: 0;
+ }
+ .service-section > .container-service-section {
+ padding: 0;
+ border-radius: 0;
+ margin-top: 100px;
+ }
+ .service-section {
+ padding: 0;
+ border-radius: 0;
+ }
+
+ .service-header {
+ text-align: center;
+ }
+
+ .service-heading {
+ font-size: 1.8rem;
+ }
+
+ .service-tagline {
+ font-size: 0.9rem;
+ }
+
+ .service-grid {
+ grid-template-columns: 1fr;
+ gap: 12px;
+ }
+
+ .service-content {
+ min-height: 72px;
+ padding: 14px;
+ }
+
+ .service-icon {
+ width: 46px;
+ height: 46px;
+ min-width: 46px;
+ font-size: 1rem;
+ }
+
+ .service-title {
+ font-size: 1rem;
+ }
+
+ .service-description {
+ font-size: 0.8rem;
+ }
+ .related-under-box {
+ flex-wrap: wrap;
+ }
+ .consultation-title {
+ display: none;
+ }
+
+ .consultation-title-phone {
+ display: block;
+ color: var(--color-primary);
+ font-size: 24px;
+ font-weight: bold;
+ margin-bottom: 8px;
+ }
+ .consultation-text {
+ font-size: 15px;
+ }
+ .header-container {
+ position: relative;
+ padding: 14px 16px;
+
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .header-logo {
+ position: absolute;
+ left: 50%;
+ transform: translateX(-50%);
+ }
+
+ .header-logo img {
+ height: 36px;
+ }
+
+ .header-left {
+ position: absolute;
+ left: 16px;
+ }
+
+ .header-phone {
+ display: none;
+ }
+
+ .header-menu-toggle {
+ display: flex;
+
+ position: absolute;
+ right: 16px;
+ }
+
+ .header-nav {
+ display: none;
+ }
+
+ .footer-imgb,
+ .footer-imga {
+ display: none;
+ }
+ .footer-imgd {
+ display: block;
+ position: absolute;
+ top: 0;
+ left: 0;
+ }
+ .footer-imgc {
+ display: block;
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ }
+ .footer-cta-content {
+ border-radius: 10px;
+ padding: 24px 16px;
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+ justify-content: space-between;
+ gap: 24px;
+ }
+ .footer-cta-txt h2 {
+ margin-bottom: 16px;
+ font-size: 22px;
+ font-weight: 700;
+ align-self: center;
+ }
+ .footer-cta-txt p {
+ font-size: 14px;
+ text-align: center;
+ line-height: 1.8;
+ }
+ .desktop1 {
+ display: none;
+ }
+
+ .mobile-stat {
+ display: flex;
+ }
+}
+@media screen and (max-width: 576px) {
+ .hero-bg-word {
+ font-size: 257px;
+
+ top: 57%;
+ left: 50%;
+
+ transform: translate(-50%, -50%) rotate(90deg) !important;
+
+ transform-origin: center;
+ }
+ .comments-section-brand-card {
+ position: relative;
+ height: 117px;
+ border: 1px solid #dfdfdf;
+ border-radius: 10px;
+ overflow: hidden;
+ cursor: pointer;
+ }
+ .comments-section-brands {
+ grid-template-columns: repeat(2, 1fr);
+ }
+ .comments-section-title {
+ font-size: 22px;
+ }
+ .consultation-container {
+ padding: 0;
+ }
+ .consultation-box {
+ padding: 20px;
+ }
+ .piece-4 {
+ width: 258px;
+ right: -236px;
+ top: 18%;
+ }
+ .piece-2 {
+ width: 304px;
+ left: 45px;
+ bottom: -15%;
+ }
+ .piece-3 {
+ width: 641px;
+ }
+ .piece-5 {
+ width: 206px;
+ right: -180px;
+ bottom: -10%;
+ }
+ .piece-1 {
+ width: 172px;
+ left: 22px;
+ top: 18%;
+ }
+ .h-txt1 {
+ font-size: 32px;
+ }
+ .h-txt2 {
+ font-size: 30px;
+ }
+ .word {
+ font-size: 32px;
+ }
+
+ .scroll-text-hero {
+ color: var(--color-primary);
+ font-size: 30px;
+ width: 153px;
+ }
+ .hero-actions {
+ flex-wrap: wrap;
+ }
+ .hero-btn-primary,
+ .hero-btn-secondary {
+ width: 100%;
+ }
+ .hero-content p {
+ margin-bottom: 24px;
+ }
+ .footer-cta {
+ left: 20px;
+ right: 20px;
+ }
+ .footer {
+ padding-top: 129px;
+ }
+ .footer-bottom-line {
+ margin-bottom: 92px;
+ }
+ .video-title {
+ font-size: 20px;
+ }
+ .play-btn-about svg {
+ width: 60px;
+ height: 60px;
+ }
+ .arrow-btn-about svg {
+ width: 72px;
+ height: 70px;
+ }
+}
diff --git a/src/assets/css/homepage.css b/src/assets/css/homepage.css
new file mode 100644
index 0000000..967f27f
--- /dev/null
+++ b/src/assets/css/homepage.css
@@ -0,0 +1,1617 @@
+section > .container {
+ max-width: 1240px;
+ padding: 0 20px;
+ margin: 0 auto;
+}
+/* ===================================هدر================================= */
+.header {
+ position: relative;
+ width: 100%;
+ background: #fff;
+ border-bottom: 1px solid #eee;
+ z-index: 1000;
+}
+
+.header-container {
+ max-width: 1200px;
+ margin: 0 auto;
+ padding: 0 24px;
+ height: 84px;
+
+ display: flex;
+ align-items: center;
+}
+/* ===== Left Section ===== */
+
+.header-left {
+ display: flex;
+ align-items: center;
+ gap: 16px;
+}
+
+.header-phone:hover svg,
+.header-phone:hover span {
+ color: #03aeff;
+ fill: #03aeff;
+}
+.header-phone {
+ display: flex;
+ align-items: center;
+ gap: 4px;
+
+ text-decoration: none;
+ color: #0a8ed8;
+ font-size: 13px;
+ font-weight: 400;
+ line-height: 1.8;
+}
+.header-user-btn {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ background: transparent;
+ border: none;
+ cursor: pointer;
+}
+
+/* ===== Menu ===== */
+.header-nav {
+ margin-left: auto;
+ margin-right: 48px;
+}
+.header-menu {
+ display: flex;
+ align-items: center;
+ gap: 30px;
+
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.header-menu a {
+ text-decoration: none;
+ color: var(--color-title);
+ font-size: 15px;
+ font-weight: 400;
+}
+
+.header-menu a:hover {
+ color: var(--color-primary);
+}
+
+/* ===== Logo ===== */
+
+.header-logo img {
+ display: block;
+ height: 42px;
+}
+.header-logo {
+ flex-shrink: 0;
+ display: flex;
+ align-items: center;
+}
+/* ===== Hamburger ===== */
+
+.header-menu-toggle {
+ display: none;
+
+ width: 48px;
+ height: 48px;
+
+ border: none;
+ background: transparent;
+ cursor: pointer;
+
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ gap: 4px;
+}
+
+.header-menu-toggle span {
+ width: 16px;
+ height: 2px;
+ background: var(--color-text);
+ border-radius: 50px;
+}
+
+/* ===== Mobile Menu ===== */
+
+.header-mobile-menu {
+ position: fixed;
+ inset: 0;
+ background: #ffffff;
+ display: none;
+ flex-direction: column;
+ z-index: 900;
+}
+
+.header-mobile-menu.active {
+ display: flex;
+}
+
+.header-mobile-top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 16px;
+}
+
+.header-mobile-logo img {
+ height: 60px;
+}
+
+.header-mobile-close {
+ border: none;
+ background: transparent;
+ font-size: 34px;
+ cursor: pointer;
+}
+
+.header-mobile-nav {
+ display: flex;
+ flex-direction: column;
+ gap: 24px;
+ padding: 20px 24px;
+}
+
+.header-mobile-nav a {
+ display: flex;
+ align-items: center;
+
+ text-decoration: none;
+ color: var(--color-text);
+}
+
+.header-mobile-nav-hover {
+ display: flex;
+ margin-left: auto;
+}
+.header-mobile-item {
+ display: flex;
+ align-items: center;
+
+ font-size: 15px;
+ font-weight: bold;
+ color: var(--color-text);
+}
+.header-mobile-item :hover {
+ color: var(--color-primary);
+}
+.header-mobile-arrow {
+ font-size: 30px;
+}
+.header-mobile-consultation {
+ padding: 8px 12px;
+ border-radius: 10px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-decoration: none;
+ background: var(--color-primary);
+ color: #fff;
+ font-weight: bold;
+ font-size: 15px;
+ line-height: 1.7;
+ margin: 24px 20px;
+}
+.header-mobile-footer {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0 20px;
+}
+
+.header-mobile-socials {
+ display: flex;
+ gap: 18px;
+}
+
+.header-mobile-phone {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+
+ text-decoration: none;
+ color: #444;
+}
+
+.menuicon {
+ margin-left: 8px;
+}
+
+.phoneicon use {
+ stroke: #505068;
+}
+
+.header-mobile-nav-hover:hover .header-mobile-item,
+.header-mobile-nav-hover:hover .phoneicon use {
+ color: #0274b3;
+ stroke: var(--color-primary);
+}
+
+/* ============================هیروسکشن====================================== */
+.hero-section {
+ position: relative;
+ overflow: hidden;
+ min-height: 100vh;
+ background:
+ radial-gradient(circle at top center, rgba(35, 133, 214, 0.08), transparent 35%),
+ linear-gradient(180deg, #f8faff 0%, #f3f7fc 100%);
+}
+.hero-pattern-background {
+ position: relative;
+ overflow: hidden;
+ min-height: 100vh;
+ background:
+ radial-gradient(circle at top center, rgba(35, 133, 214, 0.08), transparent 35%),
+ linear-gradient(180deg, #f8faff 0%, #f3f7fc 100%);
+}
+.hero-pattern-background::before {
+ content: '';
+ position: absolute;
+ inset: 0;
+ background-image: radial-gradient(rgba(40, 80, 120, 0.08) 1px, transparent 1px);
+ background-size: 20px 20px;
+ pointer-events: none;
+}
+.hero-section::before,
+.hero-section::after {
+ content: '';
+ position: absolute;
+ width: 403px;
+ height: 403px;
+ background: rgba(2, 116, 179, 0.12);
+ border-radius: 50%;
+ filter: blur(250px);
+ opacity: 0.4;
+}
+
+.hero-section::before {
+ left: -300px;
+ bottom: -50px;
+}
+
+.hero-section::after {
+ right: -300px;
+ bottom: -50px;
+}
+.hero-bg-word {
+ position: absolute;
+ top: 50%;
+ left: 53%;
+ transform: translate(-50%, -50%) scale(0.95);
+ font-size: 524px;
+ font-weight: 400;
+ line-height: 1.8;
+ background: linear-gradient(180deg, #dbebf8 0%, #eff6fe 100%);
+ filter: drop-shadow(-8px 13px 6px rgba(164, 201, 247, 0.2));
+ -webkit-background-clip: text;
+ background-clip: text;
+ -webkit-text-fill-color: transparent;
+ color: transparent;
+ opacity: 1;
+ white-space: nowrap;
+ z-index: 1;
+ pointer-events: none;
+ clip-path: inset(0 100% 0 0);
+ animation-fill-mode: forwards;
+}
+@keyframes revealInova {
+ 0% {
+ clip-path: inset(0 100% 0 0);
+ transform: translate(-50%, -50%);
+ }
+
+ 100% {
+ clip-path: inset(0 0 0 0);
+ transform: translate(-50%, -50%);
+ }
+}
+.hero-section-center {
+ min-height: 100vh;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+.hero-header {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ background: transparent !important;
+ opacity: 0;
+ transform: translateY(-100px);
+ z-index: 100;
+}
+.hero-header.sticky {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+
+ background: #fff !important;
+ border-bottom: 1px solid #eee;
+
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.06);
+
+ animation: headerSticky 0.3s ease;
+}
+@keyframes headerSticky {
+ from {
+ opacity: 0;
+ transform: translateY(-20px);
+ }
+
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+.hero-content {
+ position: relative;
+ z-index: 50;
+ max-width: 483px;
+ padding: 0 20px;
+ margin: auto;
+ text-align: center;
+ opacity: 0;
+}
+.hero-content-first-line {
+ display: flex;
+ flex-wrap: nowrap;
+ margin-bottom: 16px;
+ justify-content: center;
+}
+.h-txt1 {
+ font-size: 46px;
+ line-height: 1.2;
+ font-weight: bold;
+ display: inline;
+}
+.h-txt2 {
+ font-size: 42px;
+ line-height: 1.2;
+ font-weight: bold;
+ margin-bottom: 16px;
+}
+.hero-content p {
+ font-size: 15px;
+ line-height: 1.8;
+ font-weight: 400;
+ margin-bottom: 16px;
+ color: var(--color-text);
+}
+.scroll-text-hero {
+ color: var(--color-primary);
+
+ width: 204px;
+ height: 50px;
+ border-radius: 6px;
+ display: flex;
+ align-items: flex-start;
+ justify-content: center;
+ overflow: hidden;
+ position: relative;
+ text-align: center;
+}
+.words-wrapper {
+ display: flex;
+ flex-direction: column;
+ gap: 6px;
+ transition: transform 600ms cubic-bezier(0.7, -0.4, 0.4, 1.4);
+}
+.word {
+ font-size: 42px;
+ font-weight: bold;
+ height: 47px;
+ display: flex;
+ align-items: center;
+ opacity: 0;
+ filter: blur(8px);
+ animation: dissolveErase 600ms ease forwards;
+}
+@keyframes dissolveErase {
+ from {
+ opacity: 0;
+ filter: blur(8px);
+ clip-path: inset(0 0 100% 0);
+ }
+
+ to {
+ opacity: 1;
+ filter: blur(0);
+ clip-path: inset(0 0 0 0);
+ }
+}
+.hero-actions {
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: center;
+ gap: 12px;
+}
+.hero-btn-primary {
+ display: inline-flex;
+ gap: 4px;
+ background-color: var(--color-primary);
+ color: #ffffff;
+ padding: 8px 16px 8px 12px;
+ border-radius: 10px;
+ justify-content: center;
+}
+.hero-btn-primary svg {
+ stroke: #ffffff;
+}
+.hero-btn-primary span,
+.hero-btn-secondary span {
+ font-size: 13px;
+ font-weight: 400;
+ line-height: 1.8;
+ display: flex;
+ align-items: center;
+}
+.hero-btn-secondary {
+ display: inline-flex;
+ gap: 4px;
+ background-color: #ffffff;
+ padding: 8px 16px 8px 12px;
+ border-radius: 10px;
+ justify-content: center;
+}
+.hero-back {
+ position: absolute;
+ right: 50%;
+ transform: translate(50%);
+}
+.piece {
+ position: absolute;
+ opacity: 0;
+ transform: translateY(250px) scale(0.8);
+ z-index: 20;
+ will-change: transform;
+}
+
+.piece-1 {
+ position: absolute;
+ width: 312px;
+ left: 167px;
+ top: 28%;
+}
+
+.piece-2 {
+ position: absolute;
+ width: 482px;
+ left: 208px;
+ bottom: -144px;
+}
+.piece-3 {
+ width: 904px;
+ left: 50%;
+ top: 46%;
+}
+
+.piece-4 {
+ position: absolute;
+ width: 472px;
+ right: -243px;
+ top: 36%;
+}
+
+.piece-5 {
+ position: absolute;
+ width: 290px;
+ right: 59px;
+ bottom: -92px;
+}
+
+@keyframes showWord {
+ from {
+ opacity: 0;
+ transform: translate(-50%, -50%) scale(0.7);
+ }
+ to {
+ opacity: 0.08;
+ transform: translate(-50%, -50%) scale(1);
+ }
+}
+
+@keyframes showHeader {
+ from {
+ opacity: 0;
+ transform: translateY(-100px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+
+@keyframes showContent {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1;
+ }
+}
+
+@keyframes risePiece {
+ from {
+ opacity: 0;
+ transform: translate(-50%, -50%) translateY(250px);
+ }
+ to {
+ opacity: 1;
+ transform: translate(-50%, -50%) translateY(0);
+ }
+}
+
+@keyframes floating {
+ 0% {
+ transform: translateY(0px) translate(-50%, -50%);
+ }
+ 50% {
+ transform: translateY(-18px) translate(-50%, -50%);
+ }
+ 100% {
+ transform: translateY(0px) translate(-50%, -50%);
+ }
+}
+
+/* ===========================جدیدترین نمونه کارها========================= */
+.related-section > .container {
+ display: flex;
+ flex-direction: column;
+ margin-top: 108px;
+}
+.related-header {
+ display: flex;
+ padding-bottom: 26px;
+ gap: 8px;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.related-title {
+ font-size: 24px;
+ font-weight: bold;
+ line-height: 1.5;
+}
+.related-button {
+ display: flex;
+ gap: 8px;
+}
+.related-under-box-bottom {
+ display: flex;
+ gap: 8px;
+}
+.related-under-box-bottom span {
+ font-size: 16px;
+ font-weight: 400;
+ line-height: 1.8;
+ text-decoration: underline;
+}
+.related-under-box {
+ display: flex;
+ gap: 16px;
+ justify-content: center;
+ margin-top: 24px;
+}
+.related-under-box-bottom span,
+.related-under-box-bottom svg {
+ color: var(--color-primary);
+ fill: var(--color-primary);
+}
+.related-under-p {
+ color: #414141;
+ font-size: 16px;
+ font-weight: 400;
+ line-height: 1.8;
+}
+.related-under-p span {
+ color: #000000;
+}
+.related-button span {
+ font-size: 15px;
+ font-weight: normal;
+ line-height: 1.6;
+}
+.related-button svg {
+ color: var(--color-primary);
+}
+.related-button span {
+ color: var(--color-primary);
+}
+
+.related-button:hover span,
+.related-button:hover svg {
+ color: #32b6ff;
+ fill: #32b6ff;
+}
+.related-button:hover span {
+ transform: translateX(4px);
+}
+.related-boxes {
+ display: grid;
+ grid-template-columns: repeat(2, minmax(350px, 592px));
+ gap: 16px;
+ justify-content: center;
+}
+.related-card {
+ width: 100%;
+ /* aspect-ratio: 4 / 3; */
+}
+.related-image {
+ width: 100%;
+ /* height: 292px; */
+ border-radius: 10px;
+ overflow: hidden;
+ position: relative;
+ object-fit: cover;
+}
+.reveal-top {
+ opacity: 0;
+ transform: translateY(-60px);
+ transition:
+ opacity 0.8s ease,
+ transform 0.8s ease;
+}
+
+.reveal-top.active {
+ opacity: 1;
+ transform: translateY(0);
+}
+.media-container {
+ width: 100%;
+ height: 100%;
+}
+.related-image img,
+.media-container video {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ display: block;
+ transition: transform 0.5s ease;
+}
+.related-content {
+ margin-top: 16px;
+}
+.related-content h3 {
+ font-size: 15px;
+ margin-bottom: 8px;
+}
+.related-content p {
+ font-size: 12px;
+}
+.down-txt {
+ display: none;
+ margin-top: 8px;
+}
+.down-txt span {
+ font-size: 15px;
+ font-weight: bold;
+}
+.overlay-layer {
+ position: absolute;
+ inset: 0;
+ background-image: url(/src/img/overlay.svg);
+ border-radius: 10px;
+ display: flex;
+ align-items: flex-end;
+ opacity: 0;
+ visibility: hidden;
+ transition:
+ opacity 0.35s ease,
+ visibility 0.35s ease;
+ z-index: 2;
+}
+.related-card:hover .overlay-layer {
+ opacity: 1;
+ visibility: visible;
+}
+.button-overlay {
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ z-index: 3;
+ padding: 12px 12px 16px 12px;
+}
+.button-overlay svg {
+ width: 24px;
+ height: 24px;
+ fill: white;
+ transition: 0.3s;
+}
+.date {
+ color: #ffffff;
+ font-size: 13px;
+ font-weight: normal;
+}
+.namepopup {
+ color: #ffffff;
+ font-size: 18px;
+ font-weight: bold;
+ line-height: 1.4;
+}
+.play-btn {
+ position: absolute;
+ top: 12px;
+ left: 12px;
+ border-radius: 50%;
+ border: none;
+ opacity: 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ z-index: 10;
+ width: 32px;
+ height: 32px;
+}
+.progress-ring {
+ position: absolute;
+ top: 13px;
+ left: 13px;
+ overflow: visible;
+ z-index: 20;
+ transform: rotate(180deg);
+}
+.progress-circle {
+ fill: transparent;
+ stroke: white;
+ stroke-width: 2;
+ stroke-linecap: round;
+}
+.play-icon {
+ width: 100%;
+ height: 100%;
+ fill: white;
+ position: absolute;
+ z-index: 3;
+ transition:
+ opacity 0.25s ease,
+ transform 0.25s ease;
+}
+.icon-play {
+ opacity: 1;
+}
+.icon-pause {
+ opacity: 0;
+}
+.related-card:hover .icon-pause {
+ opacity: 1;
+}
+.related-card:hover .icon-play {
+ opacity: 0;
+}
+.is-video .play-btn {
+ opacity: 1;
+}
+.is-image .play-btn {
+ display: none;
+}
+
+/* ==================================خدمات اینوا================================== */
+
+.service-section > .container-service-section {
+ padding: 48px 24px;
+ border-radius: 10px;
+ margin-top: 100px;
+}
+.service-box {
+ padding: 48px 24px;
+ background: #f0f4f8;
+ border-radius: 10px;
+}
+.container-service-section{
+ max-width: 1240px;
+ padding: 0 20px;
+ margin: 0 auto;
+}
+.service-header {
+ text-align: right;
+ margin-bottom: 24px;
+}
+
+.service-heading {
+ font-size: 22px;
+ font-weight: bold;
+ color: var(--color-title);
+ margin-bottom: 8px;
+}
+
+.service-tagline {
+ color: var(--color-body-text);
+ font-size: 15px;
+}
+
+.service-grid {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 24px;
+}
+
+.service-card {
+ background: #fff;
+ border-radius: 16px;
+ transition: 0.35s ease;
+ overflow: hidden;
+ min-height: 78px;
+}
+
+.service-content {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 9px;
+
+ padding: 12px;
+}
+
+.service-text {
+ flex: 1;
+}
+
+.service-title {
+ font-size: 16px;
+ font-weight: bold;
+ color: var(--color-title);
+ margin-bottom: 4px;
+}
+
+.service-description {
+ font-size: 14px;
+ color: var(--color-text);
+ line-height: 1.7;
+}
+
+.service-card:hover {
+ transform: translateY(-6px);
+}
+
+/* ======================= 300پروژه=================================== */
+.comments-section {
+ margin-top: 99px;
+}
+
+.comments-section-header {
+ display: flex;
+ flex-direction: column;
+ text-align: center;
+ margin-bottom: 24px;
+}
+
+.comments-section-title {
+ font-size: 24px;
+ font-weight: bold;
+ color: var(--color-title);
+ margin-bottom: 8px;
+}
+
+.comments-section-description {
+ font-size: 15px;
+ font-weight: 400;
+ color: var(--color-body-text);
+}
+
+.stats-container {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 24px;
+ margin-bottom: 48px;
+}
+
+.stat-box {
+ padding: 12px 16px;
+ border: 1px solid var(--color-pastel-main);
+ border-radius: 8px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 8px;
+}
+
+.stat-box p {
+ color: var(--color-body-text);
+ font-size: 16px;
+}
+
+.stat-number {
+ color: var(--color-primary);
+ font-size: 24px;
+ font-weight: bold;
+}
+
+/* موبایل */
+.mobile-stat {
+ display: none;
+ border: 1px solid var(--color-pastel-main);
+ border-radius: 8px;
+ padding: 12px 16px;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+ overflow: hidden;
+}
+
+.mobile-content {
+ display: flex;
+ gap: 8px;
+ opacity: 1;
+ align-items: center;
+ transform: translateY(0);
+ transition:
+ opacity 0.5s ease,
+ transform 0.5s ease;
+}
+
+.mobile-content.fade-out {
+ opacity: 0;
+ transform: translateY(10px);
+}
+
+.mobile-content.fade-in {
+ opacity: 1;
+ transform: translateY(0);
+}
+
+.mobile-stat span {
+ display: block;
+ color: var(--color-primary);
+ font-size: 24px;
+ font-weight: bold;
+}
+
+.mobile-stat p {
+ font-size: 16px;
+ font-weight: 400;
+ color: var(--color-text);
+}
+
+.logo-slider::before,
+.logo-slider::after {
+ content: '';
+ position: absolute;
+ top: 0;
+ width: 120px;
+ height: 100%;
+ z-index: 10;
+ pointer-events: none;
+}
+
+.logo-slider::before {
+ left: 0;
+ background: linear-gradient(to right, #fff 0%, rgba(255, 255, 255, 0) 100%);
+}
+.logo-slider::after {
+ right: 0;
+ background: linear-gradient(to left, #fff 0%, rgba(255, 255, 255, 0) 100%);
+}
+.logo-slider {
+ overflow: hidden;
+ width: 100%;
+ margin: 16px 0;
+ position: relative;
+ direction: ltr;
+}
+
+.slider-track {
+ display: flex;
+ gap: 8px;
+ width: max-content;
+ will-change: transform;
+}
+
+.slider-right .slider-track {
+ animation: logo-slide-left 40s linear infinite;
+}
+
+.slider-left .slider-track {
+ animation: logo-slide-right 40s linear infinite;
+}
+
+.logo-slider:hover .slider-track {
+ animation-play-state: paused;
+}
+
+@keyframes logo-slide-left {
+ from {
+ transform: translateX(0);
+ }
+ to {
+ transform: translateX(-50%);
+ }
+}
+
+@keyframes logo-slide-right {
+ from {
+ transform: translateX(-50%);
+ }
+ to {
+ transform: translateX(0);
+ }
+}
+
+.logo {
+ width: 124px;
+ height: 48px;
+ flex-shrink: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 10px;
+ background: #fafafa;
+}
+
+.logo img {
+ max-height: 28px;
+}
+
+.logo-slider:hover .logo img {
+ filter: grayscale(100%);
+ opacity: 0.4;
+}
+
+.logo:hover img {
+ filter: grayscale(0) !important;
+ opacity: 1 !important;
+}
+
+/* ===================op-section=================================== */
+
+.op-section {
+ margin: auto;
+
+ display: flex;
+ flex-direction: column;
+ gap: 24px;
+ box-sizing: border-box;
+}
+
+.op-section-title {
+ text-align: right;
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+}
+
+.op-section-title h2 {
+ font-size: 20px;
+ font-weight: 700;
+ color: #424242;
+ line-height: 30px;
+}
+.op-section-title p {
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 26px;
+ color: #424242;
+}
+.op-box {
+ display: flex;
+ gap: 20px;
+ overflow-x: auto;
+ scroll-behavior: smooth;
+ scroll-snap-type: x mandatory;
+ scrollbar-width: none;
+ -webkit-user-select: none;
+ user-select: none;
+ margin-top: 48px;
+}
+
+.op-box::-webkit-scrollbar {
+ height: 6px;
+}
+
+.op-box::-webkit-scrollbar-thumb {
+ background: #ccc;
+ border-radius: 10px;
+ display: none;
+}
+
+.op-card {
+ min-width: 358px;
+ height: 243px;
+ border-radius: 16px;
+ padding: 24px 16px;
+ position: relative;
+ border: #d1d5db solid 1px;
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ gap: 16px;
+ /* flex: 0 0 30.5%; */
+ scroll-snap-align: start;
+}
+
+.op-card::before {
+ content: '';
+ position: absolute;
+ inset: 0;
+ background-image: radial-gradient(rgba(40, 80, 120, 0.05) 1px, transparent 2px);
+ background-size: 20px 20px;
+ pointer-events: none;
+}
+.op-card::after {
+ content: '';
+ position: absolute;
+ width: 403px;
+ height: 403px;
+ bottom: 0px;
+ right: 20px;
+ border-radius: 50%;
+ background: rgba(2, 116, 179, 0.15);
+ filter: blur(80px);
+ pointer-events: none;
+}
+.op-card-text {
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 26px;
+ color: #424242;
+ height: 104px;
+ position: relative;
+}
+
+.op-stars {
+ display: flex;
+ gap: 5px;
+ align-items: center;
+ height: 20px;
+}
+
+.op-user {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.user-info {
+ display: flex;
+ gap: 8px;
+}
+
+.avatar {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ overflow: hidden;
+}
+
+.avatar img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+}
+
+.user-name {
+ font-weight: 700;
+ font-size: 14px;
+ color: #424242;
+ padding-left: 4px;
+}
+
+.user-txt {
+ font-size: 12px;
+ color: #6e7a86;
+ font-weight: 400;
+ line-height: 18px;
+}
+
+.op-pagination {
+ display: flex;
+ justify-content: center;
+ gap: 8px;
+ margin-top: 20px;
+}
+
+.op-dot {
+ width: 8px;
+ height: 8px;
+ border-radius: 50%;
+ background: #d1d5db;
+ margin: 0 4px;
+ cursor: pointer;
+ transition: 0.3s;
+}
+
+.op-dot.active {
+ width: 24px;
+ border-radius: 10px;
+ background: #0066ff;
+}
+
+/* ===================از ایده هایتان دست نکشید================================ */
+.consultation-section {
+ overflow: hidden;
+ text-align: center;
+ margin-top: 50px;
+}
+.consultation-container {
+ max-width: 1240px;
+ padding: 0 20px;
+ margin: 0 auto;
+}
+.consultation-box {
+ background-image: url(../images/CTA-pic.webp);
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: cover;
+ height: 303px;
+ border-radius: 10px;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+
+.consultation-title {
+ color: var(--color-primary);
+ font-size: 36px;
+ font-weight: bold;
+ margin-bottom: 8px;
+}
+.consultation-title-phone {
+ display: none;
+}
+.consultation-text {
+ color: var(--color-text);
+ font-size: 16px;
+ line-height: 1.8;
+ max-width: 554px;
+ margin-bottom: 24px;
+}
+
+.consultation-btn {
+ padding: 8px 16px;
+ background: #0274b3;
+ color: #fff;
+ text-decoration: none;
+ border-radius: 10px;
+ font-size: 15px;
+ font-weight: 400;
+}
+
+/* ================================درباره اینوا============================= */
+
+.about-section {
+ margin: 100px 0;
+}
+
+.about-content {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 92px;
+}
+
+.video-wrapper {
+ flex: 1;
+ position: relative;
+}
+
+.video-thumbnail {
+ position: relative;
+ cursor: pointer;
+ max-width: 555px;
+ width: 100%;
+}
+
+.thumb-img {
+ border-radius: 8px;
+ width: 100%;
+ display: block;
+ object-fit: cover;
+ height: auto;
+ aspect-ratio: 16 / 9;
+}
+
+.overlay {
+ position: absolute;
+ top: 12px;
+ bottom: 12px;
+ right: 8px;
+ left: 8px;
+ z-index: 2;
+ border-radius: 28px;
+ background: rgba(255, 255, 255, 0.05);
+ backdrop-filter: blur(53.86px);
+}
+
+.play-btn-about {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ z-index: 10;
+}
+.play-btn-about svg {
+ width: 95px;
+ height: 95px;
+}
+
+.arrow-btn-about {
+ position: absolute;
+ top: 37%;
+ right: 18%;
+ z-index: 10;
+}
+.arrow-btn-about svg {
+ width: 97px;
+ height: 120px;
+}
+.inova-about-logo {
+ position: absolute;
+ top: 3%;
+ right: 3%;
+ z-index: 10;
+}
+.video-title {
+ position: absolute;
+ bottom: 8px;
+ /* right: 12%;
+ left: 12%; */
+ color: #fff;
+ font-size: 32px;
+ font-weight: bold;
+ z-index: 2;
+ display: flex;
+ justify-content: center;
+ width: 100%;
+}
+
+.video-player {
+ display: none;
+ width: 100%;
+ border-radius: 24px;
+}
+
+.content-wrapper {
+ flex: 1;
+ text-align: right;
+ max-width: 555px;
+}
+
+.badge {
+ display: inline-block;
+ padding: 5px 10px;
+ border: 1px solid var(--color-primary);
+ color: var(--color-primary);
+ border-radius: 50px;
+ font-size: 13px;
+ margin-bottom: 16px;
+}
+
+.content-wrapper h2 {
+ font-size: 22px;
+ line-height: 1.7;
+ margin-bottom: 16px;
+ color: var(--color-title);
+}
+
+.content-wrapper p {
+ font-size: 15px;
+ line-height: 1.7;
+ color: var(--color-text);
+ margin-bottom: 24px;
+}
+
+.about-btn {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ gap: 4px;
+ text-decoration: none;
+ background: var(--color-primary);
+ color: #fff;
+ padding: 8px 16px 8px 12px;
+ border-radius: 10px;
+ font-size: 13px;
+}
+
+/* =========================================footer==================================== */
+
+footer > .container {
+ max-width: 1240px;
+ padding: 0 20px;
+ margin: 0 auto;
+}
+
+.footer {
+ margin-top: 183px;
+ background: #0d1222;
+ color: #9ea0a7;
+ position: relative;
+ padding-top: 141px;
+ z-index: 1000;
+}
+
+.footer-cta {
+ position: absolute;
+ bottom: 88%;
+ left: 120px;
+ right: 120px;
+}
+.footer-cta-content {
+ background: #0274b2;
+ border-radius: 10px;
+ padding: 37px 48px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ position: relative;
+}
+.footer-cta-txt {
+ display: flex;
+ flex-direction: column;
+}
+.footer-cta-txt h2 {
+ color: #ffffff;
+ margin-bottom: 8px;
+ font-size: 24px;
+ font-weight: bold;
+ line-height: 1.5;
+}
+.footer-cta-txt p {
+ color: #ffffff;
+ font-size: 15px;
+ font-weight: 400;
+ line-height: 1.7;
+}
+.footer-cta-btn {
+ background: #fff;
+ color: var(--color-primary);
+ text-decoration: none;
+ padding: 7px 16px 7px 12px;
+ border-radius: 10px;
+ display: flex;
+ gap: 8px;
+ z-index: 1;
+}
+.footer-cta-btn span {
+ font-size: 15px;
+ line-height: 1.7;
+ font-weight: 600;
+}
+.footer-cta-btn svg {
+ width: 24px;
+ height: 24px;
+}
+.footer-imga {
+ position: absolute;
+ bottom: 0;
+ left: 277px;
+}
+.footer-imgb {
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+.footer-imgc,
+.footer-imgd {
+ display: none;
+}
+.footer-container {
+ display: flex;
+ justify-content: center;
+ gap: 28px;
+ padding-bottom: 40px;
+}
+.footer-one {
+ max-width: 347px;
+ display: flex;
+ flex-direction: column;
+ gap: 16px;
+}
+.footer-icon-two,
+.footer-icon-three {
+ display: flex;
+ gap: 8px;
+}
+.footer-icon-two svg {
+ width: 20px;
+ height: 24px;
+ flex-shrink: 0;
+}
+.footer-column-two {
+ max-width: 304px;
+}
+.footer-column-three {
+ min-width: 161px;
+}
+.footer-column-four {
+ min-width: 252px;
+}
+.footer-icon-three svg {
+ width: 30px;
+ height: 24px;
+ flex-shrink: 0;
+}
+.ershad-logo {
+ width: 24px;
+ height: 24px;
+}
+.footer-column h3 {
+ margin-bottom: 24px;
+ color: #fff;
+ position: relative;
+ font-size: 18px;
+}
+.footer-column h3::after {
+ content: '';
+ position: absolute;
+ bottom: -8px;
+ right: 0;
+ width: 48px;
+ height: 1.5px;
+ background: #03aeff;
+}
+.footer-column ul {
+ list-style: none;
+}
+.footer-column ul li {
+ margin-bottom: 12px;
+ line-height: 1.8;
+ color: #9ea0a7;
+}
+.footer-column a {
+ text-decoration: none;
+ color: #9ea0a7;
+ font-size: 15px;
+ font-weight: 400;
+}
+.footer-column div {
+ font-size: 15px;
+ font-weight: 400;
+}
+.footer-column a:hover {
+ color: var(--color-primary);
+}
+.footer-logo {
+ width: 150px;
+ margin-bottom: 20px;
+}
+.footer-column-txt {
+ color: #9ea0a7;
+ font-size: 15px;
+ font-weight: 400;
+ line-height: 1.8;
+}
+.social-links {
+ display: flex;
+ gap: 8px;
+}
+.social-links a {
+ width: 32px;
+ height: 32px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ transition: 0.3s;
+}
+.social-links SVG {
+ width: 32px;
+ height: 32px;
+}
+
+.footer-bottom {
+ text-align: right;
+ padding: 16px 0 24px 0;
+ color: #9ea0a7;
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 1.8;
+}
+.footer-bottom span {
+ color: #cfd0d3;
+}
+.footer-bottom-line {
+ position: absolute;
+ bottom: 0;
+ margin-bottom: 62px;
+ width: 100%;
+ height: 1px;
+ background: #3d414e;
+}
diff --git a/src/assets/icons/portfolioGallery.svg b/src/assets/icons/portfolioGallery.svg
new file mode 100644
index 0000000..bbe4b26
--- /dev/null
+++ b/src/assets/icons/portfolioGallery.svg
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/icons/portfolioP.svg b/src/assets/icons/portfolioP.svg
new file mode 100644
index 0000000..b16633c
--- /dev/null
+++ b/src/assets/icons/portfolioP.svg
@@ -0,0 +1,1426 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/images/.gitkeep b/src/assets/images/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/src/assets/images/CTA-pic.webp b/src/assets/images/CTA-pic.webp
new file mode 100644
index 0000000..9092250
Binary files /dev/null and b/src/assets/images/CTA-pic.webp differ
diff --git a/src/assets/js/homepage.js b/src/assets/js/homepage.js
new file mode 100644
index 0000000..17c6320
--- /dev/null
+++ b/src/assets/js/homepage.js
@@ -0,0 +1,392 @@
+// ====================================هدر===========================
+const headerMenuBtn = document.querySelector('.header-menu-toggle');
+const headerMobileMenu = document.querySelector('.header-mobile-menu');
+
+headerMenuBtn.addEventListener('click', () => {
+ headerMobileMenu.classList.toggle('active');
+});
+
+const headerCloseBtn = document.querySelector('.header-mobile-close');
+
+headerCloseBtn.addEventListener('click', () => {
+ headerMobileMenu.classList.remove('active');
+});
+
+// ==========================هیروسکشن===================================
+
+window.addEventListener('load', () => {
+ const bgWord = document.querySelector('.hero-bg-word');
+ const header = document.querySelector('.hero-header');
+ const content = document.querySelector('.hero-content');
+ const pieces = document.querySelectorAll('.piece');
+
+ const heroSection = document.querySelector('.hero-section');
+
+ const observer = new IntersectionObserver(
+ ([entry]) => {
+ if (!entry.isIntersecting) {
+ header.classList.add('sticky');
+ } else {
+ header.classList.remove('sticky');
+ }
+ },
+ {
+ threshold: 0.05,
+ }
+ );
+
+ observer.observe(heroSection);
+ const inovaDuration = 2800;
+ const pauseAfterInova = 600;
+
+ const headerDuration = 800;
+ const contentDuration = 600;
+
+ const pauseAfterContent = 600;
+
+ const piecesDuration = 1000;
+
+ // STEP 1
+ setTimeout(() => {
+ bgWord.style.animation = 'revealInova 500ms ease-out 150ms forwards';
+ }, 0);
+
+ // STEP 2
+ setTimeout(() => {
+ header.style.animation = 'showHeader .8s ease forwards';
+
+ content.style.animation = 'showContent .6s ease forwards';
+ }, 1200);
+
+ // STEP 3
+ setTimeout(() => {
+ pieces.forEach((piece) => {
+ piece.style.animation = `risePiece 1200ms ease-in-out forwards`;
+ });
+ }, 1800);
+
+ // STEP 4
+ setTimeout(() => {
+ pieces.forEach((piece, index) => {
+ piece.style.animation += `,
+ floating ${4 + index}s ease-in-out 2000ms infinite`;
+ });
+ }, 2400);
+});
+
+const wrapper = document.querySelector('.words-wrapper');
+
+let index = 0;
+
+setInterval(() => {
+ index = (index + 1) % 3;
+
+ wrapper.style.transform = `translateY(-${index * 50}px)`;
+}, 1400);
+
+// =============== جدیدترین نمونه کارها ======================================
+function initRelatedSection(section) {
+ const cards = section.querySelectorAll('.related-card');
+
+ cards.forEach((card) => {
+ const container = card.querySelector('.media-container');
+
+ if (!container) return;
+ if (container.dataset.initialized === 'true') return;
+ container.dataset.initialized = 'true';
+
+ const progressCircle = card.querySelector('.progress-circle');
+ const type = container.dataset.type;
+ const src = container.dataset.src;
+
+ if (!type || !src) return;
+
+ card.classList.add(type === 'video' ? 'is-video' : 'is-image');
+ if (type === 'video') {
+ const ext = src.split('.').pop().toLowerCase();
+ const video = document.createElement('video');
+ video.muted = true;
+ video.playsInline = true;
+ video.preload = 'metadata';
+
+ const source = document.createElement('source');
+ source.src = src;
+ source.type = `video/${ext}`;
+
+ video.appendChild(source);
+ container.appendChild(video);
+
+ if (!progressCircle) return;
+ const radius = progressCircle.r.baseVal.value;
+ const circumference = 2 * Math.PI * radius;
+ progressCircle.style.strokeDasharray = circumference;
+ progressCircle.style.strokeDashoffset = circumference;
+
+ let stopTimeout;
+
+ card.addEventListener('mouseenter', async () => {
+ clearTimeout(stopTimeout);
+
+ try {
+ video.currentTime = 0;
+
+ await video.play();
+
+ progressCircle.style.transition = 'none';
+ progressCircle.style.strokeDashoffset = circumference;
+
+ requestAnimationFrame(() => {
+ progressCircle.style.transition = 'stroke-dashoffset 5s linear';
+
+ progressCircle.style.strokeDashoffset = 0;
+ });
+
+ stopTimeout = setTimeout(() => {
+ video.pause();
+ video.currentTime = 0;
+
+ progressCircle.style.transition = 'none';
+ progressCircle.style.strokeDashoffset = circumference;
+ }, 5000);
+ } catch (err) {
+ console.error(err);
+ }
+ });
+
+ card.addEventListener('mouseleave', () => {
+ clearTimeout(stopTimeout);
+
+ video.pause();
+ video.currentTime = 0;
+
+ progressCircle.style.transition = 'none';
+ progressCircle.style.strokeDashoffset = circumference;
+ });
+ card.addEventListener('click', () => {
+ if (type === 'video') {
+ openVideoPopup(src);
+ } else {
+ openImagePopup(src);
+ }
+ });
+ } else if (type === 'image') {
+ const img = document.createElement('img');
+ img.src = src;
+ img.alt = 'portfolio';
+
+ container.appendChild(img);
+ }
+ });
+}
+function initGalleryFilter(section) {
+ const tabs = section.querySelectorAll('.tabs button');
+ const cards = section.querySelectorAll('.related-card');
+
+ tabs.forEach((tab) => {
+ tab.addEventListener('click', () => {
+ tabs.forEach((btn) => {
+ btn.classList.remove('current');
+ });
+
+ tab.classList.add('current');
+
+ const text = tab.querySelector('.txt')?.textContent.trim();
+ cards.forEach((card) => {
+ const media = card.querySelector('.media-container');
+ if (!media) return;
+
+ const type = media.dataset.type;
+ if (text === 'همه') {
+ card.style.display = '';
+ } else if (text === 'ویدیو') {
+ if (type === 'video') {
+ card.style.display = '';
+ } else {
+ card.style.display = 'none';
+ }
+ } else if (text === 'تصاویر') {
+ if (type === 'image') {
+ card.style.display = '';
+ } else {
+ card.style.display = 'none';
+ }
+ }
+ });
+ });
+ });
+}
+
+document.querySelectorAll('.related-content p').forEach((item) => {
+ item.addEventListener('click', (e) => {
+ e.preventDefault();
+ e.stopPropagation();
+ });
+});
+document.addEventListener('DOMContentLoaded', () => {
+ document.querySelectorAll('[data-related-section]').forEach((section) => {
+ initRelatedSection(section);
+ initGalleryFilter(section);
+ });
+});
+// relatedCards.forEach((card, index) => {
+// card.addEventListener('click', (e) => {
+// if (e.target.closest('.play-btn')) return;
+
+// openPopupByIndex(index + 1);
+// });
+// });
+
+const revealElements = document.querySelectorAll('.reveal-top');
+
+const observer = new IntersectionObserver(
+ (entries) => {
+ entries.forEach((entry) => {
+ if (entry.isIntersecting) {
+ entry.target.classList.add('active');
+ observer.unobserve(entry.target);
+ }
+ });
+ },
+ {
+ threshold: 0.2,
+ }
+);
+
+revealElements.forEach((el) => observer.observe(el));
+// =========================================== 300پروژه ================================================
+
+document.addEventListener('DOMContentLoaded', () => {
+ const stats = [
+ { number: '1.5X', text: 'افزایش رشد/فروش' },
+ { number: '45+', text: 'تعداد مشتریان' },
+ { number: '91%', text: 'رضایت کارفرمایان' },
+ { number: '300+', text: 'پروژه موفق' },
+ ];
+
+ const numberEl = document.getElementById('mobileNumber');
+ const textEl = document.getElementById('mobileText');
+ const content = document.querySelector('.mobile-content');
+
+ let index = 0;
+
+ setInterval(() => {
+ content.classList.add('fade-out');
+
+ setTimeout(() => {
+ index = (index + 1) % stats.length;
+
+ numberEl.textContent = stats[index].number;
+ textEl.textContent = stats[index].text;
+
+ content.classList.remove('fade-out');
+ }, 500);
+ }, 3000);
+});
+
+const slider = document.querySelector('.op-box');
+const cards = document.querySelectorAll('.op-card');
+const pagination = document.querySelector('.op-pagination');
+
+let cardWidth;
+let cardsPerPage;
+let totalPages;
+
+function setupSlider() {
+ const style = window.getComputedStyle(slider);
+ const gap = parseInt(style.gap) || 0;
+
+ cardWidth = cards[0].offsetWidth + gap;
+
+ cardsPerPage = Math.round(slider.offsetWidth / cardWidth);
+ if (cardsPerPage < 1) cardsPerPage = 1;
+
+ totalPages = Math.ceil(cards.length / cardsPerPage);
+
+ pagination.innerHTML = '';
+
+ for (let i = 0; i < totalPages; i++) {
+ const dot = document.createElement('div');
+ dot.classList.add('op-dot');
+
+ if (i === 0) dot.classList.add('active');
+
+ dot.addEventListener('click', () => {
+ const scrollPosition = i * cardsPerPage * cardWidth;
+
+ slider.scrollTo({
+ left: scrollPosition,
+ behavior: 'smooth',
+ });
+ });
+
+ pagination.appendChild(dot);
+ }
+}
+
+setupSlider();
+
+window.addEventListener('resize', setupSlider);
+
+slider.addEventListener('scroll', () => {
+ const index = Math.round(Math.abs(slider.scrollLeft) / cardWidth);
+ const page = Math.floor(index / cardsPerPage);
+
+ const dots = document.querySelectorAll('.op-dot');
+
+ dots.forEach((d) => d.classList.remove('active'));
+
+ if (dots[page]) {
+ dots[page].classList.add('active');
+ }
+});
+let isDown = false;
+let startX;
+let scrollLeft;
+
+slider.addEventListener('mousedown', (e) => {
+ isDown = true;
+ slider.classList.add('active');
+ startX = e.pageX - slider.offsetLeft;
+ scrollLeft = slider.scrollLeft;
+
+ slider.style.cursor = 'grabbing';
+});
+
+slider.addEventListener('mouseleave', () => {
+ isDown = false;
+ slider.style.cursor = 'grab';
+});
+
+slider.addEventListener('mouseup', () => {
+ isDown = false;
+ slider.style.cursor = 'grab';
+});
+
+slider.addEventListener('mousemove', (e) => {
+ if (!isDown) return;
+ e.preventDefault();
+
+ const x = e.pageX - slider.offsetLeft;
+ const walk = (x - startX) * 2;
+ slider.scrollLeft = scrollLeft - walk;
+});
+slider.style.cursor = 'grab';
+
+// ========================================
+
+document.querySelectorAll('.slider-track').forEach((track) => {
+ const items = Array.from(track.children);
+ items.forEach((item) => track.appendChild(item.cloneNode(true)));
+});
+
+// ================================درباره اینوا=============================
+const thumbnail = document.getElementById('videoThumbnail');
+const video = document.getElementById('aboutVideo');
+
+thumbnail.addEventListener('click', () => {
+ thumbnail.style.display = 'none';
+
+ video.style.display = 'block';
+
+ video.play();
+});
diff --git a/src/components/.gitkeep b/src/components/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Black.woff b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Black.woff
new file mode 100644
index 0000000..8cdd87a
Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Black.woff differ
diff --git a/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Bold.woff b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Bold.woff
new file mode 100644
index 0000000..97c2ba6
Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Bold.woff differ
diff --git a/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-ExtraBlack.woff b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-ExtraBlack.woff
new file mode 100644
index 0000000..6ba65e5
Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-ExtraBlack.woff differ
diff --git a/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-ExtraBold.woff b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-ExtraBold.woff
new file mode 100644
index 0000000..ea45bdf
Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-ExtraBold.woff differ
diff --git a/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Light.woff b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Light.woff
new file mode 100644
index 0000000..c9895eb
Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Light.woff differ
diff --git a/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Regular.woff b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Regular.woff
new file mode 100644
index 0000000..1cedfdf
Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Regular.woff differ
diff --git a/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-SemiBold.woff b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-SemiBold.woff
new file mode 100644
index 0000000..2032742
Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-SemiBold.woff differ
diff --git a/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Thin.woff b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Thin.woff
new file mode 100644
index 0000000..44ac03a
Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Thin.woff differ
diff --git a/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Black.woff2 b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Black.woff2
new file mode 100644
index 0000000..4e9fe01
Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Black.woff2 differ
diff --git a/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Bold.woff2 b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Bold.woff2
new file mode 100644
index 0000000..19b4bb3
Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Bold.woff2 differ
diff --git a/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-ExtraBlack.woff2 b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-ExtraBlack.woff2
new file mode 100644
index 0000000..4791333
Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-ExtraBlack.woff2 differ
diff --git a/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-ExtraBold.woff2 b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-ExtraBold.woff2
new file mode 100644
index 0000000..c4f86ee
Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-ExtraBold.woff2 differ
diff --git a/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Light.woff2 b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Light.woff2
new file mode 100644
index 0000000..530dfcf
Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Light.woff2 differ
diff --git a/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Regular.woff2 b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Regular.woff2
new file mode 100644
index 0000000..fd16033
Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Regular.woff2 differ
diff --git a/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-SemiBold.woff2 b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-SemiBold.woff2
new file mode 100644
index 0000000..7d070d8
Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-SemiBold.woff2 differ
diff --git a/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Thin.woff2 b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Thin.woff2
new file mode 100644
index 0000000..19c44b9
Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Thin.woff2 differ
diff --git a/src/core/javascript/core.js b/src/core/javascript/core.js
new file mode 100644
index 0000000..e69de29
diff --git a/src/core/stylesheet/core.css b/src/core/stylesheet/core.css
new file mode 100644
index 0000000..3b94478
--- /dev/null
+++ b/src/core/stylesheet/core.css
@@ -0,0 +1,232 @@
+@font-face {
+ font-family: Yekan Bakh FaNum;
+ font-style: normal;
+ font-weight: 100;
+ src:
+ url('../fonts/yekanbakhpro/woff/YekanBakhFaNum-thin.woff') format('woff'),
+ url('../fonts/yekanbakhpro/woff2/YekanBakhFaNum-thin.woff2') format('woff2');
+}
+
+@font-face {
+ font-family: Yekan Bakh FaNum;
+ font-style: normal;
+ font-weight: 300;
+ src:
+ url('../fonts/yekanbakhpro/woff/YekanBakhFaNum-Light.woff') format('woff'),
+ url('../fonts/yekanbakhpro/woff2/YekanBakhFaNum-Light.woff2') format('woff2');
+}
+
+@font-face {
+ font-family: Yekan Bakh FaNum;
+ font-style: normal;
+ font-weight: normal;
+ src:
+ url('../fonts/yekanbakhpro/woff/YekanBakhFaNum-Regular.woff') format('woff'),
+ url('../fonts/yekanbakhpro/woff2/YekanBakhFaNum-Regular.woff2') format('woff2');
+}
+
+@font-face {
+ font-family: Yekan Bakh FaNum;
+ font-style: normal;
+ font-weight: 600;
+ src:
+ url('../fonts/yekanbakhpro/woff/YekanBakhFaNum-SemiBold.woff') format('woff'),
+ url('../fonts/yekanbakhpro/woff2/YekanBakhFaNum-SemiBold.woff2') format('woff2');
+}
+
+@font-face {
+ font-family: Yekan Bakh FaNum;
+ font-style: normal;
+ font-weight: bold;
+ src:
+ url('../fonts/yekanbakhpro/woff/YekanBakhFaNum-Bold.woff') format('woff'),
+ url('../fonts/yekanbakhpro/woff2/YekanBakhFaNum-Bold.woff2') format('woff2');
+}
+
+@font-face {
+ font-family: Yekan Bakh FaNum;
+ font-style: normal;
+ font-weight: 800;
+ src:
+ url('../fonts/yekanbakhpro/woff/Yekan Bakh FaNum-ExtraBold.woff') format('woff'),
+ url('../fonts/yekanbakhpro/woff2/Yekan Bakh FaNum-ExtraBold.woff2') format('woff2');
+}
+
+@font-face {
+ font-family: Yekan Bakh FaNum;
+ font-style: normal;
+ font-weight: 900;
+ src:
+ url('../fonts/yekanbakhpro/woff/Yekan Bakh FaNum-Black.woff') format('woff'),
+ url('../fonts/yekanbakhpro/woff2/Yekan Bakh FaNum-Black.woff2') format('woff2');
+}
+
+@font-face {
+ font-family: Yekan Bakh FaNum;
+ font-style: normal;
+ font-weight: 950;
+ src:
+ url('../fonts/yekanbakhpro/woff/Yekan Bakh FaNum-ExtraBlack.woff') format('woff'),
+ url('../fonts/yekanbakhpro/woff2/Yekan Bakh FaNum-ExtraBlack.woff2') format('woff2');
+}
+:root {
+ --color-primary: #0274b3;
+ --color-title: #1a1a2e;
+ --color-text: #505068;
+ --color-body-text: #6a6a6a;
+ --bg-gray: #f9f9f9;
+ --color-pastel-main: #c5d7ec;
+
+ --blue-50: #eaf7ff;
+ --blue-100: #c5eaff;
+ --blue-150: #a1ddff;
+ --blue-200: #7cd0ff;
+ --blue-300: #57c3ff;
+ --blue-400: #32b6ff;
+ --blue-500: #1796dc;
+ --blue-600: #0274b3; /* همان primary */
+ --blue-700: #00598a;
+ --blue-800: #003f61;
+
+ /* Breakpoints */
+ /* --breakpoint-sm: 576px;
+ --breakpoint-md: 768px;
+ --breakpoint-lg: 992px;
+ --breakpoint-xl: 1200px;
+ --breakpoint-xxl: 1400px; */
+}
+* {
+ margin: 0;
+ padding: 0;
+ direction: rtl;
+ box-sizing: border-box;
+ font-family: 'Yekan Bakh FaNum', sans-serif;
+ font-weight: normal;
+}
+html {
+ scroll-behavior: smooth;
+ /* scrollbar-gutter: stable; */
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-weight: bold;
+ line-height: 1.5;
+ color: var(--color-title);
+}
+h1 {
+ font-size: 36px;
+}
+h2 {
+ font-size: 24px;
+}
+h3 {
+ font-size: 22px;
+}
+h4 {
+ font-size: 20px;
+}
+h5 {
+ font-size: 15px;
+}
+p {
+ line-height: 1.75;
+ font-size: 15px;
+ color: var(--color-text);
+}
+a {
+ text-decoration: none;
+ line-height: 1.75;
+ color: var(--blue-500);
+}
+div,
+span,
+button,
+a,
+li {
+ line-height: inherit;
+}
+i {
+ font-style: normal;
+}
+/* برای Chrome، Edge و Safari */
+
+@media (max-width: 767px) {
+ h1 {
+ font-size: 24px;
+ }
+ h2 {
+ font-size: 22px;
+ }
+ h3 {
+ font-size: 18px;
+ }
+ h4 {
+ font-size: 16px;
+ }
+ h5 {
+ font-size: 14px;
+ }
+}
+
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+ *::-webkit-scrollbar {
+ width: 10px;
+ }
+
+ *::-webkit-scrollbar-track {
+ background: #fff;
+ }
+
+ *::-webkit-scrollbar-thumb {
+ background-color: var(--color-primary);
+ border-radius: 10px;
+ border: 3px solid #fff;
+ }
+}
+
+/* برای Firefox */
+@-moz-document url-prefix() {
+ * {
+ scrollbar-width: thin;
+ scrollbar-color: var(--color-primary) #fff;
+ }
+}
+
+::selection {
+ background: var(--color-primary);
+ color: #fff;
+}
+
+/* Hide number arrows */
+
+/* Chrome, Safari, Edge, Opera */
+input::-webkit-outer-spin-button,
+input::-webkit-inner-spin-button {
+ -webkit-appearance: none;
+ margin: 0;
+}
+
+/* Firefox */
+input[type='number'] {
+ -moz-appearance: textfield;
+}
+button {
+ border: none;
+ outline: none;
+ background: none;
+ cursor: pointer;
+}
+/* Hide scrollbar for Chrome, Safari and Opera */
+.no-scrollbar::-webkit-scrollbar {
+ display: none;
+}
+
+/* Hide scrollbar for IE, Edge and Firefox */
+.no-scrollbar {
+ -ms-overflow-style: none; /* IE and Edge */
+ scrollbar-width: none; /* Firefox */
+}
diff --git a/src/templates/.gitkeep b/src/templates/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/vite.config.js b/vite.config.js
new file mode 100644
index 0000000..a3a0486
--- /dev/null
+++ b/vite.config.js
@@ -0,0 +1,28 @@
+import { defineConfig } from 'vite';
+import { resolve } from 'path';
+
+export default defineConfig({
+ resolve: {
+ alias: {
+ '@': resolve(__dirname, 'src'), // @ → src/
+ '@core': resolve(__dirname, 'src/core'),
+ '@components': resolve(__dirname, 'src/components'),
+ },
+ },
+
+ build: {
+ rollupOptions: {
+ input: {
+ main: resolve(__dirname, 'index.html'),
+ footer: resolve(__dirname, 'homepage.html'),
+ },
+ },
+ manifest: true,
+ cssCodeSplit: true,
+ },
+
+ server: {
+ open: true,
+ port: 5173,
+ },
+});
به جمع بیش از 300 پروژه موفق بپیوندید
+ ++ کیفیت ما از زبان کارفرمایان شرکتهای بزرگ و کوچک موفق بشنوید +
+افزایش رشد/فروش
+تعداد مشتریان
+رضایت کارفرمایان
+پروژه موفق
+افزایش رشد/فروش
++ تخصص در طراحی معماری نرمافزارهای مقیاسپذیر و توسعه سیستمهای پردازش دادههای + بزرگ. +
+ +علیرضا رضایی
+ مهندس ارشد نرمافزار در کافهبازار ++ تخصص در طراحی معماری نرمافزارهای مقیاسپذیر و توسعه سیستمهای پردازش دادههای + بزرگ. +
+ +علیرضا رضایی
+ مهندس ارشد نرمافزار در کافهبازار ++ تخصص در طراحی معماری نرمافزارهای مقیاسپذیر و توسعه سیستمهای پردازش دادههای + بزرگ. +
+ +علیرضا رضایی
+ مهندس ارشد نرمافزار در کافهبازار ++ تخصص در طراحی معماری نرمافزارهای مقیاسپذیر و توسعه سیستمهای پردازش دادههای + بزرگ. +
+ +علیرضا رضایی
+ مهندس ارشد نرمافزار در کافهبازار ++ تخصص در طراحی معماری نرمافزارهای مقیاسپذیر و توسعه سیستمهای پردازش دادههای + بزرگ. +
+ +علیرضا رضایی
+ مهندس ارشد نرمافزار در کافهبازار ++ تخصص در طراحی معماری نرمافزارهای مقیاسپذیر و توسعه سیستمهای پردازش دادههای + بزرگ. +
+ +علیرضا رضایی
+ مهندس ارشد نرمافزار در کافهبازار ++ تخصص در طراحی معماری نرمافزارهای مقیاسپذیر و توسعه سیستمهای پردازش دادههای + بزرگ. +
+ +علیرضا رضایی
+ مهندس ارشد نرمافزار در کافهبازار ++ تخصص در طراحی معماری نرمافزارهای مقیاسپذیر و توسعه سیستمهای پردازش دادههای + بزرگ. +
+ +علیرضا رضایی
+ مهندس ارشد نرمافزار در کافهبازار +