├── .gitignore
├── demo
├── darkDemo.webp
└── lightDemo.webp
├── assets
├── images
│ ├── PHP.png
│ ├── RBTS.png
│ ├── Sass.png
│ ├── Vite.png
│ ├── css3.png
│ ├── git.png
│ ├── npm.png
│ ├── Docker.png
│ ├── Figma.png
│ ├── Linux.png
│ ├── Prompt.png
│ ├── Python.png
│ ├── favico.png
│ ├── html5.png
│ ├── pet-5.webp
│ ├── react.png
│ ├── Arduino.png
│ ├── Ducky-1.webp
│ ├── bootstrap.png
│ ├── caraie.webp
│ ├── command.png
│ ├── jammer-4.webp
│ ├── photoshop.png
│ ├── tailwind.png
│ ├── vs-code.png
│ ├── BTCPrice-2.webp
│ ├── duckyScript.png
│ ├── javascript.png
│ ├── about-banner.webp
│ ├── hero-banner.webp
│ ├── hero-banner-md.webp
│ ├── hero-banner-sm.webp
│ ├── passwordManager-3.webp
│ ├── stats-card_icon-1.png
│ ├── stats-card_icon-2.png
│ └── stats-card_icon-3.png
├── font
│ └── Vazir-Regular.ttf
├── js
│ └── script.js
└── css
│ └── style.css
├── cv
├── assets
│ ├── images
│ │ ├── profile.png
│ │ ├── logo-en.svg
│ │ ├── logo.svg
│ │ ├── logo-text-en.svg
│ │ └── logo-text.svg
│ ├── fonts
│ │ ├── Vazirmatn-RD-Bold.woff2
│ │ ├── Vazirmatn-RD-Medium.woff2
│ │ ├── Vazirmatn-RD-Regular.woff2
│ │ ├── Vazirmatn-RD[wght].woff2
│ │ └── Vazirmatn-RD-SemiBold.woff2
│ ├── js
│ │ ├── main.min.js
│ │ └── main.js
│ └── css
│ │ └── main.min.css
├── index.html
└── en
│ └── index.html
├── sitemap.xml
├── LICENSE
├── README.md
├── Languages.json
├── gallery.html
├── galleryEN.html
├── galleryGER.html
└── index.html
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 |
--------------------------------------------------------------------------------
/demo/darkDemo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/demo/darkDemo.webp
--------------------------------------------------------------------------------
/demo/lightDemo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/demo/lightDemo.webp
--------------------------------------------------------------------------------
/assets/images/PHP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/PHP.png
--------------------------------------------------------------------------------
/assets/images/RBTS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/RBTS.png
--------------------------------------------------------------------------------
/assets/images/Sass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/Sass.png
--------------------------------------------------------------------------------
/assets/images/Vite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/Vite.png
--------------------------------------------------------------------------------
/assets/images/css3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/css3.png
--------------------------------------------------------------------------------
/assets/images/git.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/git.png
--------------------------------------------------------------------------------
/assets/images/npm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/npm.png
--------------------------------------------------------------------------------
/assets/images/Docker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/Docker.png
--------------------------------------------------------------------------------
/assets/images/Figma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/Figma.png
--------------------------------------------------------------------------------
/assets/images/Linux.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/Linux.png
--------------------------------------------------------------------------------
/assets/images/Prompt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/Prompt.png
--------------------------------------------------------------------------------
/assets/images/Python.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/Python.png
--------------------------------------------------------------------------------
/assets/images/favico.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/favico.png
--------------------------------------------------------------------------------
/assets/images/html5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/html5.png
--------------------------------------------------------------------------------
/assets/images/pet-5.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/pet-5.webp
--------------------------------------------------------------------------------
/assets/images/react.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/react.png
--------------------------------------------------------------------------------
/assets/images/Arduino.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/Arduino.png
--------------------------------------------------------------------------------
/assets/images/Ducky-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/Ducky-1.webp
--------------------------------------------------------------------------------
/assets/images/bootstrap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/bootstrap.png
--------------------------------------------------------------------------------
/assets/images/caraie.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/caraie.webp
--------------------------------------------------------------------------------
/assets/images/command.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/command.png
--------------------------------------------------------------------------------
/assets/images/jammer-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/jammer-4.webp
--------------------------------------------------------------------------------
/assets/images/photoshop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/photoshop.png
--------------------------------------------------------------------------------
/assets/images/tailwind.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/tailwind.png
--------------------------------------------------------------------------------
/assets/images/vs-code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/vs-code.png
--------------------------------------------------------------------------------
/assets/font/Vazir-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/font/Vazir-Regular.ttf
--------------------------------------------------------------------------------
/assets/images/BTCPrice-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/BTCPrice-2.webp
--------------------------------------------------------------------------------
/assets/images/duckyScript.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/duckyScript.png
--------------------------------------------------------------------------------
/assets/images/javascript.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/javascript.png
--------------------------------------------------------------------------------
/cv/assets/images/profile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/cv/assets/images/profile.png
--------------------------------------------------------------------------------
/assets/images/about-banner.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/about-banner.webp
--------------------------------------------------------------------------------
/assets/images/hero-banner.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/hero-banner.webp
--------------------------------------------------------------------------------
/assets/images/hero-banner-md.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/hero-banner-md.webp
--------------------------------------------------------------------------------
/assets/images/hero-banner-sm.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/hero-banner-sm.webp
--------------------------------------------------------------------------------
/assets/images/passwordManager-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/passwordManager-3.webp
--------------------------------------------------------------------------------
/assets/images/stats-card_icon-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/stats-card_icon-1.png
--------------------------------------------------------------------------------
/assets/images/stats-card_icon-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/stats-card_icon-2.png
--------------------------------------------------------------------------------
/assets/images/stats-card_icon-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/assets/images/stats-card_icon-3.png
--------------------------------------------------------------------------------
/cv/assets/fonts/Vazirmatn-RD-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/cv/assets/fonts/Vazirmatn-RD-Bold.woff2
--------------------------------------------------------------------------------
/cv/assets/fonts/Vazirmatn-RD-Medium.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/cv/assets/fonts/Vazirmatn-RD-Medium.woff2
--------------------------------------------------------------------------------
/cv/assets/fonts/Vazirmatn-RD-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/cv/assets/fonts/Vazirmatn-RD-Regular.woff2
--------------------------------------------------------------------------------
/cv/assets/fonts/Vazirmatn-RD[wght].woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/cv/assets/fonts/Vazirmatn-RD[wght].woff2
--------------------------------------------------------------------------------
/cv/assets/fonts/Vazirmatn-RD-SemiBold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zephinax/portfolio/HEAD/cv/assets/fonts/Vazirmatn-RD-SemiBold.woff2
--------------------------------------------------------------------------------
/sitemap.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | https://zephinax.ir/
5 | 2023-05-01
6 | weekly
7 | 1.0
8 |
9 |
10 | https://zephinax.ir/#about
11 | 2023-05-01
12 | monthly
13 | 0.8
14 |
15 |
16 | https://zephinax.ir/#skills
17 | 2023-05-01
18 | monthly
19 | 0.8
20 |
21 |
22 | https://zephinax.ir/gallery
23 | 2023-05-01
24 | weekly
25 | 0.9
26 |
27 |
28 | https://zephinax.ir/#contact
29 | 2023-05-01
30 | monthly
31 | 0.7
32 |
33 |
34 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2025 Zephinax
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/cv/assets/images/logo-en.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
10 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/cv/assets/images/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | [](https://forthebadge.com)
12 | [](https://forthebadge.com)
13 | [](https://forthebadge.com)
14 |
15 |
16 |
17 |
23 |
24 | ## How to use?
25 |
26 | 1 - Fork this repo to modify and make changes of your own.
27 |
28 | 2 - To active form, go to [Web3forms](https://web3forms.com) and click on [ Create Your Access Key ]
29 | and enter your email to generate your access key, then search for [ hidden ] in index.html and change vaule with your access key
30 |
31 | 3 - You can use github pages to host this website
32 |
33 | ## Features
34 |
35 | - 📱 Fully Responsive
36 |
37 | - 🖇️ Working Contact Form
38 |
39 | - 📖 Multi-Page Layout
40 |
41 | - 🔅 Dark & Light Mode
42 |
43 | - 💄 Fully Customizable
44 |
45 | Give a ⭐ if you like this project!
46 |
47 | ## Authors
48 |
49 | - [@Zephinax](https://github.com/Zephinax)
50 |
51 | Please give me proper credit by linking back to [Me](https://github.com/Zephinax), Thanks!
52 |
--------------------------------------------------------------------------------
/cv/assets/js/main.min.js:
--------------------------------------------------------------------------------
1 | document.addEventListener('DOMContentLoaded', function () {
2 | var e, t, o, l, n, c, d, a, s;
3 | function r() {
4 | document.documentElement.classList.contains('dark')
5 | ? (document.documentElement.classList.remove('dark'),
6 | (localStorage.theme = 'light'),
7 | (t.style.display = 'block'),
8 | (o.style.display = 'none'))
9 | : (document.documentElement.classList.add('dark'),
10 | (localStorage.theme = 'dark'),
11 | (o.style.display = 'block'),
12 | (t.style.display = 'none'));
13 | }
14 | (e = document.querySelector('#toggleDarkMode')),
15 | (t = document.querySelector('#moonIcon')),
16 | (o = document.querySelector('#sunIcon')),
17 | (l = document.querySelector('#mobileMenu')),
18 | (toggleMenuBtn = document.querySelector('#toggleMenu')),
19 | (n = document.querySelector('#closeIcon')),
20 | (c = document.querySelector('#menuIcon')),
21 | (d = document.querySelectorAll('.btn-modal')),
22 | (a = document.querySelectorAll('.modal')),
23 | (s = document.querySelectorAll('.btn-close')),
24 | 'dark' === localStorage.theme
25 | ? (o.style.display = 'block')
26 | : (t.style.display = 'block'),
27 | e.addEventListener('click', r),
28 | toggleMenuBtn.addEventListener('click', function () {
29 | 'false' == toggleMenuBtn.dataset.toggle
30 | ? ((toggleMenuBtn.dataset.toggle = !0),
31 | (l.style.display = 'block'),
32 | (c.style.display = 'none'),
33 | (n.style.display = 'flex'))
34 | : ((toggleMenuBtn.dataset.toggle = !1),
35 | (l.style.display = 'none'),
36 | (c.style.display = 'block'),
37 | (n.style.display = 'none'));
38 | }),
39 | window.addEventListener('keydown', function (e) {
40 | if ('n' === e.key.toLowerCase()) r();
41 | });
42 | for (var i = 0; i < d.length; i++)
43 | d[i].onclick = function (e) {
44 | e.preventDefault(),
45 | (document.querySelector(
46 | e.target.getAttribute('data-href')
47 | ).style.display = 'block');
48 | };
49 | for (i = 0; i < s.length; i++)
50 | s[i].onclick = function () {
51 | for (var e in a) void 0 !== a[e].style && (a[e].style.display = 'none');
52 | };
53 | window.onclick = function (e) {
54 | if (e.target.classList.contains('modal-area'))
55 | for (var t in a) void 0 !== a[t].style && (a[t].style.display = 'none');
56 | };
57 | });
58 |
--------------------------------------------------------------------------------
/cv/assets/images/logo-text-en.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
10 |
12 |
17 |
22 |
27 |
32 |
37 |
38 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/cv/assets/js/main.js:
--------------------------------------------------------------------------------
1 | document.addEventListener('DOMContentLoaded', function () {
2 | // Variables
3 | var toggleDarkModeBtn,
4 | moonIcon,
5 | sunIcon,
6 | mobileMenu,
7 | closeIcon,
8 | menuIcon,
9 | btn,
10 | modals,
11 | closeBtns;
12 |
13 | toggleDarkModeBtn = document.querySelector('#toggleDarkMode');
14 | moonIcon = document.querySelector('#moonIcon');
15 | sunIcon = document.querySelector('#sunIcon');
16 | mobileMenu = document.querySelector('#mobileMenu');
17 | toggleMenuBtn = document.querySelector('#toggleMenu');
18 | closeIcon = document.querySelector('#closeIcon');
19 | menuIcon = document.querySelector('#menuIcon');
20 | btn = document.querySelectorAll('.btn-modal');
21 | modals = document.querySelectorAll('.modal');
22 | closeBtns = document.querySelectorAll('.btn-close');
23 |
24 | // Methods
25 | function toggleDarkMode() {
26 | if (document.documentElement.classList.contains('dark')) {
27 | document.documentElement.classList.remove('dark');
28 | localStorage.theme = 'light';
29 | moonIcon.style.display = 'block';
30 | sunIcon.style.display = 'none';
31 | } else {
32 | document.documentElement.classList.add('dark');
33 | localStorage.theme = 'dark';
34 | sunIcon.style.display = 'block';
35 | moonIcon.style.display = 'none';
36 | }
37 | }
38 |
39 | function toggleMenu() {
40 | if (toggleMenuBtn.dataset.toggle == 'false') {
41 | toggleMenuBtn.dataset.toggle = true;
42 | mobileMenu.style.display = 'block';
43 | menuIcon.style.display = 'none';
44 | closeIcon.style.display = 'flex';
45 | } else {
46 | toggleMenuBtn.dataset.toggle = false;
47 | mobileMenu.style.display = 'none';
48 | menuIcon.style.display = 'block';
49 | closeIcon.style.display = 'none';
50 | }
51 | }
52 |
53 | function keyShortcuts(e) {
54 | switch (e.key.toLowerCase()) {
55 | case 'n':
56 | toggleDarkMode();
57 | break;
58 | default:
59 | break;
60 | }
61 | }
62 |
63 | // Initializes & Event Listerner
64 | if (localStorage.theme === 'dark') {
65 | sunIcon.style.display = 'block';
66 | } else {
67 | moonIcon.style.display = 'block';
68 | }
69 |
70 | toggleDarkModeBtn.addEventListener('click', toggleDarkMode);
71 | toggleMenuBtn.addEventListener('click', toggleMenu);
72 | window.addEventListener('keydown', keyShortcuts);
73 |
74 | for (var i = 0; i < btn.length; i++) {
75 | btn[i].onclick = function (e) {
76 | e.preventDefault();
77 | var modal = document.querySelector(e.target.getAttribute('data-href'));
78 | modal.style.display = 'block';
79 | };
80 | }
81 |
82 | for (var i = 0; i < closeBtns.length; i++) {
83 | closeBtns[i].onclick = function () {
84 | for (var index in modals) {
85 | if (typeof modals[index].style !== 'undefined')
86 | modals[index].style.display = 'none';
87 | }
88 | };
89 | }
90 |
91 | window.onclick = function (e) {
92 | if (e.target.classList.contains('modal-area')) {
93 | for (var index in modals) {
94 | if (typeof modals[index].style !== 'undefined')
95 | modals[index].style.display = 'none';
96 | }
97 | }
98 | };
99 | });
100 |
--------------------------------------------------------------------------------
/cv/assets/images/logo-text.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Languages.json:
--------------------------------------------------------------------------------
1 | {
2 | "Fa": {
3 | "home": "خانه",
4 | "aboutMe": "درباره من",
5 | "skills": "مهارت ها",
6 | "tools": "ابزار ها",
7 | "gallery": "گالری پروژه ها",
8 | "contact": "ارتباط با من",
9 | "homeContent": "جایی که داستان من شروع شد",
10 | "aboutTitle": "با من بیشتر آشنا شو",
11 | "aboutContent": "امیرعلی هستم. یک گیک، وب دولوپر، علاقه مند به لینوکس و نرم افزار آزاد، برنامه نویس سخت افزار و نرم افزار و عاشق یادگیری و به اشتراک گذاشتن چیزها. همچنین فعال در حوزه [ دیزاین UI & UX ،هوش مصنوعی ،امنیت، اینترنت اشیاء، گجت ها، موبایل، کامپیوتر و لپتاپ ] و یکی از اعضای تیم زیکادو . تقریبا مسلط به زبان انگلیسی. از کار های چالش برانگیز مثل نصب و توسعه کاستوم رام برای گوشی های اندرویدی و نصب هکینتاش خوشم میاد و سعی میکنم چیز های زیادی از طریق حل مشکلات و چالش های این کار ها یاد بگیرم.",
12 | "downloadCv": "دانلود رزومه",
13 | "skillsTitle": "مهارت های من شامل چه چیزایی میشه؟",
14 | "skillsSubTitle": "مهارت های من",
15 | "skillsContent": "برای اینکه بتونم ایده های توی ذهنم رو به واقعیت تبدیل کنم باید چیزهای مختلف زیادی یاد میگرفتم که هنوزم تموم نشده و ادامه داره :)",
16 | "contactTitle": "میخوای باهام صحبت کنی؟",
17 | "contactContent": "اگه فکر میکنی پروژه ای تو ذهنت داری که ممکنه ازش خوشم بیاد یا باهام کاری داشتی فقط کافیه فرمو پر کنی تا باهام صحبت کنی یا میتونی تو یکی از شبکه های اجتماعی پیام بدی.",
18 | "email": "ایمیل",
19 | "linkedin": "لینکدین",
20 | "instagram": "اینستاگرام",
21 | "telegram": "تلگرام",
22 | "github": "گیت هاب",
23 | "nameLastName": "نام و نام خانوادگی",
24 | "nameLastNamePlaceHolder": "فلانی فلانیان",
25 | "emailPlaceHolder": "felani@mail.com",
26 | "phoneNumber": "شماره تماس",
27 | "phoneNumberPlaceHolder": "09123456789",
28 | "message": "متن پیام",
29 | "messagePlaceHolder": "هنوز که چیزی ننوشتی...",
30 | "sendMsg": "ارسال پیام",
31 | "footerContent": "با کلیک بر روی این متن میتونید در توسعه این وبسایت مشارکت کنید"
32 | },
33 | "En": {
34 | "home": "Home",
35 | "aboutMe": "About Me",
36 | "skills": "Skills",
37 | "tools": "Tools",
38 | "gallery": "Projects Gallery",
39 | "contact": "Contact Me",
40 | "homeContent": "Where my story began",
41 | "aboutTitle": "Get to know me more",
42 | "aboutContent": "I am Amirali, a geek, web developer, interested in Linux and open-source software, hardware and software programmer, passionate about learning and sharing things. I am also active in the field of [UI & UX design, artificial intelligence, security, Internet of Things, gadgets, mobile, computer and laptop] and a member of the XeCudo team. Almost fluent in English. I enjoy challenging tasks like installing and developing coustom roms for Android phones and installing Hackintosh , and I try to learn a lot through solving problems and challenges of these tasks.",
43 | "downloadCv": "Download Cv",
44 |
45 | "skillsTitle": "What skills do I have?",
46 | "skillsSubTitle": "My skills",
47 | "skillsContent": "To bring the ideas in my mind to reality, I had to learn many different things that are still ongoing and continuing :)",
48 | "contactTitle": "Do you want to talk to me?",
49 | "contactContent": "If you think you have a project in mind that I might like or if you have work with me, just fill out the form to talk to me or you can message me on one of the social networks.",
50 | "email": "E-mail",
51 | "linkedin": "LinkedIn",
52 | "instagram": "Instagram",
53 | "telegram": "Telegram",
54 | "github": "GitHub",
55 | "nameLastName": "Name and Last Name",
56 | "nameLastNamePlaceHolder": "John Doe",
57 | "emailPlaceHolder": "johndoe@mail.com",
58 | "phoneNumber": "Phone Number",
59 | "phoneNumberPlaceHolder": "09123456789",
60 | "message": "Message",
61 | "messagePlaceHolder": "You haven't written anything yet...",
62 | "sendMsg": "Send message",
63 | "footerContent": "By clicking on this text, you can participate in the development of this website"
64 | },
65 | "Ger": {
66 | "home": "Zuhause",
67 | "aboutMe": "Über mich",
68 | "skills": "Fähigkeiten",
69 | "tools": "Werkzeug",
70 | "gallery": "Projektgalerie",
71 | "contact": "Kontaktiere mich",
72 | "homeContent": "Wo meine Geschichte begann",
73 | "aboutTitle": "Lerne mich besser kennen",
74 | "aboutContent": "Ich bin Amirali, ein Geek, Webentwickler, interessiert an Linux und Open-Source-Software, Hardware- und Softwareprogrammierer, leidenschaftlich daran, Dinge zu lernen und zu teilen. Ich bin auch aktiv auf dem Gebiet [UI & UX Design, künstliche Intelligenz, Sicherheit, Internet der Dinge, Gadgets, Mobilgeräte, Computer und Laptop] und ein Mitglied des Xecudo-Teams . Fast fließend in Englisch. Ich genieße herausfordernde Aufgaben wie das Installieren und Entwickeln von benutzerdefinierten ROMs für Android-Telefone und das Installieren von Hackintosh , und ich versuche viel zu lernen, indem ich Probleme und Herausforderungen dieser Aufgaben löse.",
75 | "downloadCv": "Lebenslauf herunterladen",
76 | "skillsTitle": "Welche Fähigkeiten habe ich?",
77 | "skillsSubTitle": "meine Fähigkeiten",
78 | "skillsContent": "Um die Ideen in meinem Kopf in die Realität umzusetzen, musste ich viele verschiedene Dinge lernen, die noch im Gange sind und weitergehen :)",
79 | "contactTitle": "Möchtest du mit mir sprechen?",
80 | "contactContent": "Wenn du denkst, dass du ein Projekt im Kopf hast, das mir gefallen könnte, oder wenn du mit mir arbeiten möchtest, fülle einfach das Formular aus, um mit mir zu sprechen, oder du kannst mir in einem der sozialen Netzwerke eine Nachricht senden.",
81 | "email": "E-Mail",
82 | "linkedin": "LinkedIn",
83 | "instagram": "Instagram",
84 | "telegram": "Telegram",
85 | "github": "GitHub",
86 | "nameLastName": "Vor- und Nachname",
87 | "nameLastNamePlaceHolder": "Max Mustermann",
88 | "emailPlaceHolder": "max.mustermann@mail.de",
89 | "phoneNumber": "Telefonnummer",
90 | "phoneNumberPlaceHolder": "09123456789",
91 | "message": "Nachricht",
92 | "messagePlaceHolder": "Du hast noch nichts geschrieben...",
93 | "sendMsg": "Nachricht senden",
94 | "footerContent": "Durch Klicken auf diesen Text können Sie sich an der Entwicklung dieser Website beteiligen"
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/gallery.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Zephinax | Gallery
8 |
9 |
13 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
25 |
26 |
27 |
28 |
29 |
30 |
103 |
104 |
232 |
233 |
234 |
235 |
250 |
251 |
254 |
257 | Need javascript to run
258 |
259 |
260 |
--------------------------------------------------------------------------------
/galleryEN.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Zephinax | Gallery
8 |
9 |
10 |
14 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
26 |
27 |
28 |
29 |
34 |
35 |
36 |
37 |
38 |
112 |
244 |
245 |
246 |
247 |
263 |
264 |
267 |
270 | Need javascript to run
271 |
272 |
273 |
--------------------------------------------------------------------------------
/galleryGER.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Zephinax | Gallery
8 |
9 |
10 |
14 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
26 |
27 |
28 |
29 |
34 |
35 |
36 |
37 |
38 |
112 |
244 |
245 |
246 |
247 |
263 |
264 |
267 |
270 | Need javascript to run
271 |
272 |
273 |
--------------------------------------------------------------------------------
/assets/js/script.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const fetchData = async () => {
4 | try {
5 | const response = await fetch('Languages.json');
6 | const data = await response.json();
7 | return data;
8 | } catch (error) {
9 | console.error('Error loading JSON file:', error);
10 | }
11 | };
12 |
13 | const selectElement = (id) => {
14 | return document.getElementById(id);
15 | };
16 |
17 | const elemToggleFunc = function (elem) {
18 | elem.classList.toggle('active');
19 | };
20 |
21 | const header = document.querySelector('[data-header]');
22 | const navHome = selectElement('navHome');
23 | const navAboutMe = selectElement('navAboutMe');
24 | const navSkills = selectElement('navSkills');
25 | const navGallery = selectElement('navGallery');
26 | const navContact = selectElement('navContact');
27 | const homeContent = selectElement('homeContent');
28 | const homeBtn = selectElement('homeBtn');
29 | const instaToolTip = selectElement('instaToolTip');
30 | const teleToolTip = selectElement('teleToolTip');
31 | const linkedToolTip = selectElement('linkedToolTip');
32 | const aboutSubTitle = selectElement('aboutSubTitle');
33 | const aboutTitle = selectElement('aboutTitle');
34 | const aboutContent = selectElement('aboutContent');
35 | const galleryBtn = selectElement('galleryBtn');
36 | const downloadCvBtn = selectElement('downloadCvBtn');
37 | const skillsSubTitle = selectElement('skillsSubTitle');
38 | const skillsTitle = selectElement('skillsTitle');
39 | const skillsContent = selectElement('skillsContent');
40 | const skillsTool = selectElement('skillsTool');
41 | const skillsSkill = selectElement('skillsSkill');
42 | const skillsToggle = selectElement('skillsToogle');
43 | const contactSubTitle = selectElement('contactSubTitle');
44 | const contactTitle = selectElement('contactTitle');
45 | const contactContent = selectElement('contactContent');
46 | const contactList = selectElement('contactList');
47 | const email = selectElement('email');
48 | const linkedin = selectElement('linkedin');
49 | const telins = selectElement('telins');
50 | const github = selectElement('github');
51 | const contactForm = selectElement('contactForm');
52 | const nameLastName = selectElement('formNameLastName');
53 | const nameInput = selectElement('name');
54 | const formEmail = selectElement('formEmail');
55 | const emailInput = selectElement('email');
56 | const formNumber = selectElement('formNumber');
57 | const formMassage = selectElement('formMassage');
58 | const formMessageInput = selectElement('message');
59 | const footerContent = selectElement('footerContent');
60 | const languageOptions = selectElement('languageOptions');
61 | const languageSelector = selectElement('lang');
62 | const navList = selectElement('navList');
63 | const body = selectElement('body');
64 | const formSubmitBtn = selectElement('subBtn');
65 | const directionNeeded = [
66 | homeBtn,
67 | aboutTitle,
68 | aboutContent,
69 | skillsTitle,
70 | skillsContent,
71 | contactTitle,
72 | contactContent,
73 | contactList,
74 | contactForm,
75 | navList,
76 | ];
77 |
78 | const toggleLanguage = (language) => {
79 | const data = fetchData().then((data) => {
80 | if (language == 'Fa') {
81 | directionNeeded.map((elem) => {
82 | elem.style.direction = 'rtl';
83 | elem.parentElement.style.flexDirection = 'row';
84 | });
85 | localStorage.setItem('language', 'Fa');
86 | body.style.fontFamily = 'Vazir';
87 | homeBtn.parentElement.style.paddingBottom = '8px';
88 | galleryBtn.style.paddingBottom = '8px';
89 | galleryBtn.setAttribute('href', './gallery.html');
90 | downloadCvBtn.style.paddingBottom = '8px';
91 | downloadCvBtn.setAttribute('href', './cv/index.html');
92 | skillsToggle.classList.remove('skill-toggle-english');
93 | skillsToggle.classList.remove('skill-toggle-germany');
94 | navHome.innerHTML = data.Fa.home;
95 | navAboutMe.innerHTML = data.Fa.aboutMe;
96 | navSkills.innerHTML = data.Fa.skills;
97 | navGallery.innerHTML = data.Fa.gallery;
98 | navContact.innerHTML = data.Fa.contact;
99 | homeContent.innerHTML = data.Fa.homeContent;
100 | homeBtn.innerHTML = data.Fa.contact;
101 | instaToolTip.innerHTML = data.Fa.instagram;
102 | teleToolTip.innerHTML = data.Fa.telegram;
103 | linkedToolTip.innerHTML = data.Fa.linkedin;
104 | aboutSubTitle.innerHTML = data.Fa.aboutMe;
105 | aboutTitle.innerHTML = data.Fa.aboutTitle;
106 | aboutContent.innerHTML = data.Fa.aboutContent;
107 | galleryBtn.innerHTML = data.Fa.gallery;
108 | downloadCvBtn.innerHTML = data.Fa.downloadCv;
109 | skillsSubTitle.innerHTML = data.Fa.skillsSubTitle;
110 | skillsTitle.innerHTML = data.Fa.skillsTitle;
111 | skillsContent.innerHTML = data.Fa.skillsContent;
112 | skillsTool.innerHTML = data.Fa.tools;
113 | skillsSkill.innerHTML = data.Fa.skills;
114 | contactSubTitle.innerHTML = data.Fa.contact;
115 | contactTitle.innerHTML = data.Fa.contactTitle;
116 | contactContent.innerHTML = data.Fa.contactContent;
117 | email.innerHTML = data.Fa.email;
118 | linkedin.innerHTML = data.Fa.linkedin;
119 | telins.innerHTML = `${data.Fa.telegram} & ${data.Fa.instagram}`;
120 | github.innerHTML = data.Fa.github;
121 | nameLastName.innerHTML = data.Fa.nameLastName;
122 | nameInput.placeholder = data.Fa.nameLastNamePlaceHolder;
123 | formEmail.innerHTML = data.Fa.email;
124 | emailInput.placeholder = data.Fa.emailPlaceHolder;
125 | formNumber.innerHTML = data.Fa.phoneNumber;
126 | formMassage.innerHTML = data.Fa.message;
127 | formMessageInput.placeholder = data.Fa.messagePlaceHolder;
128 | footerContent.innerHTML = data.Fa.footerContent;
129 | formSubmitBtn.innerHTML = data.Fa.sendMsg;
130 | } else if (language == 'En') {
131 | directionNeeded.map((elem) => {
132 | elem.style.direction = 'ltr';
133 | elem.parentElement.style.flexDirection = 'row-reverse';
134 | });
135 | localStorage.setItem('language', 'En');
136 | body.style.fontFamily = 'roboto';
137 | homeBtn.parentElement.style.paddingBottom = '6px';
138 | galleryBtn.style.paddingBottom = '6px';
139 | galleryBtn.setAttribute('href', './galleryEN.html');
140 | downloadCvBtn.style.paddingBottom = '6px';
141 | downloadCvBtn.setAttribute('href', './cv/en/index.html');
142 | formSubmitBtn.style.paddingBottom = '6px';
143 | skillsToggle.classList.remove('skill-toggle-germany');
144 | skillsToggle.classList.add('skill-toggle-english');
145 | navHome.innerHTML = data.En.home;
146 | navAboutMe.innerHTML = data.En.aboutMe;
147 | navSkills.innerHTML = data.En.skills;
148 | navGallery.innerHTML = data.En.gallery;
149 | navContact.innerHTML = data.En.contact;
150 | homeContent.innerHTML = data.En.homeContent;
151 | homeBtn.innerHTML = data.En.contact;
152 | instaToolTip.innerHTML = data.En.instagram;
153 | teleToolTip.innerHTML = data.En.telegram;
154 | linkedToolTip.innerHTML = data.En.linkedin;
155 | aboutSubTitle.innerHTML = data.En.aboutMe;
156 | aboutTitle.innerHTML = data.En.aboutTitle;
157 | aboutContent.innerHTML = data.En.aboutContent;
158 | galleryBtn.innerHTML = data.En.gallery;
159 | downloadCvBtn.innerHTML = data.En.downloadCv;
160 | skillsSubTitle.innerHTML = data.En.skillsSubTitle;
161 | skillsTitle.innerHTML = data.En.skillsTitle;
162 | skillsContent.innerHTML = data.En.skillsContent;
163 | skillsTool.innerHTML = data.En.tools;
164 | skillsSkill.innerHTML = data.En.skills;
165 | contactSubTitle.innerHTML = data.En.contact;
166 | contactTitle.innerHTML = data.En.contactTitle;
167 | contactContent.innerHTML = data.En.contactContent;
168 | email.innerHTML = data.En.email;
169 | linkedin.innerHTML = data.En.linkedin;
170 | telins.innerHTML = `${data.En.telegram} & ${data.En.instagram}`;
171 | github.innerHTML = data.En.github;
172 | nameLastName.innerHTML = data.En.nameLastName;
173 | nameInput.placeholder = data.En.nameLastNamePlaceHolder;
174 | formEmail.innerHTML = data.En.email;
175 | emailInput.placeholder = data.En.emailPlaceHolder;
176 | formNumber.innerHTML = data.En.phoneNumber;
177 | formMassage.innerHTML = data.En.message;
178 | formMessageInput.placeholder = data.En.messagePlaceHolder;
179 | footerContent.innerHTML = data.En.footerContent;
180 | formSubmitBtn.innerHTML = data.En.sendMsg;
181 | } else if (language == 'Ger') {
182 | directionNeeded.map((elem) => {
183 | elem.style.direction = 'ltr';
184 | elem.parentElement.style.flexDirection = 'row-reverse';
185 | });
186 | localStorage.setItem('language', 'Ger');
187 | body.style.fontFamily = 'roboto';
188 | homeBtn.parentElement.style.paddingBottom = '6px';
189 | galleryBtn.style.paddingBottom = '6px';
190 | galleryBtn.setAttribute('href', './galleryGER.html');
191 | downloadCvBtn.style.paddingBottom = '6px';
192 | downloadCvBtn.setAttribute('href', './cv/en/index.html');
193 | formSubmitBtn.style.paddingBottom = '6px';
194 | skillsToggle.classList.remove('skill-toggle-germany');
195 | skillsToggle.classList.add('skill-toggle-germany');
196 | navHome.innerHTML = data.Ger.home;
197 | navAboutMe.innerHTML = data.Ger.aboutMe;
198 | navSkills.innerHTML = data.Ger.skills;
199 | navGallery.innerHTML = data.Ger.gallery;
200 | navContact.innerHTML = data.Ger.contact;
201 | homeContent.innerHTML = data.Ger.homeContent;
202 | homeBtn.innerHTML = data.Ger.contact;
203 | instaToolTip.innerHTML = data.Ger.instagram;
204 | teleToolTip.innerHTML = data.Ger.telegram;
205 | linkedToolTip.innerHTML = data.Ger.linkedin;
206 | aboutSubTitle.innerHTML = data.Ger.aboutMe;
207 | aboutTitle.innerHTML = data.Ger.aboutTitle;
208 | aboutContent.innerHTML = data.Ger.aboutContent;
209 | galleryBtn.innerHTML = data.Ger.gallery;
210 | downloadCvBtn.innerHTML = data.Ger.downloadCv;
211 | skillsSubTitle.innerHTML = data.Ger.skillsSubTitle;
212 | skillsTitle.innerHTML = data.Ger.skillsTitle;
213 | skillsContent.innerHTML = data.Ger.skillsContent;
214 | skillsTool.innerHTML = data.Ger.tools;
215 | skillsSkill.innerHTML = data.Ger.skills;
216 | contactSubTitle.innerHTML = data.Ger.contact;
217 | contactTitle.innerHTML = data.Ger.contactTitle;
218 | contactContent.innerHTML = data.Ger.contactContent;
219 | email.innerHTML = data.Ger.email;
220 | linkedin.innerHTML = data.Ger.linkedin;
221 | telins.innerHTML = `${data.Ger.telegram} & ${data.Ger.instagram}`;
222 | github.innerHTML = data.Ger.github;
223 | nameLastName.innerHTML = data.Ger.nameLastName;
224 | nameInput.placeholder = data.Ger.nameLastNamePlaceHolder;
225 | formEmail.innerHTML = data.Ger.email;
226 | emailInput.placeholder = data.Ger.emailPlaceHolder;
227 | formNumber.innerHTML = data.Ger.phoneNumber;
228 | formMassage.innerHTML = data.Ger.message;
229 | formMessageInput.placeholder = data.Ger.messagePlaceHolder;
230 | footerContent.innerHTML = data.Ger.footerContent;
231 | formSubmitBtn.innerHTML = data.Ger.sendMsg;
232 | }
233 | });
234 | };
235 |
236 | window.addEventListener('scroll', () => {
237 | if (window.scrollY >= 10) {
238 | header.classList.add('active');
239 | languageOptions.classList.add('language-options-active');
240 | } else {
241 | header.classList.remove('active');
242 | languageOptions.classList.remove('language-options-active');
243 | }
244 | });
245 |
246 | const navToggleBtn = document.querySelector('[data-nav-toggle-btn]');
247 | const navbar = document.querySelector('[data-navbar]');
248 |
249 | function toggleNav() {
250 | elemToggleFunc(navToggleBtn);
251 | elemToggleFunc(navbar);
252 | elemToggleFunc(document.body);
253 | }
254 |
255 | const toggleBtnBox = document.querySelector('[data-toggle-box]');
256 | const toggleBtns = document.querySelectorAll('[data-toggle-btn]');
257 | const skillsBox = document.querySelector('[data-skills-box]');
258 |
259 | for (let i = 0; i < toggleBtns.length; i++) {
260 | toggleBtns[i].addEventListener('click', () => {
261 | elemToggleFunc(toggleBtnBox);
262 | for (let i = 0; i < toggleBtns.length; i++) {
263 | elemToggleFunc(toggleBtns[i]);
264 | }
265 | elemToggleFunc(skillsBox);
266 | });
267 | }
268 |
269 | const themeToggleBtn = document.querySelector('[data-theme-btn]');
270 |
271 | themeToggleBtn.addEventListener('click', () => {
272 | elemToggleFunc(themeToggleBtn);
273 |
274 | if (themeToggleBtn.classList.contains('active')) {
275 | document.body.classList.remove('dark_theme');
276 | document.body.classList.add('light_theme');
277 |
278 | localStorage.setItem('theme', 'light_theme');
279 | } else {
280 | document.body.classList.add('dark_theme');
281 | document.body.classList.remove('light_theme');
282 |
283 | localStorage.setItem('theme', 'dark_theme');
284 | }
285 | });
286 |
287 | if (localStorage.getItem('theme') === 'light_theme') {
288 | themeToggleBtn.classList.add('active');
289 | document.body.classList.remove('dark_theme');
290 | document.body.classList.add('light_theme');
291 | } else {
292 | themeToggleBtn.classList.remove('active');
293 | document.body.classList.remove('light_theme');
294 | document.body.classList.add('dark_theme');
295 | }
296 |
297 | if (localStorage.getItem('language') === 'En') {
298 | toggleLanguage('En');
299 | } else if (localStorage.getItem('language') === 'Ger') {
300 | toggleLanguage('Ger');
301 | }
302 |
303 | function subFrm() {
304 | const frm = document.getElementById('contactForm');
305 | setTimeout(() => {
306 | frm.reset();
307 | return false;
308 | }, 3000);
309 | }
310 |
--------------------------------------------------------------------------------
/cv/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Cv
9 |
10 |
11 |
18 |
19 |
20 |
23 |
24 |
25 |
26 |
65 |
66 |
71 |
72 |
73 |
82 |
83 |
84 |
87 |
88 |
101 |
102 |
103 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 | EN
129 |
130 |
131 |
132 |
148 |
149 |
152 |
153 |
156 |
159 |
160 |
165 |
166 | امیرعلی رجبی
167 |
168 |
169 | توسعه دهنده نرم افزار و سخت افزار
170 |
171 |
235 |
236 |
239 |
240 |
241 | جنسیت
242 | مرد
243 |
244 |
245 | وضعیت تاهل
246 | مجرد
247 |
248 |
249 | وضعیت سربازی
250 | معافیت تحصیلی
251 |
252 |
253 | تاریخ تولد
254 | ۱۳۸۵/۶/۱۱
255 |
256 |
257 | ملیت
258 | ایرانی
259 |
260 |
261 | موقعیت فعلی
262 | ایران، زنجان
263 |
264 |
265 |
268 |
269 | موبایل
270 | ۰۹۰۱-۱۴۱-۵۵۹۶
271 |
272 |
273 | ایمیل
274 | zephinax@gmail.com
275 |
276 |
277 |
278 |
279 |
280 |
281 |
284 |
285 |
288 |
300 |
301 |
302 |
303 |
304 |
بیوگرافی
305 |
306 |
307 | امیرعلی هستم. یک گیک، وب دولوپر، علاقه مند به لینوکس و نرم افزار
308 | آزاد، برنامه نویس سخت افزار و نرم افزار و عاشق یادگیری و به اشتراک
309 | گذاشتن چیزها. همچنین فعال در حوزه [ دیزاین UI & UX ،هوش مصنوعی
310 | ،امنیت، اینترنت اشیاء، گجت ها، موبایل، کامپیوتر و لپتاپ ] و یکی از
311 | اعضای تیم زیکادو. تقریبا مسلط به زبان انگلیسی. از کار های چالش
312 | برانگیز مثل نصب و توسعه کاستوم رام برای گوشی های اندرویدی و نصب
313 | هکینتاش خوشم میاد و سعی میکنم چیز های زیادی از طریق حل مشکلات و
314 | چالش های این کار ها یاد بگیرم.
315 |
316 |
317 |
318 |
321 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
سوابق تحصیلی
340 |
341 |
361 |
362 |
363 |
366 |
378 |
379 |
380 |
مهارت ها
381 |
382 |
383 | زبان ها و فریمورک های برنامه نویسی : [ Html, Css, Tailwind Css,
386 | Sass , javascript , Arduino , Pyhton , React ]
387 |
388 |
389 |
390 | مهارت های دیگر : [ Photoshop, Premiere, مونتاژ قطعات SMD ]
393 |
394 |
395 |
396 |
397 |
400 |
412 |
413 |
414 |
417 |
418 |
زبان ها
419 |
420 |
421 |
422 |
انگلیسی
426 |
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 |
435 |
فارسی
439 |
440 |
441 |
442 |
443 |
444 |
445 |
446 |
447 |
448 |
449 |
450 |
451 |
454 |
466 |
469 |
470 |
471 | علاقه ها
472 |
473 |
474 |
475 | تجربه های چالش بر انگیز
476 | موسیقی
477 | رباتیک
478 | کار تیمی
479 | خلاقیت
480 |
481 |
482 |
483 |
484 |
485 |
486 | Copyright ©2024 Zephinax — All rights reserved.
487 |
488 |
489 |
490 |
491 |
492 |
493 |
--------------------------------------------------------------------------------
/cv/en/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Cv - En
9 |
10 |
11 |
18 |
19 |
20 |
23 |
24 |
25 |
26 |
65 |
66 |
71 |
72 |
73 |
82 |
83 |
84 |
87 |
88 |
101 |
102 |
103 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 | فا
129 |
130 |
131 |
132 |
148 |
149 |
152 |
153 |
156 |
159 |
160 |
165 |
166 | Amirali Rajabi
167 |
168 |
169 | Software & Hardware developer
170 |
171 |
235 |
236 |
239 |
240 |
241 | Gender
242 | Male
243 |
244 |
245 | Marital Status
246 | Single
247 |
248 |
249 | Military Service Status
250 | Educational
251 |
252 |
253 | Birth Date
254 | 1385/6/11
255 |
256 |
257 | Nationality
258 | Iranian
259 |
260 |
261 | Current location
262 | Iran, zanjan
263 |
264 |
267 |
268 | Phone
269 | 0901-141-5596
270 |
271 |
272 | E-mail
273 |
274 | Zephinax@gmail.com
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
285 |
286 |
289 |
301 |
302 |
303 |
304 |
305 |
Biography
306 |
307 |
308 | I am Amir Ali. A geek, web developer, interested in Linux and
309 | software Freelancer, hardware and software programmer and lover of
310 | learning and sharing putting things Also active in the field of UI
311 | & UX design, artificial intelligence , security, Internet of
312 | things, gadgets, mobile, computer and laptop] and one of Xecudo
313 | team members. Almost fluent in English. From the work of the
314 | challenge Inspiring like installation and development of custom
315 | ROM for Android phones and installation I like Hackintosh and I
316 | try many things through solving problems and Learn the challenges
317 | of these jobs.
318 |
319 |
320 |
321 |
324 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
Education
343 |
344 |
366 |
367 |
368 |
371 |
383 |
384 |
385 |
Skills
386 |
387 |
388 | Programming languages and frameworks : [ Html, Css, Tailwind
391 | Css, Sass , javascript , Arduino , Pyhton , React ]
392 |
393 |
394 |
395 |
398 | Other skills : [ Photoshop, Premiere, Soldering SMD Parts ]
399 |
400 |
401 |
402 |
403 |
406 |
418 |
419 |
420 |
423 |
424 |
Languages
425 |
426 |
427 |
428 |
English
432 |
433 |
434 |
435 |
436 |
437 |
438 |
439 |
440 |
441 |
Persian
445 |
446 |
447 |
448 |
449 |
450 |
451 |
452 |
453 |
454 |
455 |
456 |
459 |
471 |
474 |
475 |
476 | Favorites
477 |
478 |
479 |
480 | Challenging experiences
481 | Music
482 | Robotic
483 | Team work
484 | Creativity
485 |
486 |
487 |
488 |
489 |
490 |
491 | Copyright ©2024 Zephinax — All rights reserved.
492 |
493 |
494 |
495 |
496 |
497 |
498 |
--------------------------------------------------------------------------------
/assets/css/style.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: Vazir;
3 | src: url(./../font/Vazir-Regular.ttf);
4 | }
5 | input::-webkit-outer-spin-button,
6 | input::-webkit-inner-spin-button {
7 | -webkit-appearance: none;
8 | margin: 0;
9 | }
10 |
11 | input[type='number'] {
12 | -moz-appearance: textfield;
13 | }
14 |
15 | :root {
16 | --main-color: hsl(342, 61%, 55%);
17 | --black: hsl(0, 0%, 0%);
18 | --white: hsl(0, 0%, 100%);
19 | --ff-saira-stencil-one: 'Saira Stencil One', sans-serif;
20 | --ff-poppins: 'Poppins', sans-serif;
21 | --ff-roboto: 'Roboto', sans-serif;
22 | --fs-1: 2rem;
23 | --fs-2: calc(1.813rem + 1vw);
24 | --fs-3: calc(1.313rem + 1vw);
25 | --fs-4: 1.4rem;
26 | --fs-5: 1rem;
27 | --fs-6: 0.813rem;
28 | --fs-7: 0.75rem;
29 | --fw-400: 400;
30 | --fw-700: 700;
31 | --transition-1: 0.25s ease-in-out;
32 | --section-padding: 50px;
33 | --radius-4: 4px;
34 | --radius-12: 12px;
35 | }
36 |
37 | body.dark_theme {
38 | --bg-primary: hsl(209, 33%, 16%);
39 | --bg-secondary: hsl(207, 26%, 19%);
40 | --color-primary: hsl(207, 26%, 100%);
41 | --color-secondary: hsl(207, 26%, 62%);
42 | --card-shadow: hsla(207, 26%, 0%, 0.4);
43 | --input-bg: hsl(207, 26%, 16%);
44 | --shadow-1: 10px 10px 40px var(--card-shadow);
45 | }
46 |
47 | body.light_theme {
48 | --bg-primary: hsl(210, 50%, 80%);
49 | --bg-secondary: hsl(210, 50%, 90%);
50 | --color-primary: hsl(210, 50%, 12%);
51 | --color-secondary: hsl(210, 50%, 37%);
52 | --card-shadow: hsla(210, 50%, 0%, 0.1);
53 | --input-bg: hsl(210, 50%, 93%);
54 | --shadow-1: 10px 10px 40px var(--card-shadow);
55 | }
56 |
57 | *,
58 | *::before,
59 | *::after {
60 | margin: 0;
61 | padding: 0;
62 | box-sizing: border-box;
63 | }
64 |
65 | li {
66 | list-style: none;
67 | }
68 |
69 | a {
70 | text-decoration: none;
71 | }
72 |
73 | a,
74 | img,
75 | time,
76 | span,
77 | input,
78 | label,
79 | select,
80 | button,
81 | textarea,
82 | ion-icon {
83 | display: block;
84 | }
85 |
86 | input,
87 | button,
88 | select,
89 | textarea {
90 | background: none;
91 | border: none;
92 | font: inherit;
93 | }
94 |
95 | button,
96 | select {
97 | cursor: pointer;
98 | }
99 |
100 | input,
101 | textarea {
102 | width: 100%;
103 | }
104 |
105 | ion-icon {
106 | pointer-events: none;
107 | display: inline-block;
108 | }
109 |
110 | :is(a, button, select) {
111 | outline-color: var(--scarlet);
112 | outline-offset: 3px;
113 | }
114 |
115 | ::-moz-selection {
116 | background: var(--color-primary);
117 | color: var(--bg-primary);
118 | }
119 |
120 | ::selection {
121 | background: var(--color-primary);
122 | color: var(--bg-primary);
123 | }
124 |
125 | html {
126 | font-family: Vazir, var(--ff-roboto);
127 | scroll-behavior: smooth;
128 | -webkit-tap-highlight-color: transparent;
129 | }
130 |
131 | body {
132 | background: var(--bg-primary);
133 | transition: var(--transition-1);
134 | }
135 |
136 | body.active {
137 | overflow: hidden;
138 | }
139 |
140 | .container {
141 | padding-inline: 10px;
142 | }
143 |
144 | .h1 {
145 | font-size: var(--fs-1);
146 | line-height: 1.2;
147 | font-weight: 400;
148 | }
149 |
150 | .h2,
151 | .h3,
152 | .h4 {
153 | color: var(--color-primary);
154 | font-family: inherit;
155 | line-height: 1.2;
156 | }
157 |
158 | .h2 {
159 | font-size: var(--fs-2);
160 | }
161 |
162 | .h3 {
163 | font-size: var(--fs-3);
164 | }
165 |
166 | .h4 {
167 | font-size: var(--fs-5);
168 | }
169 |
170 | .w-100 {
171 | width: 100%;
172 | }
173 |
174 | .btn {
175 | max-width: -moz-max-content;
176 | max-width: max-content;
177 | color: var(--color-primary);
178 | text-transform: uppercase;
179 | letter-spacing: 0.5px;
180 | padding: 8px 18px;
181 | display: flex;
182 | justify-content: center;
183 | align-items: center;
184 | gap: 8px;
185 | border: 1px solid transparent;
186 | border-radius: var(--radius-12);
187 | transition: var(--transition-1);
188 | }
189 |
190 | .bx-phone-call {
191 | font-size: 24px;
192 | margin-bottom: 4px;
193 | }
194 |
195 | .btn-primary {
196 | border-color: var(--color-primary);
197 | }
198 |
199 | .btn-primary:is(:hover, :focus) {
200 | background: var(--color-primary);
201 | color: var(--bg-primary);
202 | box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;
203 | }
204 |
205 | .btn-secondary {
206 | background: var(--main-color);
207 | border-color: var(--main-color);
208 | color: var(--bg-primary);
209 | }
210 |
211 | .btn-secondary:is(:hover, :focus) {
212 | background: var(--bg-primary);
213 | color: var(--main-color);
214 | }
215 |
216 | .section-subtitle {
217 | position: relative;
218 | color: var(--color-secondary);
219 | text-transform: uppercase;
220 | padding-bottom: 5px;
221 | margin-bottom: 20px;
222 | }
223 |
224 | .section-subtitle::after {
225 | content: '';
226 | position: absolute;
227 | top: 100%;
228 | right: 0;
229 | width: 60px;
230 | height: 2px;
231 | background: var(--color-secondary);
232 | }
233 |
234 | .section-title {
235 | margin-bottom: 30px;
236 | }
237 |
238 | .section-text {
239 | color: var(--color-secondary);
240 | line-height: 1.8;
241 | margin-bottom: 30px;
242 | }
243 |
244 | .tooltip {
245 | position: absolute;
246 | top: -40px;
247 | background: var(--main-color);
248 | min-width: -moz-max-content;
249 | min-width: max-content;
250 | color: var(--white);
251 | font-size: 15px;
252 | font-weight: var(--fw-700);
253 | padding: 5px 10px;
254 | border-radius: var(--radius-4);
255 | box-shadow: var(--shadow-1);
256 | transform: translateY(-10px);
257 | opacity: 0;
258 | pointer-events: none;
259 | transition: var(--transition-1);
260 | z-index: 1;
261 | }
262 |
263 | /* ------Header------ */
264 | .header {
265 | padding-block: 15px;
266 | position: fixed;
267 | top: 0;
268 | left: 0;
269 | width: 100%;
270 | transition: var(--transition-1);
271 | z-index: 4;
272 | }
273 |
274 | .header.active {
275 | padding-block: 12px;
276 | background: var(--bg-secondary);
277 | box-shadow: var(--shadow-1);
278 | }
279 |
280 | .header .container {
281 | display: flex;
282 | justify-content: space-between;
283 | align-items: center;
284 | gap: 10px;
285 | }
286 |
287 | .logo {
288 | position: relative;
289 | min-width: 77px;
290 | z-index: 2;
291 | }
292 |
293 | .logo a {
294 | color: var(--color-primary);
295 | font-family: var(--ff-saira-stencil-one);
296 | }
297 |
298 | .logo span {
299 | display: inline-block;
300 | color: var(--main-color);
301 | margin-left: 2px;
302 | }
303 |
304 | .navbar-actions {
305 | display: flex;
306 | align-items: center;
307 | gap: 25px;
308 | margin-left: auto;
309 | }
310 |
311 | .language-selector {
312 | width: 28px;
313 | height: 28px;
314 | position: relative;
315 | }
316 |
317 | .language-options {
318 | display: none;
319 | border-radius: 0px 0px 10px 10px;
320 | position: absolute;
321 | border-left: 1px dashed var(--main-color);
322 | border-right: 1px dashed var(--main-color);
323 | border-bottom: 1px dashed var(--main-color);
324 | color: var(--color-primary);
325 | padding-top: 8px;
326 | margin-top: -10px;
327 | text-align: center;
328 | left: -24px;
329 | transition: var(--transition-1);
330 | }
331 |
332 | .language-options-active {
333 | background: var(--bg-secondary);
334 | padding-top: 20px;
335 | border: none;
336 | }
337 |
338 | .language-icon:hover + .language-options,
339 | .language-icon:focus + .language-options {
340 | display: block;
341 | animation: scale-up-ver-top 0.4s cubic-bezier(0.39, 0.575, 0.565, 1) both;
342 | }
343 |
344 | .language-selector:hover + .language-options,
345 | .language-selector:focus + .language-options,
346 | .language-options:hover {
347 | display: block;
348 | }
349 |
350 | .language-options li {
351 | padding: 0px 10px 14px 10px;
352 | cursor: pointer;
353 | transition: all 0.15s linear;
354 | animation: scale-up-ver-top 0.4s cubic-bezier(0.39, 0.575, 0.565, 1) both;
355 | -webkit-touch-callout: none;
356 | -webkit-user-select: none;
357 | -khtml-user-select: none;
358 | -moz-user-select: none;
359 | -ms-user-select: none;
360 | user-select: none;
361 | }
362 |
363 | .language-selector:hover + .language-options {
364 | display: block;
365 | }
366 |
367 | @keyframes scale-up-ver-top {
368 | 0% {
369 | -webkit-transform: scaleY(0.4);
370 | transform: scaleY(0.4);
371 | -webkit-transform-origin: 100% 0%;
372 | transform-origin: 100% 0%;
373 | }
374 | 100% {
375 | -webkit-transform: scaleY(1);
376 | transform: scaleY(1);
377 | -webkit-transform-origin: 100% 0%;
378 | transform-origin: 100% 0%;
379 | }
380 | }
381 |
382 | .language-options li:hover {
383 | color: var(--main-color);
384 | }
385 |
386 | .language-icon {
387 | stroke: var(--color-primary);
388 | cursor: pointer;
389 | transition: all 0.15s linear;
390 | }
391 |
392 | .language-icon:hover,
393 | .language-icon:focus {
394 | stroke: var(--main-color);
395 | }
396 |
397 | .theme-btn {
398 | padding: 4px;
399 | width: 48px;
400 | background: var(--bg-secondary);
401 | border-radius: 100px;
402 | transition: var(--transition-1);
403 | }
404 |
405 | .header.active .theme-btn {
406 | background: var(--bg-primary);
407 | }
408 |
409 | .theme-btn .icon {
410 | position: relative;
411 | left: 0;
412 | width: 20px;
413 | height: 20px;
414 | border-radius: 50px;
415 | box-shadow: inset 9px -6px var(--color-primary);
416 | transition: var(--transition-1);
417 | }
418 |
419 | .theme-btn.active .icon {
420 | left: 20px;
421 | box-shadow: inset 20px -20px var(--main-color);
422 | }
423 |
424 | .nav-toggle-btn {
425 | position: relative;
426 | transition: var(--transition-1);
427 | z-index: 2;
428 | }
429 |
430 | .nav-toggle-btn.active {
431 | transform: rotate(-45deg);
432 | }
433 |
434 | .nav-toggle-btn span {
435 | width: 20px;
436 | height: 2px;
437 | background: var(--color-primary);
438 | margin: 5px;
439 | transition: var(--transition-1);
440 | }
441 |
442 | .nav-toggle-btn :is(.one, .three) {
443 | width: 10px;
444 | }
445 |
446 | .nav-toggle-btn .one {
447 | margin-left: auto;
448 | transform-origin: left;
449 | }
450 |
451 | .nav-toggle-btn .three {
452 | transform-origin: right;
453 | }
454 |
455 | .nav-toggle-btn.active .one {
456 | transform: rotate(90deg) translateX(-3px);
457 | }
458 |
459 | .nav-toggle-btn.active .three {
460 | transform: rotate(90deg) translateX(3px);
461 | }
462 |
463 | .navbar {
464 | position: fixed;
465 | background: var(--bg-secondary);
466 | top: 100%;
467 | left: 0;
468 | width: 100%;
469 | height: 100%;
470 | display: grid;
471 | place-items: center;
472 | visibility: hidden;
473 | transition: 0.5s cubic-bezier(0.71, 0.01, 0.24, 0.99);
474 | z-index: 1;
475 | }
476 |
477 | .navbar.active {
478 | top: 0;
479 | visibility: visible;
480 | }
481 |
482 | .navbar-list > li {
483 | margin-block: 20px;
484 | padding-inline: 50px;
485 | overflow: hidden;
486 | display: flex;
487 | align-items: center;
488 | justify-content: center;
489 | }
490 |
491 | .navbar-link {
492 | position: relative;
493 | width: -moz-max-content;
494 | width: max-content;
495 | margin-inline: auto;
496 | color: var(--color-primary);
497 | font-family: inherit;
498 | font-size: var(--fs-1);
499 | padding: 10px;
500 | display: flex;
501 | align-items: center;
502 | gap: 5px;
503 | transform: translateY(50px);
504 | transition: 0.15s ease-out;
505 | }
506 |
507 | .navbar.active .navbar-link {
508 | transform: translateY(0);
509 | font-size: 1.5rem;
510 | }
511 |
512 | .navbar-link:is(:hover, :focus) {
513 | color: var(--main-color);
514 | }
515 |
516 | /* ------Hero------ */
517 | main {
518 | overflow-x: hidden;
519 | }
520 |
521 | .hero {
522 | min-height: 100vh;
523 | display: flex;
524 | flex-direction: column;
525 | justify-content: center;
526 | align-items: center;
527 | padding-top: 100px;
528 | }
529 |
530 | .hero-banner {
531 | max-width: 500px;
532 | width: 125%;
533 | margin-bottom: 30px;
534 | }
535 |
536 | :is(.hero-social-list, .scroll-down) {
537 | display: none;
538 | }
539 |
540 | .hero-content {
541 | max-width: 450px;
542 | }
543 |
544 | .hero-title {
545 | text-align: center;
546 | margin-bottom: 30px;
547 | }
548 |
549 | .hero .btn-primary {
550 | margin-inline: auto;
551 | }
552 |
553 | /* ------About------ */
554 | .about {
555 | padding-block: 5px;
556 | }
557 |
558 | .about-banner {
559 | max-width: 400px;
560 | margin-inline: auto;
561 | margin-bottom: 80px;
562 | }
563 |
564 | .about .btn {
565 | max-width: unset;
566 | width: 100%;
567 | }
568 |
569 | .about .btn-secondary {
570 | margin-bottom: 10px;
571 | }
572 |
573 | /* ------Skills------ */
574 | .skills {
575 | padding-block: var(--section-padding);
576 | padding-top: 80px;
577 | }
578 |
579 | .skills-content {
580 | margin-bottom: 50px;
581 | height: 275px;
582 | }
583 |
584 | .skills-toggle {
585 | background: var(--bg-secondary);
586 | position: relative;
587 | width: -moz-max-content;
588 | width: max-content;
589 | margin-inline: auto;
590 | display: flex;
591 | align-items: center;
592 | padding: 5px;
593 | border-radius: 100px;
594 | box-shadow: var(--shadow-1);
595 | z-index: 1;
596 | }
597 |
598 | .skills-toggle::before {
599 | content: '';
600 | position: absolute;
601 | top: 5px;
602 | left: 5px;
603 | bottom: 5px;
604 | width: 93px;
605 | background: var(--main-color);
606 | border-radius: 100px;
607 | transition: var(--transition-1);
608 | z-index: -1;
609 | }
610 |
611 | .skills-toggle.active::before {
612 | left: 110px;
613 | width: 94px;
614 | }
615 |
616 | .skill-toggle-english.active::before {
617 | left: 89px;
618 | }
619 |
620 | .skill-toggle-english::before {
621 | width: 75px;
622 | }
623 | .skill-toggle-germany.active::before {
624 | width: 110px;
625 | left: 148px;
626 | }
627 |
628 | .skill-toggle-germany::before {
629 | width: 120px;
630 | }
631 |
632 | .toggle-btn {
633 | color: var(--color-primary);
634 | font-family: inherit;
635 | padding: 5px 25px;
636 | display: flex;
637 | align-items: center;
638 | justify-content: center;
639 | text-align: center;
640 | transition: var(--transition-1);
641 | }
642 |
643 | .skills-box.active .skills-list,
644 | .skills-box .tools-list {
645 | display: none;
646 | }
647 |
648 | .skills-box .skills-list,
649 | .skills-box.active .tools-list {
650 | display: flex;
651 | flex-wrap: wrap;
652 | justify-content: center;
653 | align-items: center;
654 | gap: 15px;
655 | animation: fadeIn 0.5s ease-out forwards;
656 | }
657 |
658 | @keyframes fadeIn {
659 | 0% {
660 | opacity: 0;
661 | }
662 | 100% {
663 | opacity: 1;
664 | }
665 | }
666 | .skill-card {
667 | position: relative;
668 | background: var(--bg-secondary);
669 | width: 80px;
670 | height: 80px;
671 | display: grid;
672 | place-items: center;
673 | border-radius: var(--radius-12);
674 | box-shadow: var(--shadow-1);
675 | cursor: pointer;
676 | }
677 |
678 | .skill-card:hover .tooltip {
679 | transform: translateY(0);
680 | opacity: 1;
681 | }
682 |
683 | /* ------Projects------ */
684 | .project {
685 | padding: 80px 10px;
686 | direction: rtl;
687 | }
688 |
689 | .project-list > li {
690 | margin-bottom: 25px;
691 | }
692 |
693 | .project-card {
694 | position: relative;
695 | overflow: hidden;
696 | border-radius: var(--radius-12);
697 | box-shadow: 2px 4px 6px hsla(0, 0%, 0%, 0.2);
698 | }
699 |
700 | .project-card::after {
701 | content: '';
702 | position: absolute;
703 | inset: 0;
704 | border-radius: inherit;
705 | transition: var(--transition-1);
706 | }
707 |
708 | .project-card:is(:hover, :focus)::after {
709 | background: hsla(0, 0%, 0%, 0.2);
710 | }
711 |
712 | .project-card .card-content {
713 | position: absolute;
714 | bottom: 0;
715 | left: 0;
716 | width: 100%;
717 | padding: 20px;
718 | }
719 |
720 | .project-card .card-title {
721 | margin-bottom: 10px;
722 | }
723 |
724 | .project-card :is(.card-title, .publish-date) {
725 | background: var(--bg-primary);
726 | padding: 6px 12px;
727 | width: -moz-max-content;
728 | width: max-content;
729 | box-shadow: var(--shadow-1);
730 | transform: translateY(20px);
731 | opacity: 0;
732 | border-radius: 10px;
733 | transition: var(--transition-1);
734 | }
735 |
736 | .project-card .publish-date {
737 | font-size: var(--fs-6);
738 | color: var(--color-primary);
739 | transition-delay: 0s;
740 | }
741 |
742 | .project-card:is(:hover, :focus) :is(.card-title, .publish-date) {
743 | transform: translateY(0);
744 | opacity: 1;
745 | }
746 |
747 | .project-card:is(:hover, :focus) .publish-date {
748 | transition-delay: 0.1s;
749 | }
750 |
751 | .load-more {
752 | font-size: var(--fs-4);
753 | color: var(--main-color);
754 | /* text-decoration: underline; */
755 | margin-inline: auto;
756 | }
757 |
758 | /* ------Contact------ */
759 | .contact {
760 | padding-block: var(--section-padding);
761 | padding-bottom: 80px;
762 | }
763 |
764 | .contact-content {
765 | margin-bottom: 50px;
766 | }
767 |
768 | .contact-list-item {
769 | display: flex;
770 | align-items: flex-start;
771 | gap: 15px;
772 | margin-bottom: 20px;
773 | }
774 |
775 | .contact-item-title::after {
776 | content: ' :';
777 | }
778 |
779 | .contact-item-icon {
780 | font-size: 25px;
781 | color: var(--color-primary);
782 | }
783 |
784 | .contact-item-icon ion-icon {
785 | --ionicon-stroke-width: 40px;
786 | }
787 |
788 | .contact-item-title {
789 | margin-bottom: 10px;
790 | }
791 |
792 | .contact-list-item .contact-info {
793 | color: var(--color-secondary);
794 | font-style: normal;
795 | line-height: 1.6;
796 | transition: var(--transition-1);
797 | }
798 |
799 | .contact-info:not(address):is(:hover, :focus) {
800 | color: var(--color-primary);
801 | }
802 |
803 | .contact-form {
804 | background: var(--bg-secondary);
805 | padding: 20px;
806 | border-radius: var(--radius-12);
807 | box-shadow: var(--shadow-1);
808 | }
809 |
810 | .form-wrapper {
811 | margin-bottom: 25px;
812 | }
813 |
814 | .form-label {
815 | color: var(--color-primary);
816 | font-size: var(--fs-7);
817 | font-family: inherit;
818 | margin-bottom: 8px;
819 | margin-left: 5px;
820 | }
821 |
822 | .input-wrapper {
823 | position: relative;
824 | }
825 |
826 | .input-field {
827 | background: var(--input-bg);
828 | color: var(--main-color);
829 | padding: 10px;
830 | padding-left: 40px;
831 | border-radius: var(--radius-12);
832 | transition: var(--transition-1);
833 | }
834 |
835 | .input-wrapper ion-icon {
836 | position: absolute;
837 | top: 10px;
838 | left: 10px;
839 | color: var(--color-secondary);
840 | font-size: 20px;
841 | transition: var(--transition-1);
842 | }
843 |
844 | textarea.input-field {
845 | min-height: 60px;
846 | height: 120px;
847 | max-height: 200px;
848 | resize: vertical;
849 | resize: none;
850 | }
851 |
852 | .input-field:focus {
853 | outline: 1px solid;
854 | }
855 |
856 | .input-field:focus + ion-icon {
857 | color: var(--main-color);
858 | }
859 |
860 | .contact .btn-primary {
861 | max-width: unset;
862 | width: 100%;
863 | background: var(--color-primary);
864 | color: var(--bg-primary);
865 | }
866 |
867 | /* ------Footer------ */
868 | .footer {
869 | background: var(--bg-secondary);
870 | padding-block: 20px;
871 | text-align: center;
872 | box-shadow: var(--shadow-1);
873 | }
874 |
875 | .footer .logo {
876 | margin-bottom: 15px;
877 | }
878 |
879 | .copyright {
880 | color: var(--color-secondary);
881 | line-height: 1.6;
882 | }
883 |
884 | .copyright a {
885 | display: inline-block;
886 | color: var(--main-color);
887 | }
888 |
889 | .copyright a:hover {
890 | text-decoration: underline;
891 | }
892 |
893 | @media (min-width: 550px) {
894 | .contact-list {
895 | display: grid;
896 | grid-template-columns: 1fr 1fr;
897 | }
898 | .container {
899 | max-width: 550px;
900 | margin-inline: auto;
901 | }
902 | .project-list {
903 | -moz-column-count: 2;
904 | column-count: 2;
905 | -moz-column-gap: 25px;
906 | column-gap: 25px;
907 | }
908 | .project-list > li:first-child {
909 | -moz-column-span: all;
910 | column-span: all;
911 | }
912 | }
913 | @media (min-width: 768px) {
914 | .container {
915 | max-width: 720px;
916 | }
917 | .stats-list {
918 | grid-template-columns: 1fr 1fr;
919 | }
920 | .btn-group {
921 | display: flex;
922 | justify-content: flex-start;
923 | align-items: center;
924 | gap: 20px;
925 | }
926 | .about .btn {
927 | max-width: -moz-max-content;
928 | max-width: max-content;
929 | }
930 | .about .btn-secondary {
931 | margin-bottom: 0;
932 | }
933 | .contact-form {
934 | max-width: 450px;
935 | margin-inline: auto;
936 | }
937 | }
938 | @media (min-width: 992px) {
939 | :root {
940 | --fs-2: 3rem;
941 | --section-padding: 100px;
942 | }
943 | .container {
944 | max-width: 980px;
945 | }
946 | .section-content {
947 | position: relative;
948 | padding-left: 40px;
949 | }
950 | .section-subtitle {
951 | position: absolute;
952 | top: 0;
953 | left: 0;
954 | transform: rotate(0.75turn) translateX(-100%);
955 | transform-origin: left top;
956 | margin-bottom: 0;
957 | }
958 | .section-subtitle::after {
959 | top: 15px;
960 | left: auto;
961 | right: calc(100% + 20px);
962 | }
963 | .header {
964 | padding-block: 30px;
965 | }
966 | .header.active {
967 | padding-block: 15px;
968 | }
969 | .navbar-actions {
970 | order: 1;
971 | margin-left: 0;
972 | }
973 | .nav-toggle-btn {
974 | display: none;
975 | }
976 | .navbar {
977 | all: unset;
978 | }
979 | .navbar-link {
980 | transform: translateY(0) !important;
981 | font-size: unset !important;
982 | padding-inline: 5px;
983 | }
984 | .navbar-list > li {
985 | margin: 0;
986 | padding: 0;
987 | overflow: visible;
988 | }
989 | .navbar-list {
990 | display: flex;
991 | justify-content: center;
992 | align-items: center;
993 | gap: 20px;
994 | }
995 | .navbar-link::before {
996 | height: 2px;
997 | }
998 | .hero {
999 | position: relative;
1000 | padding-top: 0;
1001 | height: 100vh;
1002 | }
1003 | .hero-banner {
1004 | max-width: unset;
1005 | height: 100%;
1006 | margin-bottom: 0;
1007 | }
1008 | .hero img {
1009 | height: 100%;
1010 | width: auto;
1011 | margin-inline: auto;
1012 | }
1013 | .hero-content {
1014 | --color-primary: var(--white);
1015 | position: absolute;
1016 | top: 50%;
1017 | filter: drop-shadow(2px 4px 10px var(--black));
1018 | }
1019 | .hero .btn-primary:is(:hover, :focus) {
1020 | color: hsl(0, 0%, 12%);
1021 | }
1022 | .hero-social-list {
1023 | display: block;
1024 | position: absolute;
1025 | bottom: 92px;
1026 | left: -30px;
1027 | }
1028 | .hero-social-list::after {
1029 | content: '';
1030 | position: absolute;
1031 | bottom: -40px;
1032 | left: 13px;
1033 | width: 2px;
1034 | height: 30px;
1035 | background: var(--color-secondary);
1036 | }
1037 | .hero-social-link {
1038 | position: relative;
1039 | color: var(--color-secondary);
1040 | margin-block: 5px;
1041 | padding: 5px;
1042 | font-size: 18px;
1043 | transition: var(--transition-1);
1044 | }
1045 | .hero-social-link:is(:hover, :focus) {
1046 | color: var(--color-primary);
1047 | }
1048 | .hero-social-link .tooltip {
1049 | --trans-x: 10px;
1050 | left: calc(100% + 10px);
1051 | top: 50%;
1052 | transform: translateY(-50%) translateX(var(--trans-x));
1053 | }
1054 | .hero-social-link:is(:hover, :focus) .tooltip {
1055 | --trans-x: 0;
1056 | opacity: 1;
1057 | }
1058 | .scroll-down {
1059 | display: block;
1060 | position: absolute;
1061 | bottom: 80px;
1062 | right: -30px;
1063 | color: var(--color-secondary);
1064 | font-size: 1.125rem;
1065 | text-transform: uppercase;
1066 | transform: rotate(90deg);
1067 | transform-origin: top right;
1068 | }
1069 | .bx-chevron-right {
1070 | border: 1px solid var(--color-secondary);
1071 | border-radius: 20px;
1072 | }
1073 | .scroll-down::after {
1074 | content: '';
1075 | position: absolute;
1076 | top: 8px;
1077 | right: -50px;
1078 | width: 30px;
1079 | height: 2px;
1080 | background: var(--color-secondary);
1081 | }
1082 | .about {
1083 | display: grid;
1084 | grid-template-columns: 1fr 1fr;
1085 | align-items: center;
1086 | gap: 30px;
1087 | }
1088 | .about-banner {
1089 | margin-bottom: 0;
1090 | }
1091 | .skills {
1092 | display: grid;
1093 | grid-template-columns: 1fr 1fr;
1094 | align-items: center;
1095 | gap: 50px;
1096 | }
1097 | .skills-content {
1098 | margin-bottom: 0;
1099 | }
1100 | .skills-toggle {
1101 | margin-inline: 0;
1102 | }
1103 | .project {
1104 | padding-top: 110px;
1105 | }
1106 | .project-list {
1107 | -moz-column-count: 3;
1108 | column-count: 3;
1109 | }
1110 | .project-list > li:first-child {
1111 | -moz-column-span: unset;
1112 | column-span: unset;
1113 | margin: 25px;
1114 | margin-left: 0;
1115 | }
1116 | .contact {
1117 | display: grid;
1118 | grid-template-columns: 1fr 1fr;
1119 | gap: 30px;
1120 | }
1121 | .contact-content {
1122 | margin-bottom: 0;
1123 | }
1124 | .contact-form {
1125 | width: 100%;
1126 | }
1127 | .contact-list {
1128 | margin-left: -40px;
1129 | }
1130 | .footer .container {
1131 | display: flex;
1132 | justify-content: space-between;
1133 | align-items: center;
1134 | }
1135 | }
1136 | @media (min-width: 1200px) {
1137 | .container {
1138 | max-width: 1150px;
1139 | }
1140 | .hero-social-list {
1141 | left: -80px;
1142 | }
1143 | .scroll-down {
1144 | right: -80px;
1145 | }
1146 | .about-banner {
1147 | max-width: 450px;
1148 | }
1149 | }
1150 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
13 |
14 | Zephinax
15 |
16 |
20 |
25 |
26 |
31 |
32 |
33 |
34 |
37 |
70 |
71 |
72 |
73 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
168 |
171 |
175 |
176 |
177 |
178 |
179 | جایی که داستان من شروع شد
180 |
181 |
182 |
183 | ارتباط با من
184 |
185 |
186 |
187 |
211 |
214 |
215 |
216 |
217 |
218 |
222 |
223 |
224 |
درباره من
225 |
226 | با من بیشتر آشنا شو...
227 |
228 |
229 | امیرعلی هستم. یک گیک، وب دولوپر، علاقه مند به لینوکس و نرم افزار
230 | آزاد، برنامه نویس سخت افزار و نرم افزار و عاشق یادگیری و به اشتراک
231 | گذاشتن چیزها. همچنین فعال در حوزه [ دیزاین UI & UX ،هوش مصنوعی
232 | ،امنیت، اینترنت اشیاء، گجت ها، موبایل، کامپیوتر و لپتاپ ] و یکی از
233 | اعضای تیم
234 | زیکادو . تقریبا مسلط به زبان انگلیسی. از کار های چالش برانگیز مثل نصب و
239 | توسعه
240 | کاستوم رام
245 | برای گوشی های اندرویدی و نصب
246 | هکینتاش
251 | خوشم میاد و سعی میکنم چیز های زیادی از طریق حل مشکلات و چالش های
252 | این کار ها یاد بگیرم.
253 |
254 |
270 |
271 |
272 |
273 |
274 |
275 |
مهارت های من
276 |
277 | مهارت های من شامل چه چیزایی میشه؟
278 |
279 |
280 | برای اینکه بتونم ایده های توی ذهنم رو به واقعیت تبدیل کنم باید
281 | چیزهای مختلف زیادی یاد میگرفتم که هنوزم تموم نشده و ادامه داره :)
282 |
283 |
284 |
285 | ابزار ها
286 |
287 |
288 |
292 | مهارت ها
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
HTML5
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
CSS3
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
JavaScript
319 |
320 |
321 |
324 |
325 |
326 |
327 |
328 |
329 |
Tailwind Css
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
Bootstrap
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
PHP
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
Python
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
React
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
React Bootstrap
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
Ducky Script
382 |
383 |
386 |
387 |
388 |
389 |
390 |
391 |
Prompt Engineering
392 |
393 |
396 |
397 |
398 |
399 |
400 |
401 |
SASS
402 |
403 |
404 |
405 |
406 |
407 |
408 |
409 |
491 |
492 |
493 |
494 |
639 |
640 |
641 |
642 |
656 |
657 |
660 |
663 |
664 |
665 |
--------------------------------------------------------------------------------
/cv/assets/css/main.min.css:
--------------------------------------------------------------------------------
1 | /*! tailwindcss v3.2.7 | MIT License | https://tailwindcss.com*/
2 | *,
3 | :after,
4 | :before {
5 | box-sizing: border-box;
6 | border: 0 solid #e5e7eb;
7 | }
8 | :after,
9 | :before {
10 | --tw-content: '';
11 | }
12 | html {
13 | line-height: 1.5;
14 | -webkit-text-size-adjust: 100%;
15 | -moz-tab-size: 4;
16 | -o-tab-size: 4;
17 | tab-size: 4;
18 | font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
19 | Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif,
20 | Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
21 | font-feature-settings: normal;
22 | }
23 | body {
24 | margin: 0;
25 | line-height: inherit;
26 | }
27 | hr {
28 | height: 0;
29 | color: inherit;
30 | border-top-width: 1px;
31 | }
32 | abbr:where([title]) {
33 | -webkit-text-decoration: underline dotted;
34 | text-decoration: underline dotted;
35 | }
36 | h1,
37 | h2,
38 | h3,
39 | h4,
40 | h5,
41 | h6 {
42 | font-size: inherit;
43 | font-weight: inherit;
44 | }
45 | a {
46 | color: inherit;
47 | text-decoration: inherit;
48 | }
49 | b,
50 | strong {
51 | font-weight: bolder;
52 | }
53 | code,
54 | kbd,
55 | pre,
56 | samp {
57 | font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
58 | Liberation Mono, Courier New, monospace;
59 | font-size: 1em;
60 | }
61 | small {
62 | font-size: 80%;
63 | }
64 | sub,
65 | sup {
66 | font-size: 75%;
67 | line-height: 0;
68 | position: relative;
69 | vertical-align: initial;
70 | }
71 | sub {
72 | bottom: -0.25em;
73 | }
74 | sup {
75 | top: -0.5em;
76 | }
77 | table {
78 | text-indent: 0;
79 | border-color: inherit;
80 | border-collapse: collapse;
81 | }
82 | button,
83 | input,
84 | optgroup,
85 | select,
86 | textarea {
87 | font-family: inherit;
88 | font-size: 100%;
89 | font-weight: inherit;
90 | line-height: inherit;
91 | color: inherit;
92 | margin: 0;
93 | padding: 0;
94 | }
95 | button,
96 | select {
97 | text-transform: none;
98 | }
99 | [type='button'],
100 | [type='reset'],
101 | [type='submit'],
102 | button {
103 | -webkit-appearance: button;
104 | background-color: initial;
105 | background-image: none;
106 | }
107 | :-moz-focusring {
108 | outline: auto;
109 | }
110 | :-moz-ui-invalid {
111 | box-shadow: none;
112 | }
113 | progress {
114 | vertical-align: initial;
115 | }
116 | ::-webkit-inner-spin-button,
117 | ::-webkit-outer-spin-button {
118 | height: auto;
119 | }
120 | [type='search'] {
121 | -webkit-appearance: textfield;
122 | outline-offset: -2px;
123 | }
124 | ::-webkit-search-decoration {
125 | -webkit-appearance: none;
126 | }
127 | ::-webkit-file-upload-button {
128 | -webkit-appearance: button;
129 | font: inherit;
130 | }
131 | summary {
132 | display: list-item;
133 | }
134 | blockquote,
135 | dd,
136 | dl,
137 | figure,
138 | h1,
139 | h2,
140 | h3,
141 | h4,
142 | h5,
143 | h6,
144 | hr,
145 | p,
146 | pre {
147 | margin: 0;
148 | }
149 | fieldset {
150 | margin: 0;
151 | }
152 | fieldset,
153 | legend {
154 | padding: 0;
155 | }
156 | menu,
157 | ol,
158 | ul {
159 | list-style: none;
160 | margin: 0;
161 | padding: 0;
162 | }
163 | textarea {
164 | resize: vertical;
165 | }
166 | input::-moz-placeholder,
167 | textarea::-moz-placeholder {
168 | opacity: 1;
169 | color: #9ca3af;
170 | }
171 | input::placeholder,
172 | textarea::placeholder {
173 | opacity: 1;
174 | color: #9ca3af;
175 | }
176 | [role='button'],
177 | button {
178 | cursor: pointer;
179 | }
180 | :disabled {
181 | cursor: default;
182 | }
183 | audio,
184 | canvas,
185 | embed,
186 | iframe,
187 | img,
188 | object,
189 | svg,
190 | video {
191 | display: block;
192 | vertical-align: middle;
193 | }
194 | img,
195 | video {
196 | max-width: 100%;
197 | height: auto;
198 | }
199 | [hidden] {
200 | display: none;
201 | }
202 | @font-face {
203 | font-family: Vazirmatn RD VF;
204 | src: url(../fonts/Vazirmatn-RD%5bwght%5d.woff2) format('woff2');
205 | font-weight: 400;
206 | font-style: normal;
207 | font-display: swap;
208 | }
209 | @font-face {
210 | font-family: Vazirmatn RD;
211 | src: url(../fonts/Vazirmatn-RD-Regular.woff2) format('woff2');
212 | font-weight: 400;
213 | font-style: normal;
214 | font-display: swap;
215 | }
216 | @font-face {
217 | font-family: Vazirmatn RD;
218 | src: url(../fonts/Vazirmatn-RD-Medium.woff2) format('woff2');
219 | font-weight: 500;
220 | font-style: normal;
221 | font-display: swap;
222 | }
223 | @font-face {
224 | font-family: Vazirmatn RD;
225 | src: url(../fonts/Vazirmatn-RD-SemiBold.woff2) format('woff2');
226 | font-weight: 600;
227 | font-style: normal;
228 | font-display: swap;
229 | }
230 | @font-face {
231 | font-family: Vazirmatn RD;
232 | src: url(../fonts/Vazirmatn-RD-Bold.woff2) format('woff2');
233 | font-weight: 700;
234 | font-style: normal;
235 | font-display: swap;
236 | }
237 | html {
238 | font-family: Vazirmatn RD, ui-sans-serif, system-ui, -apple-system,
239 | BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans,
240 | sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol,
241 | Noto Color Emoji;
242 | scroll-behavior: smooth;
243 | }
244 | @supports (font-variation-settings: normal) {
245 | html {
246 | font-family: Vazirmatn RD VF, ui-sans-serif, system-ui, -apple-system,
247 | BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans,
248 | sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol,
249 | Noto Color Emoji !important;
250 | scroll-behavior: smooth;
251 | }
252 | }
253 | *,
254 | ::backdrop,
255 | :after,
256 | :before {
257 | --tw-border-spacing-x: 0;
258 | --tw-border-spacing-y: 0;
259 | --tw-translate-x: 0;
260 | --tw-translate-y: 0;
261 | --tw-rotate: 0;
262 | --tw-skew-x: 0;
263 | --tw-skew-y: 0;
264 | --tw-scale-x: 1;
265 | --tw-scale-y: 1;
266 | --tw-pan-x: ;
267 | --tw-pan-y: ;
268 | --tw-pinch-zoom: ;
269 | --tw-scroll-snap-strictness: proximity;
270 | --tw-ordinal: ;
271 | --tw-slashed-zero: ;
272 | --tw-numeric-figure: ;
273 | --tw-numeric-spacing: ;
274 | --tw-numeric-fraction: ;
275 | --tw-ring-inset: ;
276 | --tw-ring-offset-width: 0px;
277 | --tw-ring-offset-color: #fff;
278 | --tw-ring-color: #3b82f680;
279 | --tw-ring-offset-shadow: 0 0 #0000;
280 | --tw-ring-shadow: 0 0 #0000;
281 | --tw-shadow: 0 0 #0000;
282 | --tw-shadow-colored: 0 0 #0000;
283 | --tw-blur: ;
284 | --tw-brightness: ;
285 | --tw-contrast: ;
286 | --tw-grayscale: ;
287 | --tw-hue-rotate: ;
288 | --tw-invert: ;
289 | --tw-saturate: ;
290 | --tw-sepia: ;
291 | --tw-drop-shadow: ;
292 | --tw-backdrop-blur: ;
293 | --tw-backdrop-brightness: ;
294 | --tw-backdrop-contrast: ;
295 | --tw-backdrop-grayscale: ;
296 | --tw-backdrop-hue-rotate: ;
297 | --tw-backdrop-invert: ;
298 | --tw-backdrop-opacity: ;
299 | --tw-backdrop-saturate: ;
300 | --tw-backdrop-sepia: ;
301 | }
302 | .icon {
303 | height: 1.5rem;
304 | width: 1.5rem;
305 | --tw-text-opacity: 1;
306 | color: rgb(107 114 128 / var(--tw-text-opacity));
307 | }
308 | .icon:hover {
309 | --tw-text-opacity: 1;
310 | color: rgb(75 85 99 / var(--tw-text-opacity));
311 | }
312 | .dark .icon {
313 | --tw-text-opacity: 1;
314 | color: rgb(156 163 175 / var(--tw-text-opacity));
315 | }
316 | .dark .icon:hover {
317 | --tw-text-opacity: 1;
318 | color: rgb(209 213 219 / var(--tw-text-opacity));
319 | }
320 | .exp-menu-container {
321 | display: flex;
322 | flex-direction: column-reverse;
323 | border-style: solid;
324 | --tw-border-opacity: 1;
325 | border-color: rgb(203 213 225 / var(--tw-border-opacity));
326 | }
327 | [dir='ltr'] .exp-menu-container {
328 | margin-left: 0.55rem;
329 | border-left-width: 2px;
330 | padding-left: 0.85rem;
331 | }
332 | [dir='rtl'] .exp-menu-container {
333 | margin-right: 0.55rem;
334 | border-right-width: 2px;
335 | padding-right: 0.85rem;
336 | }
337 | .dark .exp-menu-container {
338 | --tw-border-opacity: 1;
339 | border-color: rgb(51 65 85 / var(--tw-border-opacity));
340 | }
341 | .exp-menu-item {
342 | margin-bottom: 1rem;
343 | }
344 | .exp-menu-item:before {
345 | position: absolute;
346 | height: 1rem;
347 | width: 1rem;
348 | border-radius: 9999px;
349 | --tw-bg-opacity: 1;
350 | background-color: rgb(0 102 255 / var(--tw-bg-opacity));
351 | --tw-shadow: 0 0 0 0.1875rem;
352 | --tw-shadow-colored: 0 0 0 0.1875rem var(--tw-shadow-color);
353 | box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
354 | var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
355 | --tw-shadow-color: #0066ff40;
356 | --tw-shadow: var(--tw-shadow-colored);
357 | --tw-content: '';
358 | content: var(--tw-content);
359 | }
360 | [dir='ltr'] .exp-menu-item:before {
361 | content: var(--tw-content);
362 | margin-left: -1.4rem;
363 | }
364 | [dir='rtl'] .exp-menu-item:before {
365 | content: var(--tw-content);
366 | margin-right: -1.4rem;
367 | }
368 | .tag {
369 | margin: 0.25rem;
370 | border-radius: 9999px;
371 | --tw-bg-opacity: 1;
372 | background-color: rgb(31 41 55 / var(--tw-bg-opacity));
373 | padding: 0.375rem 1rem;
374 | font-size: 0.75rem;
375 | line-height: 1rem;
376 | --tw-text-opacity: 1;
377 | color: rgb(209 213 219 / var(--tw-text-opacity));
378 | }
379 | .dark .tag {
380 | --tw-bg-opacity: 1;
381 | background-color: rgb(55 65 81 / var(--tw-bg-opacity));
382 | }
383 | .btn-cta {
384 | width: 100%;
385 | max-width: 16rem;
386 | border-radius: 1rem;
387 | background-image: linear-gradient(to top right, var(--tw-gradient-stops));
388 | --tw-gradient-from: #176ae5;
389 | --tw-gradient-to: #176ae500;
390 | --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
391 | --tw-gradient-to: #06f;
392 | padding-top: 1rem;
393 | padding-bottom: 1rem;
394 | text-align: center;
395 | font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
396 | Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif,
397 | Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
398 | font-weight: 500;
399 | --tw-text-opacity: 1;
400 | color: rgb(255 255 255 / var(--tw-text-opacity));
401 | --tw-shadow: 0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;
402 | --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color),
403 | 0 4px 6px -4px var(--tw-shadow-color);
404 | box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
405 | var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
406 | --tw-shadow-color: #176ae540;
407 | --tw-shadow: var(--tw-shadow-colored);
408 | }
409 | @supports (font-variation-settings: normal) {
410 | .btn-cta {
411 | font-variation-settings: 'wght' 500;
412 | font-weight: 400;
413 | }
414 | }
415 | [dir='rtl'] .btn-cta {
416 | font-family: Vazirmatn RD VF, Vazirmatn RD;
417 | }
418 | .dark .btn-cta {
419 | --tw-shadow-color: #176ae533;
420 | --tw-shadow: var(--tw-shadow-colored);
421 | }
422 | @media (min-width: 640px) {
423 | .btn-cta {
424 | max-width: none;
425 | }
426 | }
427 | .btn-cta {
428 | font-weight: 500;
429 | }
430 | .progress-bar {
431 | border-radius: 9999px;
432 | background-image: linear-gradient(to top right, var(--tw-gradient-stops));
433 | --tw-gradient-from: #176ae5;
434 | --tw-gradient-to: #176ae500;
435 | --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
436 | --tw-gradient-to: #0080ff;
437 | padding: 0.25rem;
438 | font-size: 0.75rem;
439 | line-height: 1rem;
440 | --tw-text-opacity: 1;
441 | color: rgb(255 255 255 / var(--tw-text-opacity));
442 | }
443 | [dir='ltr'] .progress-bar {
444 | text-align: right;
445 | }
446 | [dir='rtl'] .progress-bar {
447 | text-align: left;
448 | }
449 | .dot-container {
450 | direction: ltr;
451 | }
452 | .dot {
453 | margin-left: 0.25rem;
454 | margin-right: 0.25rem;
455 | display: inline-block;
456 | height: 0.75rem;
457 | width: 0.75rem;
458 | border-radius: 9999px;
459 | --tw-bg-opacity: 1;
460 | background-color: rgb(0 102 255 / var(--tw-bg-opacity));
461 | --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
462 | var(--tw-ring-offset-width) var(--tw-ring-offset-color);
463 | --tw-ring-shadow: var(--tw-ring-inset) 0 0 0
464 | calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
465 | box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
466 | var(--tw-shadow, 0 0 #0000);
467 | --tw-ring-opacity: 1;
468 | --tw-ring-color: rgb(0 102 255 / var(--tw-ring-opacity));
469 | --tw-ring-offset-width: 2px;
470 | }
471 | .dark .dot {
472 | --tw-ring-offset-color: #18181bf2;
473 | }
474 | .dot-null {
475 | margin-left: 0.25rem;
476 | margin-right: 0.25rem;
477 | display: inline-block;
478 | height: 0.75rem;
479 | width: 0.75rem;
480 | border-radius: 9999px;
481 | background-color: initial;
482 | --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
483 | var(--tw-ring-offset-width) var(--tw-ring-offset-color);
484 | --tw-ring-shadow: var(--tw-ring-inset) 0 0 0
485 | calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
486 | box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
487 | var(--tw-shadow, 0 0 #0000);
488 | --tw-ring-opacity: 1;
489 | --tw-ring-color: rgb(0 102 255 / var(--tw-ring-opacity));
490 | --tw-ring-offset-width: 2px;
491 | }
492 | .dark .dot-null {
493 | --tw-ring-offset-color: #18181bf2;
494 | }
495 | .favorite-item {
496 | margin: 0.25rem;
497 | border-radius: 9999px;
498 | --tw-bg-opacity: 1;
499 | background-color: rgb(30 41 59 / var(--tw-bg-opacity));
500 | padding: 0.25rem 1rem;
501 | font-size: 0.875rem;
502 | line-height: 1.25rem;
503 | --tw-text-opacity: 1;
504 | color: rgb(241 245 249 / var(--tw-text-opacity));
505 | }
506 | .dark .favorite-item {
507 | --tw-bg-opacity: 1;
508 | background-color: rgb(19 19 19 / var(--tw-bg-opacity));
509 | }
510 | .dark .favorite-item:hover {
511 | --tw-text-opacity: 1;
512 | color: rgb(226 232 240 / var(--tw-text-opacity));
513 | }
514 | .btn-modal:hover {
515 | cursor: pointer;
516 | opacity: 0.75;
517 | }
518 | .rtl {
519 | direction: rtl;
520 | }
521 | .ltr {
522 | direction: ltr;
523 | }
524 | .fixed {
525 | position: fixed;
526 | }
527 | .relative {
528 | position: relative;
529 | }
530 | .inset-0 {
531 | top: 0;
532 | right: 0;
533 | bottom: 0;
534 | left: 0;
535 | }
536 | .top-\[-0\.35rem\] {
537 | top: -0.35rem;
538 | }
539 | .z-20 {
540 | z-index: 20;
541 | }
542 | .z-30 {
543 | z-index: 30;
544 | }
545 | .m-1 {
546 | margin: 0.25rem;
547 | }
548 | .mx-2 {
549 | margin-left: 0.5rem;
550 | margin-right: 0.5rem;
551 | }
552 | .mx-4 {
553 | margin-left: 1rem;
554 | margin-right: 1rem;
555 | }
556 | .mx-auto {
557 | margin-left: auto;
558 | margin-right: auto;
559 | }
560 | .mb-10 {
561 | margin-bottom: 2.5rem;
562 | }
563 | .mb-2 {
564 | margin-bottom: 0.5rem;
565 | }
566 | .mb-4 {
567 | margin-bottom: 1rem;
568 | }
569 | .mb-6 {
570 | margin-bottom: 1.5rem;
571 | }
572 | .mt-4 {
573 | margin-top: 1rem;
574 | }
575 | .block {
576 | display: block;
577 | }
578 | .inline-block {
579 | display: inline-block;
580 | }
581 | .flex {
582 | display: flex;
583 | }
584 | .inline-flex {
585 | display: inline-flex;
586 | }
587 | .table {
588 | display: table;
589 | }
590 | .grid {
591 | display: grid;
592 | }
593 | .hidden {
594 | display: none;
595 | }
596 | .h-5 {
597 | height: 1.25rem;
598 | }
599 | .h-6 {
600 | height: 1.5rem;
601 | }
602 | .h-9 {
603 | height: 2.25rem;
604 | }
605 | .h-full {
606 | height: 100%;
607 | }
608 | .min-h-screen {
609 | min-height: 100vh;
610 | }
611 | .w-1\/2 {
612 | width: 50%;
613 | }
614 | .w-5 {
615 | width: 1.25rem;
616 | }
617 | .w-6 {
618 | width: 1.5rem;
619 | }
620 | .w-auto {
621 | width: auto;
622 | }
623 | .w-full {
624 | width: 100%;
625 | }
626 | .max-w-7xl {
627 | max-width: 80rem;
628 | }
629 | .max-w-\[16rem\] {
630 | max-width: 16rem;
631 | }
632 | .max-w-\[250px\] {
633 | max-width: 250px;
634 | }
635 | .transform {
636 | transform: translate(var(--tw-translate-x), var(--tw-translate-y))
637 | rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
638 | scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
639 | }
640 | @keyframes fadeInUp {
641 | 0% {
642 | opacity: 0;
643 | transform: translate3d(0, 5vh, 0);
644 | }
645 | to {
646 | opacity: 1;
647 | transform: translateZ(0);
648 | }
649 | }
650 | .animate-fadeInUp {
651 | animation: fadeInUp 1s ease-in-out;
652 | }
653 | .select-none {
654 | -webkit-user-select: none;
655 | -moz-user-select: none;
656 | user-select: none;
657 | }
658 | .grid-cols-1 {
659 | grid-template-columns: repeat(1, minmax(0, 1fr));
660 | }
661 | .flex-row-reverse {
662 | flex-direction: row-reverse;
663 | }
664 | .flex-col {
665 | flex-direction: column;
666 | }
667 | .flex-wrap {
668 | flex-wrap: wrap;
669 | }
670 | .items-end {
671 | align-items: flex-end;
672 | }
673 | .items-center {
674 | align-items: center;
675 | }
676 | .justify-center {
677 | justify-content: center;
678 | }
679 | .justify-between {
680 | justify-content: space-between;
681 | }
682 | .gap-5 {
683 | gap: 1.25rem;
684 | }
685 | .gap-x-4 {
686 | -moz-column-gap: 1rem;
687 | column-gap: 1rem;
688 | }
689 | .gap-x-6 {
690 | -moz-column-gap: 1.5rem;
691 | column-gap: 1.5rem;
692 | }
693 | .gap-y-4 {
694 | row-gap: 1rem;
695 | }
696 | .space-x-2 > :not([hidden]) ~ :not([hidden]) {
697 | --tw-space-x-reverse: 0;
698 | margin-right: calc(0.5rem * var(--tw-space-x-reverse));
699 | margin-left: calc(0.5rem * (1 - var(--tw-space-x-reverse)));
700 | }
701 | .space-y-4 > :not([hidden]) ~ :not([hidden]) {
702 | --tw-space-y-reverse: 0;
703 | margin-top: calc(1rem * (1 - var(--tw-space-y-reverse)));
704 | margin-bottom: calc(1rem * var(--tw-space-y-reverse));
705 | }
706 | .space-y-6 > :not([hidden]) ~ :not([hidden]) {
707 | --tw-space-y-reverse: 0;
708 | margin-top: calc(1.5rem * (1 - var(--tw-space-y-reverse)));
709 | margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));
710 | }
711 | .overflow-hidden {
712 | overflow: hidden;
713 | }
714 | .overflow-y-auto {
715 | overflow-y: auto;
716 | }
717 | .rounded-3xl {
718 | border-radius: 1.5rem;
719 | }
720 | .rounded-\[2rem\] {
721 | border-radius: 2rem;
722 | }
723 | .rounded-full {
724 | border-radius: 9999px;
725 | }
726 | .rounded-lg {
727 | border-radius: 0.5rem;
728 | }
729 | .rounded-b {
730 | border-bottom-right-radius: 0.25rem;
731 | border-bottom-left-radius: 0.25rem;
732 | }
733 | .rounded-t {
734 | border-top-left-radius: 0.25rem;
735 | border-top-right-radius: 0.25rem;
736 | }
737 | .border-b {
738 | border-bottom-width: 1px;
739 | }
740 | .border-t {
741 | border-top-width: 1px;
742 | }
743 | .border-slate-200 {
744 | --tw-border-opacity: 1;
745 | border-color: rgb(226 232 240 / var(--tw-border-opacity));
746 | }
747 | .border-slate-700 {
748 | --tw-border-opacity: 1;
749 | border-color: rgb(51 65 85 / var(--tw-border-opacity));
750 | }
751 | .bg-blue-700 {
752 | --tw-bg-opacity: 1;
753 | background-color: rgb(29 78 216 / var(--tw-bg-opacity));
754 | }
755 | .bg-primary\/25 {
756 | background-color: #0066ff40;
757 | }
758 | .bg-secondary {
759 | --tw-bg-opacity: 1;
760 | background-color: rgb(22 27 37 / var(--tw-bg-opacity));
761 | }
762 | .bg-slate-50 {
763 | --tw-bg-opacity: 1;
764 | background-color: rgb(248 250 252 / var(--tw-bg-opacity));
765 | }
766 | .bg-slate-500 {
767 | --tw-bg-opacity: 1;
768 | background-color: rgb(100 116 139 / var(--tw-bg-opacity));
769 | }
770 | .bg-transparent {
771 | background-color: initial;
772 | }
773 | .bg-white {
774 | --tw-bg-opacity: 1;
775 | background-color: rgb(255 255 255 / var(--tw-bg-opacity));
776 | }
777 | .bg-opacity-75 {
778 | --tw-bg-opacity: 0.75;
779 | }
780 | .p-1 {
781 | padding: 0.25rem;
782 | }
783 | .p-1\.5 {
784 | padding: 0.375rem;
785 | }
786 | .p-5 {
787 | padding: 1.25rem;
788 | }
789 | .p-6 {
790 | padding: 1.5rem;
791 | }
792 | .p-8 {
793 | padding: 2rem;
794 | }
795 | .px-2 {
796 | padding-left: 0.5rem;
797 | padding-right: 0.5rem;
798 | }
799 | .px-4 {
800 | padding-left: 1rem;
801 | padding-right: 1rem;
802 | }
803 | .px-5 {
804 | padding-left: 1.25rem;
805 | padding-right: 1.25rem;
806 | }
807 | .py-3 {
808 | padding-top: 0.75rem;
809 | padding-bottom: 0.75rem;
810 | }
811 | .py-4 {
812 | padding-top: 1rem;
813 | padding-bottom: 1rem;
814 | }
815 | .py-8 {
816 | padding-top: 2rem;
817 | padding-bottom: 2rem;
818 | }
819 | .pb-20 {
820 | padding-bottom: 5rem;
821 | }
822 | .pl-2 {
823 | padding-left: 0.5rem;
824 | }
825 | .pt-4 {
826 | padding-top: 1rem;
827 | }
828 | .text-left {
829 | text-align: left;
830 | }
831 | .text-center {
832 | text-align: center;
833 | }
834 | .align-middle {
835 | vertical-align: middle;
836 | }
837 | .align-bottom {
838 | vertical-align: bottom;
839 | }
840 | .font-sans {
841 | font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
842 | Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif,
843 | Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
844 | }
845 | .text-2xl {
846 | font-size: 1.5rem;
847 | line-height: 2rem;
848 | }
849 | .text-base {
850 | font-size: 1rem;
851 | line-height: 1.5rem;
852 | }
853 | .text-lg {
854 | font-size: 1.125rem;
855 | line-height: 1.75rem;
856 | }
857 | .text-sm {
858 | font-size: 0.875rem;
859 | line-height: 1.25rem;
860 | }
861 | .text-xl {
862 | font-size: 1.25rem;
863 | line-height: 1.75rem;
864 | }
865 | .font-\[500\] {
866 | font-weight: 500;
867 | }
868 | .font-black {
869 | font-weight: 900;
870 | }
871 | .font-bold {
872 | font-weight: 700;
873 | }
874 | .font-medium {
875 | font-weight: 500;
876 | }
877 | .font-semibold {
878 | font-weight: 600;
879 | }
880 | .leading-normal {
881 | line-height: 1.5;
882 | }
883 | .leading-relaxed {
884 | line-height: 1.625;
885 | }
886 | .text-slate-200 {
887 | --tw-text-opacity: 1;
888 | color: rgb(226 232 240 / var(--tw-text-opacity));
889 | }
890 | .text-slate-300 {
891 | --tw-text-opacity: 1;
892 | color: rgb(203 213 225 / var(--tw-text-opacity));
893 | }
894 | .text-slate-400 {
895 | --tw-text-opacity: 1;
896 | color: rgb(148 163 184 / var(--tw-text-opacity));
897 | }
898 | .text-slate-500 {
899 | --tw-text-opacity: 1;
900 | color: rgb(100 116 139 / var(--tw-text-opacity));
901 | }
902 | .text-slate-600 {
903 | --tw-text-opacity: 1;
904 | color: rgb(71 85 105 / var(--tw-text-opacity));
905 | }
906 | .text-slate-700 {
907 | --tw-text-opacity: 1;
908 | color: rgb(51 65 85 / var(--tw-text-opacity));
909 | }
910 | .text-slate-900 {
911 | --tw-text-opacity: 1;
912 | color: rgb(15 23 42 / var(--tw-text-opacity));
913 | }
914 | .text-white {
915 | --tw-text-opacity: 1;
916 | color: rgb(255 255 255 / var(--tw-text-opacity));
917 | }
918 | .antialiased {
919 | -webkit-font-smoothing: antialiased;
920 | -moz-osx-font-smoothing: grayscale;
921 | }
922 | .shadow-md {
923 | --tw-shadow: 0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;
924 | --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color),
925 | 0 2px 4px -2px var(--tw-shadow-color);
926 | }
927 | .shadow-md,
928 | .shadow-xl {
929 | box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
930 | var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
931 | }
932 | .shadow-xl {
933 | --tw-shadow: 0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;
934 | --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color),
935 | 0 8px 10px -6px var(--tw-shadow-color);
936 | }
937 | .transition-all {
938 | transition-property: all;
939 | transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
940 | transition-duration: 0.15s;
941 | }
942 | .transition-colors {
943 | transition-property: color, background-color, border-color,
944 | text-decoration-color, fill, stroke;
945 | transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
946 | transition-duration: 0.15s;
947 | }
948 | .transition-opacity {
949 | transition-property: opacity;
950 | transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
951 | transition-duration: 0.15s;
952 | }
953 | .ease-in {
954 | transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
955 | }
956 | .drag-none {
957 | -webkit-user-drag: none;
958 | -khtml-user-drag: none;
959 | -moz-user-drag: none;
960 | -o-user-drag: none;
961 | }
962 | @supports (font-variation-settings: normal) {
963 | .font-normal {
964 | font-variation-settings: 'wght' 400 !important;
965 | font-weight: 400 !important;
966 | }
967 | .font-medium {
968 | font-variation-settings: 'wght' 500 !important;
969 | font-weight: 400 !important;
970 | }
971 | .font-semibold {
972 | font-variation-settings: 'wght' 600 !important;
973 | font-weight: 400 !important;
974 | }
975 | .font-bold {
976 | font-variation-settings: 'wght' 700 !important;
977 | font-weight: 400 !important;
978 | }
979 | .font-black {
980 | font-variation-settings: 'wght' 900 !important;
981 | font-weight: 400 !important;
982 | }
983 | }
984 | .selection\:bg-\[\#007bff\] ::-moz-selection {
985 | --tw-bg-opacity: 1;
986 | background-color: rgb(0 123 255 / var(--tw-bg-opacity));
987 | }
988 | .selection\:bg-\[\#007bff\] ::selection {
989 | --tw-bg-opacity: 1;
990 | background-color: rgb(0 123 255 / var(--tw-bg-opacity));
991 | }
992 | .selection\:text-white ::-moz-selection {
993 | --tw-text-opacity: 1;
994 | color: rgb(255 255 255 / var(--tw-text-opacity));
995 | }
996 | .selection\:text-white ::selection {
997 | --tw-text-opacity: 1;
998 | color: rgb(255 255 255 / var(--tw-text-opacity));
999 | }
1000 | .selection\:bg-\[\#007bff\]::-moz-selection {
1001 | --tw-bg-opacity: 1;
1002 | background-color: rgb(0 123 255 / var(--tw-bg-opacity));
1003 | }
1004 | .selection\:bg-\[\#007bff\]::selection {
1005 | --tw-bg-opacity: 1;
1006 | background-color: rgb(0 123 255 / var(--tw-bg-opacity));
1007 | }
1008 | .selection\:text-white::-moz-selection {
1009 | --tw-text-opacity: 1;
1010 | color: rgb(255 255 255 / var(--tw-text-opacity));
1011 | }
1012 | .selection\:text-white::selection {
1013 | --tw-text-opacity: 1;
1014 | color: rgb(255 255 255 / var(--tw-text-opacity));
1015 | }
1016 | .hover\:cursor-pointer:hover {
1017 | cursor: pointer;
1018 | }
1019 | .hover\:border-slate-700:hover {
1020 | --tw-border-opacity: 1;
1021 | border-color: rgb(51 65 85 / var(--tw-border-opacity));
1022 | }
1023 | .hover\:bg-blue-800:hover {
1024 | --tw-bg-opacity: 1;
1025 | background-color: rgb(30 64 175 / var(--tw-bg-opacity));
1026 | }
1027 | .hover\:bg-slate-200:hover {
1028 | --tw-bg-opacity: 1;
1029 | background-color: rgb(226 232 240 / var(--tw-bg-opacity));
1030 | }
1031 | .hover\:text-slate-100:hover {
1032 | --tw-text-opacity: 1;
1033 | color: rgb(241 245 249 / var(--tw-text-opacity));
1034 | }
1035 | .hover\:text-slate-900:hover {
1036 | --tw-text-opacity: 1;
1037 | color: rgb(15 23 42 / var(--tw-text-opacity));
1038 | }
1039 | .focus\:border-slate-700:focus {
1040 | --tw-border-opacity: 1;
1041 | border-color: rgb(51 65 85 / var(--tw-border-opacity));
1042 | }
1043 | .focus\:outline-none:focus {
1044 | outline: 2px solid #0000;
1045 | outline-offset: 2px;
1046 | }
1047 | .focus\:ring-4:focus {
1048 | --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
1049 | var(--tw-ring-offset-width) var(--tw-ring-offset-color);
1050 | --tw-ring-shadow: var(--tw-ring-inset) 0 0 0
1051 | calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
1052 | box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
1053 | var(--tw-shadow, 0 0 #0000);
1054 | }
1055 | .focus\:ring-blue-300:focus {
1056 | --tw-ring-opacity: 1;
1057 | --tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity));
1058 | }
1059 | [dir='ltr'] .ltr\:ml-2 {
1060 | margin-left: 0.5rem;
1061 | }
1062 | [dir='ltr'] .ltr\:ml-2\.5 {
1063 | margin-left: 0.625rem;
1064 | }
1065 | [dir='ltr'] .ltr\:ml-auto {
1066 | margin-left: auto;
1067 | }
1068 | [dir='ltr'] .ltr\:mr-2 {
1069 | margin-right: 0.5rem;
1070 | }
1071 | [dir='ltr'] .ltr\:mr-6 {
1072 | margin-right: 1.5rem;
1073 | }
1074 | [dir='ltr'] .ltr\:gap-x-1 {
1075 | -moz-column-gap: 0.25rem;
1076 | column-gap: 0.25rem;
1077 | }
1078 | [dir='ltr'] .ltr\:border-l {
1079 | border-left-width: 1px;
1080 | }
1081 | [dir='ltr'] .ltr\:pl-2 {
1082 | padding-left: 0.5rem;
1083 | }
1084 | [dir='ltr'] .ltr\:pl-4 {
1085 | padding-left: 1rem;
1086 | }
1087 | [dir='ltr'] .ltr\:text-left {
1088 | text-align: left;
1089 | }
1090 | [dir='ltr'] .ltr\:text-right {
1091 | text-align: right;
1092 | }
1093 | [dir='ltr'] .ltr\:focus\:border-l-2:focus,
1094 | [dir='ltr'] .ltr\:hover\:border-l-2:hover {
1095 | border-left-width: 2px;
1096 | }
1097 | [dir='rtl'] .rtl\:ml-2 {
1098 | margin-left: 0.5rem;
1099 | }
1100 | [dir='rtl'] .rtl\:ml-6 {
1101 | margin-left: 1.5rem;
1102 | }
1103 | [dir='rtl'] .rtl\:mr-2 {
1104 | margin-right: 0.5rem;
1105 | }
1106 | [dir='rtl'] .rtl\:mr-2\.5 {
1107 | margin-right: 0.625rem;
1108 | }
1109 | [dir='rtl'] .rtl\:mr-auto {
1110 | margin-right: auto;
1111 | }
1112 | [dir='rtl'] .rtl\:gap-x-2 {
1113 | -moz-column-gap: 0.5rem;
1114 | column-gap: 0.5rem;
1115 | }
1116 | [dir='rtl'] .rtl\:border-r {
1117 | border-right-width: 1px;
1118 | }
1119 | [dir='rtl'] .rtl\:pr-2 {
1120 | padding-right: 0.5rem;
1121 | }
1122 | [dir='rtl'] .rtl\:pr-4 {
1123 | padding-right: 1rem;
1124 | }
1125 | [dir='rtl'] .rtl\:text-left {
1126 | text-align: left;
1127 | }
1128 | [dir='rtl'] .rtl\:text-right {
1129 | text-align: right;
1130 | }
1131 | [dir='rtl'] .rtl\:focus\:border-r-2:focus,
1132 | [dir='rtl'] .rtl\:hover\:border-r-2:hover {
1133 | border-right-width: 2px;
1134 | }
1135 | .dark .dark\:border-slate-600 {
1136 | --tw-border-opacity: 1;
1137 | border-color: rgb(71 85 105 / var(--tw-border-opacity));
1138 | }
1139 | .dark .dark\:border-slate-700 {
1140 | --tw-border-opacity: 1;
1141 | border-color: rgb(51 65 85 / var(--tw-border-opacity));
1142 | }
1143 | .dark .dark\:border-zinc-800 {
1144 | --tw-border-opacity: 1;
1145 | border-color: rgb(39 39 42 / var(--tw-border-opacity));
1146 | }
1147 | .dark .dark\:bg-\[\#131313\] {
1148 | --tw-bg-opacity: 1;
1149 | background-color: rgb(19 19 19 / var(--tw-bg-opacity));
1150 | }
1151 | .dark .dark\:bg-blue-600 {
1152 | --tw-bg-opacity: 1;
1153 | background-color: rgb(37 99 235 / var(--tw-bg-opacity));
1154 | }
1155 | .dark .dark\:bg-gray-800 {
1156 | --tw-bg-opacity: 1;
1157 | background-color: rgb(31 41 55 / var(--tw-bg-opacity));
1158 | }
1159 | .dark .dark\:bg-zinc-900 {
1160 | --tw-bg-opacity: 1;
1161 | background-color: rgb(24 24 27 / var(--tw-bg-opacity));
1162 | }
1163 | .dark .dark\:bg-zinc-900\/90 {
1164 | background-color: #18181be6;
1165 | }
1166 | .dark .dark\:text-slate-200 {
1167 | --tw-text-opacity: 1;
1168 | color: rgb(226 232 240 / var(--tw-text-opacity));
1169 | }
1170 | .dark .dark\:text-slate-400 {
1171 | --tw-text-opacity: 1;
1172 | color: rgb(148 163 184 / var(--tw-text-opacity));
1173 | }
1174 | .dark .dark\:hover\:border-slate-200:hover {
1175 | --tw-border-opacity: 1;
1176 | border-color: rgb(226 232 240 / var(--tw-border-opacity));
1177 | }
1178 | .dark .dark\:hover\:bg-blue-700:hover {
1179 | --tw-bg-opacity: 1;
1180 | background-color: rgb(29 78 216 / var(--tw-bg-opacity));
1181 | }
1182 | .dark .dark\:hover\:bg-slate-600:hover {
1183 | --tw-bg-opacity: 1;
1184 | background-color: rgb(71 85 105 / var(--tw-bg-opacity));
1185 | }
1186 | .dark .dark\:hover\:text-slate-200:hover {
1187 | --tw-text-opacity: 1;
1188 | color: rgb(226 232 240 / var(--tw-text-opacity));
1189 | }
1190 | .dark .dark\:hover\:text-white:hover {
1191 | --tw-text-opacity: 1;
1192 | color: rgb(255 255 255 / var(--tw-text-opacity));
1193 | }
1194 | .dark .dark\:focus\:ring-blue-900:focus {
1195 | --tw-ring-opacity: 1;
1196 | --tw-ring-color: rgb(30 58 138 / var(--tw-ring-opacity));
1197 | }
1198 | @media (min-width: 640px) {
1199 | .sm\:m-0 {
1200 | margin: 0;
1201 | }
1202 | .sm\:mx-6 {
1203 | margin-left: 1.5rem;
1204 | margin-right: 1.5rem;
1205 | }
1206 | .sm\:my-8 {
1207 | margin-top: 2rem;
1208 | margin-bottom: 2rem;
1209 | }
1210 | .sm\:block {
1211 | display: block;
1212 | }
1213 | .sm\:inline-block {
1214 | display: inline-block;
1215 | }
1216 | .sm\:flex {
1217 | display: flex;
1218 | }
1219 | .sm\:hidden {
1220 | display: none;
1221 | }
1222 | .sm\:h-screen {
1223 | height: 100vh;
1224 | }
1225 | .sm\:w-auto {
1226 | width: auto;
1227 | }
1228 | .sm\:w-full {
1229 | width: 100%;
1230 | }
1231 | .sm\:max-w-xl {
1232 | max-width: 36rem;
1233 | }
1234 | .sm\:grid-cols-2 {
1235 | grid-template-columns: repeat(2, minmax(0, 1fr));
1236 | }
1237 | .sm\:flex-row {
1238 | flex-direction: row;
1239 | }
1240 | .sm\:items-center {
1241 | align-items: center;
1242 | }
1243 | .sm\:justify-around {
1244 | justify-content: space-around;
1245 | }
1246 | .sm\:p-0 {
1247 | padding: 0;
1248 | }
1249 | .sm\:align-middle {
1250 | vertical-align: middle;
1251 | }
1252 | .sm\:items-unset {
1253 | align-items: unset;
1254 | }
1255 | }
1256 | @media (min-width: 1024px) {
1257 | .lg\:sticky {
1258 | position: sticky;
1259 | }
1260 | .lg\:top-8 {
1261 | top: 2rem;
1262 | }
1263 | .lg\:mb-4 {
1264 | margin-bottom: 1rem;
1265 | }
1266 | .lg\:w-\[16rem\] {
1267 | width: 16rem;
1268 | }
1269 | .lg\:grid-cols-3 {
1270 | grid-template-columns: repeat(3, minmax(0, 1fr));
1271 | }
1272 | .lg\:flex-row {
1273 | flex-direction: row;
1274 | }
1275 | .lg\:flex-col {
1276 | flex-direction: column;
1277 | }
1278 | .lg\:px-10 {
1279 | padding-left: 2.5rem;
1280 | padding-right: 2.5rem;
1281 | }
1282 | .lg\:py-8 {
1283 | padding-top: 2rem;
1284 | padding-bottom: 2rem;
1285 | }
1286 | .lg\:text-2xl {
1287 | font-size: 1.5rem;
1288 | line-height: 2rem;
1289 | }
1290 | }
1291 |
--------------------------------------------------------------------------------