diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..ab561f3
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,9 @@
+root = true
+
+[*]
+indent_style = space
+indent_size = 2
+charset = utf-8
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5fd356f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,25 @@
+# Logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+# Directories
+.vscode/*
+.idea
+logs
+node_modules
+dist
+dist-ssr
+
+# Files
+*.local
+!.vscode/extensions.json
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/README.md b/README.md
deleted file mode 100644
index 5c5d8b8..0000000
--- a/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# rsschool-cv
-**Preview:** https://quiddlee.github.io/rsschool-cv
\ No newline at end of file
diff --git a/css/style.css b/css/style.css
deleted file mode 100644
index e69de29..0000000
diff --git a/cv.md b/cv.md
deleted file mode 100644
index 0e89842..0000000
--- a/cv.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# **Bogdan Scherbina** | **Frontend Developer**
-
-# **Contact:**
-+ **E-mail** **-** bogdanscherbinadev@gmail.com
-+ **Telegram** **-** [t.me/quiddle](https://t.me/quiddle)
-+ **Tel.** **-** +38 (099)-674-4615
-
-# **About**
-I enjoy implementing aesthetically pleasing interfaces, and to pay extra attention to details such as animations or UX.
-
-RS School is the place where i can learn more, practice much more and grow further as a developer, so I am super excited to be part of that event.
-
-# **Skills**
-+ **TypeScript**
-+ **JavaScript**
-+ **Css**
-+ **HTML**
-+ **BEM**
-+ **Git/GitHub**
-+ **VSCode/WebStorm**
-
-# **Education**
-**Donbass State Engineering Academy**
-Bachelor's degree, Information systems and technologies
-Sept. 2022 - present
-
-# **Certificates**
-+ [Understanding TypeScript](https://www.udemy.com/certificate/UC-38671e3c-a60b-4a6b-b340-15f707d10cb7/)
-+ [Modern TypeScript Full course](https://www.udemy.com/certificate/UC-63323c8e-e298-4b0e-aca5-31f8bbd21ee0/)
-+ [Advanced JavaScript](https://www.udemy.com/certificate/UC-972d9b88-32b5-414f-8782-4ad0197103e6/)
-+ [Advanced CSS and Sass: Flexbox, Grid, Animations and More!](https://www.udemy.com/certificate/UC-9051b2f9-c30a-4d38-b0d4-b860e7abe014/)
-+ [HTML/Css Technologies](https://www.udemy.com/certificate/UC-df2abf76-de53-43b0-a630-46e8b1402a7b/)
-+ [The EF Standard English Test (EF SET)](https://www.efset.org/cert/2JhWMH)
-
-# **Languages**
-**English** - B2 (Upper Intermediate)
\ No newline at end of file
diff --git a/font.css b/font.css
new file mode 100644
index 0000000..92b83f6
--- /dev/null
+++ b/font.css
@@ -0,0 +1,7 @@
+@font-face {
+ font-family: "Google Sans";
+ src: url("//fonts.gstatic.com/s/googlesans/v58/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIKln.woff2"),
+ url("//fonts.gstatic.com/s/googlesans/v58/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrwEIKln.woff2");
+ font-weight: 400;
+ font-style: normal;
+}
diff --git a/img/Aw2YEp9Z_2x.jpg b/img/Aw2YEp9Z_2x.jpg
deleted file mode 100644
index d88cac3..0000000
Binary files a/img/Aw2YEp9Z_2x.jpg and /dev/null differ
diff --git a/img/SVG/mail.svg b/img/SVG/mail.svg
new file mode 100644
index 0000000..d258946
--- /dev/null
+++ b/img/SVG/mail.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/img/SVG/phone.svg b/img/SVG/phone.svg
new file mode 100644
index 0000000..a8174e5
--- /dev/null
+++ b/img/SVG/phone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/img/SVG/telegram.svg b/img/SVG/telegram.svg
new file mode 100644
index 0000000..60cf930
--- /dev/null
+++ b/img/SVG/telegram.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/img/cv.png b/img/cv.png
new file mode 100644
index 0000000..5288da4
Binary files /dev/null and b/img/cv.png differ
diff --git a/img/favicon.png b/img/favicon.png
new file mode 100644
index 0000000..cf4d0d4
Binary files /dev/null and b/img/favicon.png differ
diff --git a/img/icons.svg b/img/icons.svg
new file mode 100644
index 0000000..f67d0a6
--- /dev/null
+++ b/img/icons.svg
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/img/portfolio-preview/SushiSushi.jpg b/img/portfolio-preview/SushiSushi.jpg
new file mode 100644
index 0000000..68cf43b
Binary files /dev/null and b/img/portfolio-preview/SushiSushi.jpg differ
diff --git a/img/portfolio-preview/cinemania-preview.gif b/img/portfolio-preview/cinemania-preview.gif
new file mode 100644
index 0000000..d8330a9
Binary files /dev/null and b/img/portfolio-preview/cinemania-preview.gif differ
diff --git a/img/portfolio-preview/css-dinner-preview.png b/img/portfolio-preview/css-dinner-preview.png
new file mode 100644
index 0000000..22ad884
Binary files /dev/null and b/img/portfolio-preview/css-dinner-preview.png differ
diff --git a/img/portfolio-preview/forkify-preview.jpg b/img/portfolio-preview/forkify-preview.jpg
new file mode 100644
index 0000000..d75e817
Binary files /dev/null and b/img/portfolio-preview/forkify-preview.jpg differ
diff --git a/img/portfolio-preview/graphiql-preview.png b/img/portfolio-preview/graphiql-preview.png
new file mode 100644
index 0000000..64bb619
Binary files /dev/null and b/img/portfolio-preview/graphiql-preview.png differ
diff --git a/img/portfolio-preview/minesweeper-preview.gif b/img/portfolio-preview/minesweeper-preview.gif
new file mode 100644
index 0000000..a619d5d
Binary files /dev/null and b/img/portfolio-preview/minesweeper-preview.gif differ
diff --git a/index.css b/index.css
new file mode 100644
index 0000000..e539fad
--- /dev/null
+++ b/index.css
@@ -0,0 +1,816 @@
+:root {
+ --color-secondary-light: #f8f8ff;
+ --color-tertiary-light: #fff;
+ --color-grey-dark-light: #363636;
+ --color-grey-lightest-light: #707070;
+ --switch-icon-light: '🌚';
+
+ --color-secondary-dark: #0F0F0F;
+ --color-tertiary-dark: #0A0A0A;
+ --color-grey-dark-dark: #d0d0d0;
+ --color-grey-lightest-dark: #a2a2a2;
+ --switch-icon-dark: '🌞';
+
+ --color-primary: #ffcc01;
+ --color-secondary: var(--color-secondary-light);
+ --color-tertiary: var(--color-tertiary-light);
+
+ --color-grey-dark: var(--color-grey-dark-light);
+ --color-grey-lightest: var(--color-grey-lightest-light);
+ --switch-icon: var(--switch-icon-light);
+
+ --color-grey-shadow: #0000004d;
+
+ --theme-switch-width: 6rem;
+}
+
+*,
+*::after,
+*::before {
+ margin: 0;
+ padding: 0;
+ box-sizing: inherit;
+}
+
+html {
+ font-size: 62.5%;
+ box-sizing: border-box;
+ scroll-behavior: smooth;
+}
+
+.body {
+ font-family: Google Sans, sans-serif;
+ font-weight: 400;
+ line-height: 1.4;
+ background-color: var(--color-secondary);
+}
+
+.app {
+ color: var(--color-grey-dark);
+ font-size: 1.8rem;
+ background-image: linear-gradient(
+ to right, var(--color-secondary) 61%, var(--color-tertiary) 10%
+ );
+
+ @media only screen and (max-width: 62.5em) {
+ font-size: 1.5rem;
+ }
+
+ @media only screen and (max-width: 50em) {
+ font-size: 1.2rem;
+ }
+
+ @media only screen and (max-width: 37.5em) {
+ background-image: none;
+ background-color: var(--color-tertiary);
+ }
+}
+
+.mt-3 {
+ margin-top: 3rem;
+
+ @media only screen and (max-width: 62.5em) {
+ margin-top: 1.5rem;
+ }
+
+ @media only screen and (max-width: 50em) {
+ margin-top: 1rem;
+ }
+}
+
+.mt-8 {
+ margin-top: 8rem;
+
+ @media print {
+ margin-top: 1.3cm;
+ }
+
+ @media only screen and (max-width: 62.5em) {
+ margin-top: 6rem;
+ }
+
+ @media only screen and (max-width: 50em) {
+ margin-top: 4rem;
+ }
+
+ @media only screen and (max-width: 37.5em) {
+ margin-top: 0;
+ }
+}
+
+.link--secondary {
+ color: var(--color-grey-dark);
+}
+
+.link {
+ position: relative;
+
+ &:after {
+ content: '';
+ position: absolute;
+ width: 100%;
+ transform: scaleX(0);
+ height: 2px;
+ bottom: 0;
+ left: 0;
+ background-color: var(--color-primary);
+ transform-origin: bottom right;
+ transition: transform 0.25s ease-out;
+ }
+
+ &:hover::after {
+ transform: scaleX(1);
+ transform-origin: bottom left;
+ }
+}
+
+.title {
+ color: var(--color-primary);
+ font-weight: 700;
+ text-transform: uppercase;
+ font-size: 3.5rem;
+ line-height: 3rem;
+ letter-spacing: .5rem;
+
+ @media print {
+ font-size: 22.5pt;
+ }
+
+ @media only screen and (max-width: 62.5em) {
+ font-size: 2.5rem;
+ }
+
+ @media only screen and (max-width: 50em) {
+ font-size: 2rem;
+ letter-spacing: .3rem;
+ }
+}
+
+.theme-switch {
+ position: absolute;
+ height: 0;
+ width: 0;
+ opacity: 0;
+}
+
+.theme-switch:checked ~ .app {
+ --color-secondary: var(--color-secondary-dark);
+ --color-tertiary: var(--color-tertiary-dark);
+
+ --color-grey-dark: var(--color-grey-dark-dark);
+ --color-grey-lightest: var(--color-grey-lightest-dark);
+ --switch-icon: var(--switch-icon-dark);
+}
+
+.theme-switch:checked ~ .app .switch-label:before {
+ /* 2rem - switch width; .6rem - padding left + right*/
+ translate: calc(var(--theme-switch-width) - 2rem - .6rem);
+}
+
+.switch-label {
+ display: flex;
+ align-items: center;
+
+ padding: .3rem;
+
+ position: absolute;
+ top: 3rem;
+ right: 5rem;
+
+ width: var(--theme-switch-width);
+ height: 3rem;
+
+ cursor: pointer;
+ background-color: var(--color-primary);
+ border-radius: 100rem;
+ font-size: 2rem;
+
+ @media print {
+ display: none;
+ }
+
+ @media only screen and (max-width: 50em) {
+ font-size: 1.2rem;
+
+ width: 4rem;
+ height: 2rem;
+
+ top: 2.5rem;
+ right: 7rem;
+ }
+
+ @media only screen and (max-width: 37.5em) {
+ right: unset;
+ top: 2.5rem;
+ left: 2.5rem;
+ }
+
+ &:before {
+ content: var(--switch-icon);
+ transition: .3s;
+ }
+}
+
+.navigation__checkbox:checked ~ .navigation__background {
+ scale: 90;
+}
+
+.navigation__checkbox:checked ~ .navigation__nav {
+ opacity: 1;
+ visibility: visible;
+ width: 100%;
+}
+
+.navigation__checkbox:checked + .navigation__btn .burger-label__icon {
+ background-color: transparent;
+}
+
+.navigation__checkbox:checked + .navigation__btn .burger-label__icon:after {
+ top: 1.9rem;
+ rotate: -135deg;
+ transition: .5s all cubic-bezier(.23, .45, .18, 1.20);
+}
+
+.navigation__checkbox:checked + .navigation__btn .burger-label__icon:before {
+ top: 1.9rem;
+ rotate: 135deg;
+ transition: .5s all cubic-bezier(.23, .45, .18, 1.20);
+}
+
+.navigation {
+ .navigation__checkbox {
+ display: none;
+ }
+
+ .navigation__nav {
+ position: fixed;
+ opacity: 0;
+ visibility: hidden;
+ width: 0;
+ height: 100dvh;
+ z-index: 200;
+ transition: all 0.8s cubic-bezier(0.68, -0.55, 0.265, 1.75);
+
+ .navigation__list {
+ display: grid;
+ justify-items: center;
+ align-content: center;
+ gap: 2rem;
+
+ position: absolute;
+ inset: 0;
+ margin: auto;
+
+ .navigation__item {
+ list-style: none;
+ font-size: 2.3rem;
+
+ .navigation__link,
+ .navigation__num {
+ color: var(--color-grey-dark-light);
+ }
+
+ .navigation__link {
+ text-decoration: none;
+ text-transform: uppercase;
+ margin-left: .5rem;
+
+ &:active {
+
+ }
+ }
+ }
+ }
+ }
+
+ .navigation__background {
+ display: none;
+ position: fixed;
+ right: 2rem;
+ top: 2rem;
+
+ border-radius: 100rem;
+ background-color: var(--color-primary);
+ scale: 1;
+
+ height: 3rem;
+ width: 3rem;
+
+ z-index: 100;
+ transition: all .7s cubic-bezier(0.86, 0, 0.07, 1);
+
+ @media only screen and (max-width: 50em) {
+ display: unset;
+ }
+ }
+}
+
+.navigation__btn {
+ display: none;
+
+ position: fixed;
+ top: 1.5rem;
+ right: 1.5rem;
+
+ width: 4rem;
+ height: 4rem;
+ border-radius: 100rem;
+ z-index: 300;
+
+ background-color: var(--color-secondary);
+ box-shadow: .1rem .3rem 3.5rem var(--color-grey-shadow);
+
+ .burger-label__icon {
+ display: block;
+ height: .16rem;
+ width: 1.7rem;
+ background-color: var(--color-primary);
+
+ &:after,
+ &:before {
+ content: '';
+ display: block;
+ position: absolute;
+ height: inherit;
+ width: inherit;
+ background-color: var(--color-primary);
+ transition: .35s all cubic-bezier(.23, .45, .18, 1.17);
+ }
+
+ &:before {
+ top: 1.4rem;
+ }
+
+ &:after {
+ bottom: 1.4rem;
+ }
+ }
+
+ @media only screen and (max-width: 50em) {
+ display: grid;
+ justify-content: center;
+ align-items: center;
+ }
+}
+
+.container {
+ position: relative;
+ display: grid;
+ grid-template-columns: [main-start] 1fr [main-end aside-start] .6fr [aside-end];
+
+ max-width: 131rem;
+ padding: 10rem 5rem;
+ margin: 0 auto;
+ column-gap: 15rem;
+
+ background-image: linear-gradient(
+ to right, var(--color-secondary) 61%, var(--color-tertiary) 10%
+ );
+
+ grid-template-areas:
+ "header image"
+ "contact image"
+ "profile aside"
+ "experience aside"
+ "certificates .";
+
+ @media print {
+ padding: 1.5cm 8mm;
+ column-gap: 8mm;
+
+ grid-template-areas:
+ "header image"
+ "contact aside"
+ "profile aside"
+ "experience aside"
+ "certificates .";
+ }
+
+ @media only screen and (max-width: 75em) {
+ grid-template-columns: [main-start] 1fr [main-end aside-start] .6fr [aside-end];
+ column-gap: 7rem;
+ }
+
+ @media only screen and (max-width: 50em) {
+ grid-template-columns: [main-start] 1fr [main-end aside-start] .6fr [aside-end];
+ column-gap: 3rem;
+ padding: 7rem 2.5rem;
+ }
+
+ @media only screen and (max-width: 37.5em) {
+ grid-template-columns: [main-start] 1fr [main-end];
+ grid-template-areas:
+ "header"
+ "image"
+ "contact"
+ "profile"
+ "experience"
+ "aside"
+ "certificates";
+
+ justify-content: center;
+ align-items: center;
+ gap: 4rem;
+ background-image: unset;
+ padding-top: 8rem;
+ }
+}
+
+.main {
+ padding: 10rem 5rem;
+ background-color: var(--color-secondary);
+
+ @media only screen and (max-width: 50em) {
+ padding: 7rem 3rem;
+ }
+}
+
+.aside {
+ display: grid;
+ margin-left: 2rem;
+ grid-area: aside;
+ align-content: start;
+
+ @media only screen and (max-width: 37.5em) {
+ margin-left: 0;
+ gap: inherit;
+ }
+}
+
+.list {
+ display: grid;
+ gap: 2rem;
+
+ @media only screen and (max-width: 50em) {
+ gap: 1rem;
+ }
+
+ .list__item {
+ font-weight: 700;
+ list-style: none;
+
+ &:before {
+ content: '▪';
+ color: var(--color-primary);
+ margin-right: 2rem;
+ }
+
+ @media only screen and (max-width: 37.5em) {
+ &:before {
+ margin-right: 1.2rem;
+ }
+ }
+ }
+}
+
+.resources {
+ display: grid;
+ gap: .5rem;
+
+ .resources__resource {
+ text-decoration: none;
+ color: var(--color-grey-lightest);
+ }
+}
+
+.header {
+ grid-area: header;
+
+ .header__heading,
+ .header__surname {
+ font-size: 5.5rem;
+ text-transform: uppercase;
+ line-height: 5.3rem;
+ max-width: 70rem;
+
+ @media print {
+ font-size: 26.25pt;
+ line-height: 8mm;
+ }
+
+ @media only screen and (max-width: 75em) {
+ font-size: 3.5rem;
+ max-width: 50rem;
+ line-height: 4.4rem;
+ }
+
+ @media only screen and (max-width: 50em) {
+ font-size: 2.5rem;
+ max-width: 30rem;
+ line-height: 3rem;
+ }
+
+ @media only screen and (max-width: 37.5em) {
+ font-size: 2.45rem;
+ line-height: 2.4rem;
+ }
+ }
+
+ .header__sub-heading {
+ letter-spacing: .7rem;
+ font-size: 3.5rem;
+ font-weight: 400;
+
+ @media print {
+ font-size: 11.25pt;
+ }
+
+ @media only screen and (max-width: 75em) {
+ font-size: 2.5rem;
+ }
+
+ @media only screen and (max-width: 50em) {
+ font-size: 1.5rem;
+ letter-spacing: .3rem;
+ }
+ }
+}
+
+.contact {
+ margin-top: 10rem;
+ display: flex;
+ align-items: center;
+ gap: 2.5rem;
+
+ grid-area: contact;
+
+ @media print {
+ margin-top: -2cm;
+ }
+
+ @media only screen and (max-width: 62.5em) {
+ margin-top: 8rem;
+ }
+
+ @media only screen and (max-width: 50em) {
+ margin-top: 6rem;
+ gap: 1.5rem;
+ }
+
+ @media only screen and (max-width: 37.5em) {
+ margin-top: 1rem;
+ }
+
+ .contact__icons {
+ padding: .5rem 0;
+ display: grid;
+ align-items: center;
+ justify-content: center;
+
+ border: .35rem solid var(--color-primary);
+ border-radius: 10rem;
+
+ min-width: 3.7rem;
+ min-height: 11.5rem;
+
+ @media only screen and (max-width: 62.5em) {
+ min-width: 3.3rem;
+ min-height: 10rem;
+ }
+
+ @media only screen and (max-width: 50em) {
+ border-width: .3rem;
+ min-width: 2.7rem;
+ min-height: 8rem;
+ }
+ }
+
+ .contact__icon {
+ max-width: 1.8rem;
+ max-height: 1.8rem;
+
+ @media only screen and (max-width: 50em) {
+ width: 1.2rem;
+ }
+ }
+}
+
+.profile {
+ grid-area: profile;
+}
+
+.experience {
+ grid-area: experience;
+
+ .experience__projects-wrapper {
+ display: grid;
+ gap: 2rem;
+ }
+
+ .experience__project__link {
+ text-decoration: none;
+ color: inherit;
+ }
+
+ .experience__project__description {
+ margin-top: 1rem;
+ }
+
+ .experience__project__preview {
+ margin-top: 3rem;
+ width: 100%;
+ border-radius: .6rem;
+ box-shadow: 0 0 2rem var(--color-grey-shadow);
+ }
+
+ .minesweeper-image {
+ width: 50%;
+
+ @media only screen and (max-width: 37.5em) {
+ width: 60%;
+ }
+ }
+}
+
+.certificates {
+ grid-area: certificates;
+}
+
+.image {
+ position: relative;
+ grid-area: image;
+
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ width: 30rem;
+ height: 30rem;
+
+ border-radius: 100rem;
+ border: .5rem solid var(--color-secondary);
+
+ @media print {
+ width: 5.3cm;
+ height: 5.3cm;
+ }
+
+ @media only screen and (max-width: 62.5em) {
+ width: 20rem;
+ height: 20rem;
+ }
+
+ @media only screen and (max-width: 37.5em) {
+ justify-self: right;
+ }
+
+ &:before {
+ content: '';
+
+ display: block;
+ position: absolute;
+ bottom: 3rem;
+ left: 2rem;
+
+ width: 10%;
+ height: 10%;
+
+ border-radius: 100rem;
+ background-color: var(--color-primary);
+ }
+
+ @media only screen and (max-width: 62.5em) {
+ &:before {
+ bottom: 1rem;
+ }
+ }
+
+ @media print {
+ &:before {
+ bottom: 2.5mm;
+ }
+ }
+
+ &:after {
+ content: '';
+
+ position: absolute;
+ border-radius: 10rem;
+
+ right: -2.8%;
+ bottom: 49.5%;
+
+ width: 1rem;
+ height: .9rem;
+
+ background-color: var(--color-primary);
+ }
+
+ @media only screen and (max-width: 62.5em) {
+ &:after {
+ width: .5rem;
+ right: -2.35%;
+ bottom: 49%;
+ }
+ }
+
+ @media only screen and (max-width: 50em) {
+ &:after {
+ right: -2.5%;
+ }
+ }
+
+ @media only screen and (max-width: 37.5em) {
+ &:after {
+ right: -2.6%;
+ }
+ }
+
+ @media print {
+ &:after {
+ width: 1mm;
+ right: -1.3mm;
+ bottom: 49%;
+ }
+ }
+
+ .image__semicircle {
+ position: absolute;
+ left: -.2rem;
+ bottom: -.2rem;
+
+ width: inherit;
+ height: inherit;
+
+ border: 1rem solid var(--color-primary);
+ border-radius: 100rem;
+
+ clip-path: circle(50% at 100% 0);
+
+ @media only screen and (max-width: 62.5em) {
+ border: .5rem solid var(--color-primary);
+ left: -.5rem;
+ bottom: -.5rem;
+ }
+
+ @media print {
+ border: 1.3mm solid var(--color-primary);
+ left: -1.3mm;
+ bottom: -1.3mm;
+ }
+ }
+
+ .image__rounder {
+ position: absolute;
+ top: -.7rem;
+ right: 47%;
+ border-radius: 10rem;
+
+ width: 1rem;
+ height: .9rem;
+
+ background-color: var(--color-primary);
+
+ @media only screen and (max-width: 62.5em) {
+ width: .5rem;
+ height: .5rem;
+ top: -2.5%;
+ right: 49%;
+ }
+
+ @media only screen and (max-width: 37.5em) {
+ top: -.5rem;
+ }
+
+ @media print {
+ width: 1.3mm;
+ height: 1.3mm;
+ top: -1.37mm;
+ right: 49%;
+ }
+ }
+
+ .image__frame {
+ display: flex;
+ justify-content: center;
+ align-items: end;
+
+ width: 80%;
+ height: 80%;
+
+ background-color: var(--color-primary);
+ border-radius: 100rem;
+
+ overflow: hidden;
+ }
+
+ .image__photo {
+ width: 70%;
+ }
+}
+
+.education {
+ margin-top: 10rem;
+
+ @media only screen and (max-width: 37.5em) {
+ margin-top: 0;
+ }
+
+ .education__university__year {
+ color: var(--color-grey-lightest)
+ }
+
+ .education__university__degree-major {
+ font-weight: 300;
+ }
+}
diff --git a/index.html b/index.html
index e69de29..db9ede1 100644
--- a/index.html
+++ b/index.html
@@ -0,0 +1,283 @@
+
+
+
+
+
+
+
+
+
+
+ CV // Bohdan Shcherbyna
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ profile
+ I enjoy building interactive web applications with aesthetically pleasing
+ interfaces,
+ and with paying extra attention to details such as animations or UX
+
+
+
+
+ experience
+
+
+
+
+ GraphiQL - your dream IDE
+
+
+
+
+
+ Cinemania - Dive Into The Movie Wonderland!
+
+
+
+
+
+ SushiSushi - Is not just your regular food delivery; it's a
+ culinary journey to Japan's finest flavors, delivered to your doorstep 😉 🏆 One of the best
+ RS2023Q1
+ graduation
+ projects!
+
+
+
+
+
+ 10 Levels to practice your css selecting skills! Exciting
+ game with modern design and super smooth animations!
+
+
+
+
+
+ A modern remake of a classic Minesweeper game! Beautiful
+ design,
+ animations and nice gameplay!
+
+
+
+
+
+ A Recipe Finding Web Application! Beautiful application where
+ you can find ANY recipe you want or even ADD your own one!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ education
+
+
+ 2022 - Present
+ Bachelor's degree Information systems and technologies
+
+ Donbass State Engineering Academy
+
+
+
+
+ language
+
+
+ English
+ Ukrainian
+ Russian
+
+
+
+
+ skills
+
+
+ Next.js
+ React
+ Node.js
+ TypeScript
+ JavaScript
+ Css
+ HTML
+ Git/GitHub
+
+
+
+
+
+
+
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..3dcf8ef
--- /dev/null
+++ b/index.js
@@ -0,0 +1,24 @@
+'use strict';
+
+const themeSwitchCheckbox = document.getElementById('theme-switch');
+const navigationList = document.querySelector('.navigation__list');
+const navButton = document.querySelector('.navigation__btn');
+const currTheme = localStorage.getItem('theme');
+themeSwitchCheckbox.checked = currTheme === 'dark';
+
+function handleThemeSwitchStateSave(e) {
+ const themeToggler = e.target;
+ const isThemeToggled = themeToggler.checked;
+
+ localStorage.setItem('theme', isThemeToggled ? 'dark' : 'light');
+}
+
+function handleCloseNavOnAnchorClick(e) {
+ const element = e.target;
+ const isAnchorLink = element?.classList.contains('navigation__link');
+
+ if (isAnchorLink) navButton.click();
+}
+
+themeSwitchCheckbox.addEventListener('input', handleThemeSwitchStateSave);
+navigationList.addEventListener('click', handleCloseNavOnAnchorClick);