diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..4c7ff40 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5502 +} diff --git a/assets/css/style.css b/assets/css/style.css index e3bafef..fcf81bd 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -2,21 +2,15 @@ #style.css \*-----------------------------------*/ - /** * copyright 2022 @codewithsadee */ - - - - /*-----------------------------------*\ #CUSTOM PROPERTY \*-----------------------------------*/ :root { - /** * colors */ @@ -24,39 +18,53 @@ /* gradient */ --bg-gradient-onyx: linear-gradient( - to bottom right, - hsl(240, 1%, 25%) 3%, + to bottom right, + hsl(240, 1%, 25%) 3%, hsl(0, 0%, 19%) 97% ); --bg-gradient-jet: linear-gradient( - to bottom right, - hsla(240, 1%, 18%, 0.251) 0%, - hsla(240, 2%, 11%, 0) 100% - ), hsl(240, 2%, 13%); + to bottom right, + hsla(240, 1%, 18%, 0.251) 0%, + hsla(240, 2%, 11%, 0) 100% + ), + hsl(240, 2%, 13%); + --btn-bg-gradient-jet: linear-gradient( + to bottom right, + hsla(240, 1%, 18%, 0.251) 0%, + hsla(240, 2%, 11%, 0) 100% + ), + hsl(240, 2%, 13%); --bg-gradient-yellow-1: linear-gradient( - to bottom right, - hsl(45, 100%, 71%) 0%, + to bottom right, + hsl(45, 100%, 71%) 0%, hsla(36, 100%, 69%, 0) 50% ); --bg-gradient-yellow-2: linear-gradient( - 135deg, - hsla(45, 100%, 71%, 0.251) 0%, - hsla(35, 100%, 68%, 0) 59.86% - ), hsl(240, 2%, 13%); + 135deg, + hsla(45, 100%, 71%, 0.251) 0%, + hsla(35, 100%, 68%, 0) 59.86% + ), + hsl(240, 2%, 13%); --border-gradient-onyx: linear-gradient( - to bottom right, - hsl(0, 0%, 25%) 0%, + to bottom right, + hsl(0, 0%, 25%) 0%, + hsla(0, 0%, 25%, 0) 50% + ); + --show-more-bg-gradient-onyx: linear-gradient( + to bottom right, + hsl(0, 0%, 25%) 0%, hsla(0, 0%, 25%, 0) 50% ); --text-gradient-yellow: linear-gradient( - to right, - hsl(45, 100%, 72%), + to right, + hsl(45, 100%, 72%), hsl(35, 100%, 68%) ); /* solid */ --jet: hsl(0, 0%, 22%); + --skills-bg-jet: hsl(0, 0%, 22%); --onyx: hsl(240, 1%, 17%); --eerie-black-1: hsl(240, 2%, 13%); --eerie-black-2: hsl(240, 2%, 12%); @@ -64,17 +72,26 @@ --white-1: hsl(0, 0%, 100%); --white-2: hsl(0, 0%, 98%); --orange-yellow-crayola: hsl(45, 100%, 72%); + --icon-color: hsl(45, 100%, 72%); + --title-orange-yellow-crayola: hsl(45, 100%, 72%); + + --nav-bg-color: hsla(240, 1%, 17%, 0.75); --vegas-gold: hsl(45, 54%, 58%); + --nav-light-gray: hsl(0, 0%, 84%); --light-gray: hsl(0, 0%, 84%); + --nav-link-active: hsl(45, 100%, 72%); --light-gray-70: hsla(0, 0%, 84%, 0.7); --bittersweet-shimmer: hsl(0, 43%, 51%); + --map-box-filter: grayscale(1) invert(1); + --clint-logo-filter-hover: none; + --clint-logo-filter: grayscale(1); /** * typography */ /* font-family */ - --ff-poppins: 'Poppins', sans-serif; + --ff-poppins: "Poppins", sans-serif; /* font-size */ --fs-1: 24px; @@ -95,7 +112,7 @@ /** * shadow */ - + --shadow-1: -4px 8px 24px hsla(0, 0%, 0%, 0.25); --shadow-2: 0 16px 30px hsla(0, 0%, 0%, 0.25); --shadow-3: 0 16px 40px hsla(0, 0%, 0%, 0.25); @@ -108,28 +125,126 @@ --transition-1: 0.25s ease; --transition-2: 0.5s ease-in-out; - } +/*-----------------------------------*\ + #APPLAYING LIGHT MODE +\*-----------------------------------*/ + +.light-mode { + --jet: #ffcd6b; + --skills-bg-jet: #ded0b6db; + + --eerie-black-2: #fff9ef; + --onyx: #f4ebdbdb; + --icon-color: #c67a01; + --nav-bg-color: linear-gradient( + to bottom right, + hsl(36, 46%, 75%) 3%, + hsl(50, 43%, 68%) 97% + ); + + --nav-light-gray: hsl(0, 0%, 99%); + --light-gray: #403f3f; + --light-gray-70: #6d6b6b; + --nav-link-active: #000; + --menu-bar-text: hsl(0, 0%, 99%); + --bg-gradient-jet: #f4ebdb; + --text-orange-yellow-crayola: #6d6b6b; + --title-orange-yellow-crayola: #efa125; + --orange-yellow-crayola: hsl(0, 0%, 99%); + --active-link-color: #000; + --smoky-black: #f9f7f7; + --white-1: hsl(0, 2%, 10%); + --white-2: hsl(0, 1%, 20%); + --eerie-black-1: #f0e3ce; + --map-box-filter: none; + --ops-text-color: #fff; + --clint-logo-filter-hover: invert(73%) sepia(70%) saturate(6168%) + hue-rotate(16deg) brightness(94%) contrast(50%); + --clint-logo-filter: invert(61%) sepia(0%) saturate(96%) hue-rotate(191deg) + brightness(94%) contrast(82%); + --bg-gradient-onyx: linear-gradient( + to bottom right, + hsl(36, 46%, 75%) 3%, + hsl(50, 43%, 68%) 97% + ); + --btn-bg-gradient-jet: linear-gradient( + to bottom right, + hsl(36, 46%, 75%) 3%, + hsl(50, 43%, 68%) 97% + ); + --bg-gradient-yellow-1: linear-gradient( + to bottom right, + hsl(36, 81%, 77%) 3%, + hsl(51, 79%, 74%) 97% + ); + --bg-gradient-yellow-2: linear-gradient( + 135deg, + hsl(36, 81%, 77%) 3%, + hsl(51, 48%, 64%) 97% + ), + hsl(36, 81%, 77%); + --menu-gradient-onyx: linear-gradient( + to bottom right, + #ebe1cb, + hsl(50, 43%, 68%) 97% + ); + --border-gradient-onyx: linear-gradient( + to bottom right, + #d7c596, + #e9e9e9 100% + ); + --show-more-bg-gradient-onyx: linear-gradient( + to bottom right, + hsl(36, 46%, 75%) 0%, + hsl(51, 59%, 73%) 10% + ); + --gradient-yellow: linear-gradient( + to right, + hsl(39, 93%, 69%), + hsl(35, 90%, 54%) + ); + color: black; + --nav-link-active: #000; + --shadow-1: 0px 4px 14px hsla(0, 0%, 0%, 0.1); + --shadow-2: -4px 8px 24px hsla(0, 0%, 0%, 0.1); + --shadow-3: 0 16px 40px hsla(0, 0%, 0%, 0.1); + --shadow-4: 0 25px 50px hsla(0, 0%, 0%, 0.05); + --shadow-5: 0 24px 80px hsla(0, 0%, 0%, 0.1); +} /*-----------------------------------*\ #RESET \*-----------------------------------*/ -*, *::before, *::after { +*, +*::before, +*::after { margin: 0; padding: 0; box-sizing: border-box; } -a { text-decoration: none; } +a { + text-decoration: none; +} -li { list-style: none; } +li { + list-style: none; +} -img, ion-icon, a, button, time, span { display: block; } +img, +ion-icon, +a, +button, +time, +span { + display: block; +} button { font: inherit; @@ -139,7 +254,8 @@ button { cursor: pointer; } -input, textarea { +input, +textarea { display: block; width: 100%; background: none; @@ -147,19 +263,22 @@ input, textarea { } ::selection { - background: var(--orange-yellow-crayola); - color: var(--smoky-black); + background: var(--text-orange-yellow-crayola); + /* Change the background color of the selected text */ + color: var(--eerie-black-2); } -:focus { outline-color: var(--orange-yellow-crayola); } - -html { font-family: var(--ff-poppins); } - -body { background: var(--smoky-black); } - - +:focus { + outline-color: var(--orange-yellow-crayola); +} +html { + font-family: var(--ff-poppins); +} +body { + background: var(--smoky-black); +} /*-----------------------------------*\ #REUSED STYLE @@ -197,9 +316,8 @@ article { z-index: 1; } /* social-media icons */ -.socials-icons{ - color: var(--orange-yellow-crayola); - +.socials-icons { + color: var(--icon-color); } .icon-box::before { @@ -211,9 +329,50 @@ article { z-index: -1; } -.icon-box ion-icon { --ionicon-stroke-width: 35px; } +.icon-box ion-icon { + --ionicon-stroke-width: 35px; + color: var(--icon-color); +} -article { display: none; } +/* Dark mode Light mode */ + +.mode-toggle-btn { + height: 25px; + width: 45px; + overflow: hidden; + padding-inline: 2px; + display: flex; + align-items: center; + position: absolute; + right: 10px; + bottom: 10px; + transition: var(--transition-2); + background: var(--eerie-black-2); + border-radius: 20px; + border: solid 1px var(--jet); +} +.toggle-mode { + background: var(--bg-gradient-onyx); + display: flex; + border-radius: inherit; + justify-content: center; + border: 1px solid var(--jet); + padding: 3px; + transform: translateX(18px); + transition: var(--transition-1); +} +.toggle-mode img { + height: 13px; +} + +.toggle-mode.light-mode { + transform: translateX(0); + transition: 0.3s ease-in-out; +} + +article { + display: none; +} article.active { display: block; @@ -221,8 +380,12 @@ article.active { } @keyframes fade { - 0% { opacity: 0; } - 100% { opacity: 1; } + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } } .h2, @@ -233,11 +396,17 @@ article.active { text-transform: capitalize; } -.h2 { font-size: var(--fs-1); } +.h2 { + font-size: var(--fs-1); +} -.h3 { font-size: var(--fs-2); } +.h3 { + font-size: var(--fs-2); +} -.h4 { font-size: var(--fs-4); } +.h4 { + font-size: var(--fs-4); +} .h5 { font-size: var(--fs-7); @@ -271,11 +440,13 @@ article.active { } .has-scrollbar::-webkit-scrollbar-thumb { - background: var(--orange-yellow-crayola); + background: var(--text-gradient-yellow); border-radius: 5px; } -.has-scrollbar::-webkit-scrollbar-button { width: 20px; } +.has-scrollbar::-webkit-scrollbar-button { + width: 20px; +} .content-card { position: relative; @@ -297,10 +468,6 @@ article.active { z-index: -1; } - - - - /*-----------------------------------*\ #MAIN \*-----------------------------------*/ @@ -311,22 +478,21 @@ main { min-width: 259px; } - - - - /*-----------------------------------*\ #SIDEBAR \*-----------------------------------*/ .sidebar { + position: relative; margin-bottom: 15px; max-height: 112px; overflow: hidden; transition: var(--transition-2); } -.sidebar.active { max-height: 405px; } +.sidebar.active { + max-height: 405px; +} .sidebar-info { position: relative; @@ -366,7 +532,7 @@ main { border-radius: 0 15px; font-size: 13px; color: var(--orange-yellow-crayola); - background: var(--border-gradient-onyx); + background: var(--show-more-bg-gradient-onyx); padding: 10px; box-shadow: var(--shadow-2); transition: var(--transition-1); @@ -378,18 +544,24 @@ main { position: absolute; inset: 1px; border-radius: inherit; - background: var(--bg-gradient-jet); + background: var(--btn-bg-gradient-jet); transition: var(--transition-1); z-index: -1; } .info_more-btn:hover, -.info_more-btn:focus { background: var(--bg-gradient-yellow-1); } +.info_more-btn:focus { + background: var(--bg-gradient-yellow-1); +} .info_more-btn:hover::before, -.info_more-btn:focus::before { background: var(--bg-gradient-yellow-2); } +.info_more-btn:focus::before { + background: var(--bg-gradient-yellow-2); +} -.info_more-btn span { display: none; } +.info_more-btn span { + display: none; +} .sidebar-info_more { opacity: 0; @@ -432,7 +604,9 @@ main { font-size: var(--fs-7); } -.contact-info address { font-style: normal; } +.contact-info address { + font-style: normal; +} .social-list { display: flex; @@ -448,12 +622,9 @@ main { font-size: 18px; } - -.social-item .social-link:hover { color: var(--light-gray); } - - - - +.social-item .social-link:hover { + color: var(--light-gray); +} /*-----------------------------------*\ #NAVBAR @@ -464,7 +635,7 @@ main { bottom: 0; left: 0; width: 100%; - background: hsla(240, 1%, 17%, 0.75); + background: var(--nav-bg-color); backdrop-filter: blur(10px); border: 1px solid var(--jet); border-radius: 12px 12px 0 0; @@ -481,26 +652,28 @@ main { } .navbar-link { - color: var(--light-gray); + color: var(--nav-light-gray); font-size: var(--fs-8); padding: 20px 7px; transition: color var(--transition-1); } .navbar-link:hover, -.navbar-link:focus { color: var(--light-gray-70); } - -.navbar-link.active { color: var(--orange-yellow-crayola); } - - - +.navbar-link:focus { + color: var(--light-gray); +} +.navbar-link.active { + color: var(--nav-link-active); +} /*-----------------------------------*\ #ABOUT \*-----------------------------------*/ -.about .article-title { margin-bottom: 15px; } +.about .article-title { + margin-bottom: 15px; +} .about-text { color: var(--light-gray); @@ -509,17 +682,21 @@ main { line-height: 1.6; } -.about-text p { margin-bottom: 15px; } - - +.about-text p { + margin-bottom: 15px; +} /** * #service */ -.service { margin-bottom: 35px; } +.service { + margin-bottom: 35px; +} -.service-title { margin-bottom: 20px; } +.service-title { + margin-bottom: 20px; +} .service-list { display: grid; @@ -545,13 +722,21 @@ main { z-index: -1; } -.service-icon-box { margin-bottom: 10px; } +.service-icon-box { + margin-bottom: 10px; +} -.service-icon-box img { margin: auto; } +.service-icon-box svg { + margin: auto; +} -.service-content-box { text-align: center; } +.service-content-box { + text-align: center; +} -.service-item-title { margin-bottom: 7px; } +.service-item-title { + margin-bottom: 7px; +} .service-item-text { color: var(--light-gray); @@ -560,14 +745,17 @@ main { line-height: 1.6; } - /** * #testimonials */ -.testimonials { margin-bottom: 30px; } +.testimonials { + margin-bottom: 30px; +} -.testimonials-title { margin-bottom: 20px; } +.testimonials-title { + margin-bottom: 20px; +} .testimonials-list { display: flex; @@ -598,7 +786,9 @@ main { box-shadow: var(--shadow-1); } -.testimonials-item-title { margin-bottom: 7px; } +.testimonials-item-title { + margin-bottom: 7px; +} .testimonials-text { color: var(--light-gray); @@ -612,7 +802,6 @@ main { overflow: hidden; } - /** * #testimonials-modal */ @@ -633,7 +822,9 @@ main { visibility: hidden; } -.modal-container::-webkit-scrollbar { display: none; } +.modal-container::-webkit-scrollbar { + display: none; +} .modal-container.active { pointer-events: all; @@ -696,9 +887,13 @@ main { } .modal-close-btn:hover, -.modal-close-btn:focus { opacity: 1; } +.modal-close-btn:focus { + opacity: 1; +} -.modal-close-btn ion-icon { --ionicon-stroke-width: 50px; } +.modal-close-btn ion-icon { + --ionicon-stroke-width: 50px; +} .modal-avatar-box { background: var(--bg-gradient-onyx); @@ -708,9 +903,13 @@ main { box-shadow: var(--shadow-2); } -.modal-img-wrapper > img { display: none; } +.modal-img-wrapper > svg { + display: none; +} -.modal-title { margin-bottom: 4px; } +.modal-title { + margin-bottom: 4px; +} .modal-content time { font-size: var(--fs-6); @@ -726,12 +925,13 @@ main { line-height: 1.6; } - /** * #clients */ -.clients { margin-bottom: 15px; } +.clients { + margin-bottom: 15px; +} .clients-list { display: flex; @@ -755,28 +955,29 @@ main { .clients-item img { width: 100%; - filter: grayscale(1); - transition: var(--transition-1); + filter: var(--clint-logo-filter); + /* transition: var(--transition-1); */ } -.clients-item img:hover { filter: grayscale(0); } - - - - +.clients-item img:hover { + filter: var(--clint-logo-filter-hover); +} /*-----------------------------------*\ #RESUME \*-----------------------------------*/ -.article-title { margin-bottom: 30px; } - +.article-title { + margin-bottom: 30px; +} /** * education and experience */ -.timeline { margin-bottom: 30px; } +.timeline { + margin-bottom: 30px; +} .timeline .title-wrapper { display: flex; @@ -790,9 +991,13 @@ main { margin-left: 45px; } -.timeline-item { position: relative; } +.timeline-item { + position: relative; +} -.timeline-item:not(:last-child) { margin-bottom: 20px; } +.timeline-item:not(:last-child) { + margin-bottom: 20px; +} .timeline-item-title { font-size: var(--fs-6); @@ -823,9 +1028,9 @@ main { left: -33px; height: 6px; width: 6px; - background: var(--text-gradient-yellow); + background: var(--icon-color); border-radius: 50%; - box-shadow: 0 0 0 4px var(--jet); + box-shadow: 0 0 0 4px var(--skills-bg-jet); } .timeline-text { @@ -834,17 +1039,21 @@ main { line-height: 1.6; } - /** * skills */ -.skills-title { margin-bottom: 20px; } - -.skills-list { padding: 20px; } +.skills-title { + margin-bottom: 20px; +} +.skills-list { + padding: 20px; +} -.skills-item:not(:last-child) { margin-bottom: 15px; } +.skills-item:not(:last-child) { + margin-bottom: 15px; +} .skill .title-wrapper { display: flex; @@ -860,7 +1069,7 @@ main { } .skill-progress-bg { - background: var(--jet); + background: var(--skills-bg-jet); width: 100%; height: 8px; border-radius: 10px; @@ -872,15 +1081,13 @@ main { border-radius: inherit; } - - - - /*-----------------------------------*\ #PORTFOLIO \*-----------------------------------*/ -.filter-list { display: none; } +.filter-list { + display: none; +} .filter-select-box { position: relative; @@ -901,7 +1108,9 @@ main { font-weight: var(--fw-300); } -.filter-select.active .select-icon { transform: rotate(0.5turn); } +.filter-select.active .select-icon { + transform: rotate(0.5turn); +} .select-list { background: var(--eerie-black-2); @@ -935,7 +1144,9 @@ main { border-radius: 8px; } -.select-item button:hover { --eerie-black-2: hsl(240, 2%, 20%); } +.select-item button:hover { + --eerie-black-2: var(--jet); +} .project-list { display: grid; @@ -944,7 +1155,9 @@ main { margin-bottom: 10px; } -.project-item { display: none; } +.project-item { + display: none; +} .project-item.active { display: block; @@ -952,11 +1165,17 @@ main { } @keyframes scaleUp { - 0% { transform: scale(0.5); } - 100% { transform: scale(1); } + 0% { + transform: scale(0.5); + } + 100% { + transform: scale(1); + } } -.project-item > a { width: 100%; } +.project-item > a { + width: 100%; +} .project-img { position: relative; @@ -979,13 +1198,14 @@ main { transition: var(--transition-1); } -.project-item > a:hover .project-img::before { background: hsla(0, 0%, 0%, 0.5); } +.project-item > a:hover .project-img::before { + background: hsla(0, 0%, 0%, 0.5); +} .project-item-icon-box { --scale: 0.8; - - background: var(--jet); - color: var(--orange-yellow-crayola); + background: var(--onyx); + color: var(--icon-color); position: absolute; top: 50%; left: 50%; @@ -1003,19 +1223,26 @@ main { opacity: 1; } -.project-item-icon-box ion-icon { --ionicon-stroke-width: 50px; } +.project-item-icon-box ion-icon { + --ionicon-stroke-width: 50px; +} .project-img img { width: 100%; height: 100%; object-fit: cover; + transition: var(--transition-1); } -.project-item > a:hover img { transform: scale(1.1); } +.project-item > a:hover img { + transform: scale(1.1); +} .project-title, -.project-category { margin-left: 10px; } +.project-category { + margin-left: 10px; +} .project-title { color: var(--white-2); @@ -1031,15 +1258,13 @@ main { font-weight: var(--fw-300); } - - - - /*-----------------------------------*\ #BLOG \*-----------------------------------*/ -.blog-posts { margin-bottom: 10px; } +.blog-posts { + margin-bottom: 10px; +} .blog-posts-list { display: grid; @@ -1079,9 +1304,13 @@ main { transition: var(--transition-1); } -.blog-post-item > a:hover .blog-banner-box img { transform: scale(1.1); } +.blog-post-item > a:hover .blog-banner-box img { + transform: scale(1.1); +} -.blog-content { padding: 15px; } +.blog-content { + padding: 15px; +} .blog-meta { display: flex; @@ -1110,7 +1339,9 @@ main { transition: var(--transition-1); } -.blog-post-item > a:hover .blog-item-title { color: var(--orange-yellow-crayola); } +.blog-post-item > a:hover .blog-item-title { + color: var(--title-orange-yellow-crayola); +} .blog-text { color: var(--light-gray); @@ -1119,10 +1350,6 @@ main { line-height: 1.6; } - - - - /*-----------------------------------*\ #CONTACT \*-----------------------------------*/ @@ -1137,18 +1364,24 @@ main { overflow: hidden; } -.mapbox figure { height: 100%; } +.mapbox figure { + height: 100%; +} .mapbox iframe { width: 100%; height: 100%; border: none; - filter: grayscale(1) invert(1); + filter: var(--map-box-filter); } -.contact-form { margin-bottom: 10px; } +.contact-form { + margin-bottom: 10px; +} -.form-title { margin-bottom: 20px; } +.form-title { + margin-bottom: 20px; +} .input-wrapper { display: grid; @@ -1167,9 +1400,13 @@ main { outline: none; } -.form-input::placeholder { font-weight: var(--fw-500); } +.form-input::placeholder { + font-weight: var(--fw-500); +} -.form-input:focus { border-color: var(--orange-yellow-crayola); } +.form-input:focus { + border-color: var(--orange-yellow-crayola); +} textarea.form-input { min-height: 100px; @@ -1179,15 +1416,19 @@ textarea.form-input { margin-bottom: 25px; } -textarea.form-input::-webkit-resizer { display: none; } +textarea.form-input::-webkit-resizer { + display: none; +} -.form-input:focus:invalid { border-color: var(--bittersweet-shimmer); } +.form-input:focus:invalid { + border-color: var(--bittersweet-shimmer); +} .form-btn { position: relative; width: 100%; background: var(--border-gradient-onyx); - color: var(--orange-yellow-crayola); + color: var(--nav-link-active); display: flex; justify-content: center; align-items: center; @@ -1211,24 +1452,31 @@ textarea.form-input::-webkit-resizer { display: none; } transition: var(--transition-1); } -.form-btn ion-icon { font-size: 16px; } +.form-btn ion-icon { + font-size: 16px; + color: var(--icon-color); +} -.form-btn:hover { background: var(--bg-gradient-yellow-1); } +.form-btn:hover { + background: var(--bg-gradient-yellow-1); +} -.form-btn:hover::before { background: var(--bg-gradient-yellow-2); } +.form-btn:hover::before { + background: var(--bg-gradient-yellow-2); +} .form-btn:disabled { opacity: 0.7; cursor: not-allowed; } -.form-btn:disabled:hover { background: var(--border-gradient-onyx); } - -.form-btn:disabled:hover::before { background: var(--bg-gradient-jet); } - - - +.form-btn:disabled:hover { + background: var(--border-gradient-onyx); +} +.form-btn:disabled:hover::before { + background: var(--bg-gradient-jet); +} /*-----------------------------------*\ #RESPONSIVE @@ -1239,40 +1487,34 @@ textarea.form-input::-webkit-resizer { display: none; } */ @media (min-width: 450px) { - /** * client */ - .clients-item { min-width: calc(33.33% - 10px); } - - + .clients-item { + min-width: calc(33.33% - 10px); + } /** * #PORTFOLIO, BLOG */ .project-img, - .blog-banner-box { height: auto; } - + .blog-banner-box { + height: auto; + } } - - - - /** * responsive larger than 580px screen */ @media (min-width: 580px) { - /** * CUSTOM PROPERTY */ :root { - /** * typography */ @@ -1284,16 +1526,14 @@ textarea.form-input::-webkit-resizer { display: none; } --fs-6: 15px; --fs-7: 15px; --fs-8: 12px; - } - - /** * #REUSED STYLE */ - .sidebar, article { + .sidebar, + article { width: 520px; margin-inline: auto; padding: 30px; @@ -1316,8 +1556,6 @@ textarea.form-input::-webkit-resizer { display: none; } font-size: 18px; } - - /** * #MAIN */ @@ -1327,8 +1565,6 @@ textarea.form-input::-webkit-resizer { display: none; } margin-bottom: 100px; } - - /** * #SIDEBAR */ @@ -1338,17 +1574,29 @@ textarea.form-input::-webkit-resizer { display: none; } margin-bottom: 30px; } - .sidebar.active { max-height: 584px; } + .sidebar.active { + max-height: 584px; + } - .sidebar-info { gap: 25px; } + .sidebar-info { + gap: 25px; + } - .avatar-box { border-radius: 30px; } + .avatar-box { + border-radius: 30px; + } - .avatar-box img { width: 120px; } + .avatar-box img { + width: 120px; + } - .info-content .name { margin-bottom: 15px; } + .info-content .name { + margin-bottom: 15px; + } - .info-content .title { padding: 5px 18px; } + .info-content .title { + padding: 5px 18px; + } .info_more-btn { top: -30px; @@ -1361,38 +1609,50 @@ textarea.form-input::-webkit-resizer { display: none; } font-size: var(--fs-8); } - .info_more-btn ion-icon { display: none; } + .info_more-btn ion-icon { + display: none; + } - .separator { margin: 32px 0; } + .separator { + margin: 32px 0; + } - .contacts-list { gap: 20px; } + .contacts-list { + gap: 20px; + } .contact-info { max-width: calc(100% - 64px); width: calc(100% - 64px); } - - /** * #NAVBAR */ - .navbar { border-radius: 20px 20px 0 0; } - - .navbar-list { gap: 20px; } - - .navbar-link { --fs-8: 14px; } + .navbar { + border-radius: 20px 20px 0 0; + } + .navbar-list { + gap: 20px; + } + .navbar-link { + --fs-8: 14px; + } /** * #ABOUT */ - .about .article-title { margin-bottom: 20px; } + .about .article-title { + margin-bottom: 20px; + } - .about-text { margin-bottom: 40px; } + .about-text { + margin-bottom: 40px; + } /* service */ @@ -1409,11 +1669,15 @@ textarea.form-input::-webkit-resizer { display: none; } margin-top: 5px; } - .service-content-box { text-align: left; } + .service-content-box { + text-align: left; + } /* testimonials */ - .testimonials-title { margin-bottom: 25px; } + .testimonials-title { + margin-bottom: 25px; + } .testimonials-list { gap: 30px; @@ -1432,7 +1696,9 @@ textarea.form-input::-webkit-resizer { display: none; } border-radius: 20px; } - .testimonials-avatar-box img { width: 80px; } + .testimonials-avatar-box img { + width: 80px; + } .testimonials-item-title { margin-bottom: 10px; @@ -1446,7 +1712,9 @@ textarea.form-input::-webkit-resizer { display: none; } /* testimonials modal */ - .modal-container { padding: 20px; } + .modal-container { + padding: 20px; + } .testimonials-modal { display: flex; @@ -1468,9 +1736,11 @@ textarea.form-input::-webkit-resizer { display: none; } margin-bottom: 0; } - .modal-avatar-box img { width: 65px; } + .modal-avatar-box img { + width: 65px; + } - .modal-img-wrapper > img { + .modal-img-wrapper > svg { display: block; flex-grow: 1; width: 35px; @@ -1485,17 +1755,21 @@ textarea.form-input::-webkit-resizer { display: none; } scroll-padding-inline: 45px; } - .clients-item { min-width: calc(33.33% - 35px); } - - + .clients-item { + min-width: calc(33.33% - 35px); + } /** * #RESUME */ - .timeline-list { margin-left: 65px; } + .timeline-list { + margin-left: 65px; + } - .timeline-item:not(:last-child)::before { left: -40px; } + .timeline-item:not(:last-child)::before { + left: -40px; + } .timeline-item::after { height: 8px; @@ -1503,21 +1777,26 @@ textarea.form-input::-webkit-resizer { display: none; } left: -43px; } - .skills-item:not(:last-child) { margin-bottom: 25px; } - - + .skills-item:not(:last-child) { + margin-bottom: 25px; + } /** * #PORTFOLIO, BLOG */ - .project-img, .blog-banner-box { border-radius: 16px; } - - .blog-posts-list { gap: 30px; } - - .blog-content { padding: 25px; } + .project-img, + .blog-banner-box { + border-radius: 16px; + } + .blog-posts-list { + gap: 30px; + } + .blog-content { + padding: 25px; + } /** * #CONTACT @@ -1533,38 +1812,41 @@ textarea.form-input::-webkit-resizer { display: none; } margin-bottom: 30px; } - .form-input { padding: 15px 20px; } + .form-input { + padding: 15px 20px; + } - textarea.form-input { margin-bottom: 30px; } + textarea.form-input { + margin-bottom: 30px; + } .form-btn { --fs-6: 16px; padding: 16px 20px; } - .form-btn ion-icon { font-size: 18px; } - + .form-btn ion-icon { + font-size: 18px; + } } - - - - /** * responsive larger than 768px screen */ @media (min-width: 768px) { - /** * REUSED STYLE */ - .sidebar, article { width: 700px; } - - .has-scrollbar::-webkit-scrollbar-button { width: 100px; } - + .sidebar, + article { + width: 700px; + } + .has-scrollbar::-webkit-scrollbar-button { + width: 100px; + } /** * SIDEBAR @@ -1575,15 +1857,13 @@ textarea.form-input::-webkit-resizer { display: none; } gap: 30px 15px; } - - /** * NAVBAR */ - .navbar-link { --fs-8: 15px; } - - + .navbar-link { + --fs-8: 15px; + } /** * ABOUT @@ -1596,17 +1876,21 @@ textarea.form-input::-webkit-resizer { display: none; } max-width: 680px; } - .modal-avatar-box img { width: 80px; } - - + .modal-avatar-box img { + width: 80px; + } /** * PORTFOLIO */ - .article-title { padding-bottom: 20px; } + .article-title { + padding-bottom: 20px; + } - .filter-select-box { display: none; } + .filter-select-box { + display: none; + } .filter-list { display: flex; @@ -1623,45 +1907,45 @@ textarea.form-input::-webkit-resizer { display: none; } transition: var(--transition-1); } - .filter-item button:hover { color: var(--light-gray-70); } + .filter-item button:hover { + color: var(--light-gray-70); + } - .filter-item button.active { color: var(--orange-yellow-crayola); } + .filter-item button.active { + color: var(--icon-color); + } /* portfolio and blog grid */ - .project-list, .blog-posts-list { grid-template-columns: 1fr 1fr; } - - + .project-list, + .blog-posts-list { + grid-template-columns: 1fr 1fr; + } /** * CONTACT */ - .input-wrapper { grid-template-columns: 1fr 1fr; } + .input-wrapper { + grid-template-columns: 1fr 1fr; + } .form-btn { width: max-content; margin-left: auto; } - } - - - - /** * responsive larger than 1024px screen */ @media (min-width: 1024px) { - /** * CUSTOM PROPERTY */ :root { - /** * shadow */ @@ -1669,27 +1953,29 @@ textarea.form-input::-webkit-resizer { display: none; } --shadow-1: -4px 8px 24px hsla(0, 0%, 0%, 0.125); --shadow-2: 0 16px 30px hsla(0, 0%, 0%, 0.125); --shadow-3: 0 16px 40px hsla(0, 0%, 0%, 0.125); - } - - + .mode-toggle-btn { + bottom: 10px; + top: auto; + } /** * REUSED STYLE */ - .sidebar, article { + .sidebar, + article { width: 950px; box-shadow: var(--shadow-5); } - - /** * MAIN */ - main { margin-bottom: 60px; } + main { + margin-bottom: 60px; + } .main-content { position: relative; @@ -1697,8 +1983,6 @@ textarea.form-input::-webkit-resizer { display: none; } margin: auto; } - - /** * NAVBAR */ @@ -1720,9 +2004,9 @@ textarea.form-input::-webkit-resizer { display: none; } padding: 0 20px; } - .navbar-link { font-weight: var(--fw-500); } - - + .navbar-link { + font-weight: var(--fw-500); + } /** * ABOUT @@ -1737,71 +2021,82 @@ textarea.form-input::-webkit-resizer { display: none; } /* testimonials */ - .testimonials-item { min-width: calc(50% - 15px); } + .testimonials-item { + min-width: calc(50% - 15px); + } /* clients */ - .clients-item { min-width: calc(25% - 38px); } - - + .clients-item { + min-width: calc(25% - 38px); + } /** * PORTFOLIO */ - .project-list { grid-template-columns: repeat(3, 1fr); } - - + .project-list { + grid-template-columns: repeat(3, 1fr); + } /** * BLOG */ - .blog-banner-box { height: 230px; } - + .blog-banner-box { + height: 230px; + } } - - - - /** * responsive larger than 1250px screen */ @media (min-width: 1250px) { - /** * RESET */ - body::-webkit-scrollbar { width: 20px; } + body::-webkit-scrollbar { + width: 20px; + } - body::-webkit-scrollbar-track { background: var(--smoky-black); } + body::-webkit-scrollbar-track { + background: var(--smoky-black); + } body::-webkit-scrollbar-thumb { border: 5px solid var(--smoky-black); background: hsla(0, 0%, 100%, 0.1); border-radius: 20px; box-shadow: inset 1px 1px 0 hsla(0, 0%, 100%, 0.11), - inset -1px -1px 0 hsla(0, 0%, 100%, 0.11); + inset -1px -1px 0 hsla(0, 0%, 100%, 0.11); } - body::-webkit-scrollbar-thumb:hover { background: hsla(0, 0%, 100%, 0.15); } - - body::-webkit-scrollbar-button { height: 60px; } - + body::-webkit-scrollbar-thumb:hover { + background: hsla(0, 0%, 100%, 0.15); + } + body::-webkit-scrollbar-button { + height: 60px; + } /** * REUSED STYLE */ - .sidebar, article { width: auto; } - - article { min-height: 100%; } - + .sidebar, + article { + width: auto; + } + article { + min-height: 100%; + } + .mode-toggle-btn { + bottom: auto; + top: 10px; + } /** * MAIN @@ -1822,8 +2117,6 @@ textarea.form-input::-webkit-resizer { display: none; } margin: 0; } - - /** * SIDEBAR */ @@ -1838,25 +2131,35 @@ textarea.form-input::-webkit-resizer { display: none; } z-index: 1; } - .sidebar-info { flex-direction: column; } + .sidebar-info { + flex-direction: column; + } - .avatar-box img { width: 150px; } + .avatar-box img { + width: 150px; + } .info-content .name { white-space: nowrap; text-align: center; } - .info-content .title { margin: auto; } + .info-content .title { + margin: auto; + } - .info_more-btn { display: none; } + .info_more-btn { + display: none; + } .sidebar-info_more { opacity: 1; visibility: visible; } - .contacts-list { grid-template-columns: 1fr; } + .contacts-list { + grid-template-columns: 1fr; + } .contact-info :is(.contact-link) { white-space: nowrap; @@ -1874,14 +2177,15 @@ textarea.form-input::-webkit-resizer { display: none; } opacity: 0; } - .social-list { justify-content: center; } - - + .social-list { + justify-content: center; + } /** * RESUME */ - .timeline-text { max-width: 700px; } - -} \ No newline at end of file + .timeline-text { + max-width: 700px; + } +} diff --git a/assets/images/moon.svg b/assets/images/moon.svg new file mode 100644 index 0000000..cca8cbf --- /dev/null +++ b/assets/images/moon.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/images/sun.svg b/assets/images/sun.svg new file mode 100644 index 0000000..43340c6 --- /dev/null +++ b/assets/images/sun.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/js/script.js b/assets/js/script.js index 6439a82..6c6dc5f 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -1,20 +1,18 @@ -'use strict'; - - +"use strict"; // element toggle function -const elementToggleFunc = function (elem) { elem.classList.toggle("active"); } - - +const elementToggleFunc = function (elem) { + elem.classList.toggle("active"); +}; // sidebar variables const sidebar = document.querySelector("[data-sidebar]"); const sidebarBtn = document.querySelector("[data-sidebar-btn]"); // sidebar toggle functionality for mobile -sidebarBtn.addEventListener("click", function () { elementToggleFunc(sidebar); }); - - +sidebarBtn.addEventListener("click", function () { + elementToggleFunc(sidebar); +}); // testimonials variables const testimonialsItem = document.querySelectorAll("[data-testimonials-item]"); @@ -31,47 +29,45 @@ const modalText = document.querySelector("[data-modal-text]"); const testimonialsModalFunc = function () { modalContainer.classList.toggle("active"); overlay.classList.toggle("active"); -} +}; // add click event to all modal items for (let i = 0; i < testimonialsItem.length; i++) { - testimonialsItem[i].addEventListener("click", function () { - modalImg.src = this.querySelector("[data-testimonials-avatar]").src; modalImg.alt = this.querySelector("[data-testimonials-avatar]").alt; - modalTitle.innerHTML = this.querySelector("[data-testimonials-title]").innerHTML; - modalText.innerHTML = this.querySelector("[data-testimonials-text]").innerHTML; + modalTitle.innerHTML = this.querySelector( + "[data-testimonials-title]" + ).innerHTML; + modalText.innerHTML = this.querySelector( + "[data-testimonials-text]" + ).innerHTML; testimonialsModalFunc(); - }); - } // add click event to modal close button modalCloseBtn.addEventListener("click", testimonialsModalFunc); overlay.addEventListener("click", testimonialsModalFunc); - - // custom select variables const select = document.querySelector("[data-select]"); const selectItems = document.querySelectorAll("[data-select-item]"); const selectValue = document.querySelector("[data-selecct-value]"); const filterBtn = document.querySelectorAll("[data-filter-btn]"); -select.addEventListener("click", function () { elementToggleFunc(this); }); +select.addEventListener("click", function () { + elementToggleFunc(this); +}); // add event in all select items for (let i = 0; i < selectItems.length; i++) { selectItems[i].addEventListener("click", function () { - let selectedValue = this.innerText.toLowerCase(); selectValue.innerText = this.innerText; elementToggleFunc(select); filterFunc(selectedValue); - }); } @@ -79,9 +75,7 @@ for (let i = 0; i < selectItems.length; i++) { const filterItems = document.querySelectorAll("[data-filter-item]"); const filterFunc = function (selectedValue) { - for (let i = 0; i < filterItems.length; i++) { - if (selectedValue === "all") { filterItems[i].classList.add("active"); } else if (selectedValue === filterItems[i].dataset.category) { @@ -89,18 +83,14 @@ const filterFunc = function (selectedValue) { } else { filterItems[i].classList.remove("active"); } - } - -} +}; // add event in all filter button items for large screen let lastClickedBtn = filterBtn[0]; for (let i = 0; i < filterBtn.length; i++) { - filterBtn[i].addEventListener("click", function () { - let selectedValue = this.innerText.toLowerCase(); selectValue.innerText = this.innerText; filterFunc(selectedValue); @@ -108,13 +98,9 @@ for (let i = 0; i < filterBtn.length; i++) { lastClickedBtn.classList.remove("active"); this.classList.add("active"); lastClickedBtn = this; - }); - } - - // contact form variables const form = document.querySelector("[data-form]"); const formInputs = document.querySelectorAll("[data-form-input]"); @@ -123,19 +109,15 @@ const formBtn = document.querySelector("[data-form-btn]"); // add event to all form input field for (let i = 0; i < formInputs.length; i++) { formInputs[i].addEventListener("input", function () { - // check form validation if (form.checkValidity()) { formBtn.removeAttribute("disabled"); } else { formBtn.setAttribute("disabled", ""); } - }); } - - // page navigation variables const navigationLinks = document.querySelectorAll("[data-nav-link]"); const pages = document.querySelectorAll("[data-page]"); @@ -143,7 +125,6 @@ const pages = document.querySelectorAll("[data-page]"); // add event to all nav link for (let i = 0; i < navigationLinks.length; i++) { navigationLinks[i].addEventListener("click", function () { - for (let i = 0; i < pages.length; i++) { if (this.innerHTML.toLowerCase() === pages[i].dataset.page) { pages[i].classList.add("active"); @@ -154,6 +135,31 @@ for (let i = 0; i < navigationLinks.length; i++) { navigationLinks[i].classList.remove("active"); } } - }); -} \ No newline at end of file +} + +// Applying Light mode... +const modeToggleBtn = document.getElementById("mode-toggle-btn"); +const modeBtn = document.getElementById("mood-btn"); +const modeIcon = document.getElementById("mood-icon"); +const lightModeKey = "light-mode"; + +const updateLightMode = (enabled) => { + // 1. Toggle the class on the body + document.body.classList.toggle("light-mode", enabled); + modeBtn.classList.toggle("light-mode", enabled); + modeIcon.src = enabled ? "assets/images/moon.svg" : "assets/images/sun.svg"; + + // 2. Update lightMode in localStorage + localStorage.setItem(lightModeKey, enabled ? "enabled" : null); +}; + +// Initialize light mode based on localStorage +updateLightMode(localStorage.getItem(lightModeKey) === "enabled"); + +// Toggle light mode when the button is clicked +modeToggleBtn.addEventListener("click", () => { + // Toggle the current lightMode setting + updateLightMode(localStorage.getItem(lightModeKey) !== "enabled"); + console.log(localStorage.getItem(lightModeKey) + " enabled"); +}); diff --git a/index.html b/index.html index 5496a52..1a21aa8 100644 --- a/index.html +++ b/index.html @@ -1,1201 +1,1738 @@ + + + + + vCard - Personal Portfolio - - - - - vCard - Personal Portfolio - - - + - - + - - - - - - - - - -
- - - - - - - - - - - -
- - - - - - - - - - - -
- -
-

About me

-
- -
-

- I'm Creative Director and UI/UX Designer from Sydney, Australia, working in web development and print media. - I enjoy - turning complex problems into simple, beautiful and intuitive designs. -

- -

- My job is to build your website so that it is functional and user-friendly but at the same time attractive. - Moreover, I - add personal touch to your product and make sure that is eye-catching and easy to use. My aim is to bring - across your - message and identity in the most creative way. I created web design for many famous brand companies. -

-
- - - - -
- -

What i'm doing

- -
    - -
  • - -
    - design icon -
    - -
    -

    Web design

    - -

    - The most modern and high-quality design made at a professional level. -

    -
    - -
  • - -
  • - -
    - Web development icon -
    - -
    -

    Web development

    - -

    - High-quality development of sites at the professional level. -

    -
    - -
  • - -
  • - -
    - mobile app icon -
    - -
    -

    Mobile apps

    - -

    - Professional development of applications for iOS and Android. -

    -
    - -
  • - -
  • - -
    - camera icon -
    - -
    -

    Photography

    - -

    - I make high-quality photos of any category at a professional level. -

    -
    - -
  • - -
- -
- - - - -
- -

Testimonials

- -
    - -
  • -
    - -
    - Daniel lewis -
    - -

    Daniel lewis

    - -
    -

    - Richard was hired to create a corporate identity. We were very pleased with the work done. She has a - lot of experience - and is very concerned about the needs of client. Lorem ipsum dolor sit amet, ullamcous cididt - consectetur adipiscing - elit, seds do et eiusmod tempor incididunt ut laborels dolore magnarels alia. -

    -
    - -
    -
  • - -
  • -
    - -
    - Jessica miller -
    - -

    Jessica miller

    - -
    -

    - Richard was hired to create a corporate identity. We were very pleased with the work done. She has a - lot of experience - and is very concerned about the needs of client. Lorem ipsum dolor sit amet, ullamcous cididt - consectetur adipiscing - elit, seds do et eiusmod tempor incididunt ut laborels dolore magnarels alia. -

    -
    - -
    -
  • - -
  • -
    - -
    - Emily evans -
    - -

    Emily evans

    - -
    -

    - Richard was hired to create a corporate identity. We were very pleased with the work done. She has a - lot of experience - and is very concerned about the needs of client. Lorem ipsum dolor sit amet, ullamcous cididt - consectetur adipiscing - elit, seds do et eiusmod tempor incididunt ut laborels dolore magnarels alia. -

    -
    - -
    -
  • - -
  • -
    - -
    - Henry william -
    - -

    Henry william

    - -
    -

    - Richard was hired to create a corporate identity. We were very pleased with the work done. She has a - lot of experience - and is very concerned about the needs of client. Lorem ipsum dolor sit amet, ullamcous cididt - consectetur adipiscing - elit, seds do et eiusmod tempor incididunt ut laborels dolore magnarels alia. -

    -
    - -
    -
  • - -
- -
- - - - - - - - - -
- -

Clients

- - - -
- -
- - - - - - - -
- -
-

Resume

-
- -
- -
-
- -
- -

Education

-
- -
    - -
  1. - -

    University school of the arts

    - - 2007 — 2008 - -

    - Nemo enims ipsam voluptatem, blanditiis praesentium voluptum delenit atque corrupti, quos dolores et - quas molestias - exceptur. -

    - -
  2. - -
  3. - -

    New york academy of art

    - - 2006 — 2007 - -

    - Ratione voluptatem sequi nesciunt, facere quisquams facere menda ossimus, omnis voluptas assumenda est - omnis.. -

    - -
  4. - -
  5. - -

    High school of art and design

    - - 2002 — 2004 - -

    - Duis aute irure dolor in reprehenderit in voluptate, quila voluptas mag odit aut fugit, sed consequuntur - magni dolores - eos. -

    - -
  6. - -
- -
- -
- -
-
- -
- -

Experience

-
- -
    - -
  1. - -

    Creative director

    - - 2015 — Present - -

    - Nemo enim ipsam voluptatem blanditiis praesentium voluptum delenit atque corrupti, quos dolores et qvuas - molestias - exceptur. -

    - -
  2. - -
  3. - -

    Art director

    - - 2013 — 2015 - -

    - Nemo enims ipsam voluptatem, blanditiis praesentium voluptum delenit atque corrupti, quos dolores et - quas molestias - exceptur. -

    - -
  4. - -
  5. - -

    Web designer

    - - 2010 — 2013 - -

    - Nemo enims ipsam voluptatem, blanditiis praesentium voluptum delenit atque corrupti, quos dolores et - quas molestias - exceptur. -

    - -
  6. - -
- -
- -
- -

My skills

- -
    - -
  • - -
    -
    Web design
    - 80% -
    - -
    -
    -
    - -
  • - -
  • - -
    -
    Graphic design
    - 70% -
    - -
    -
    -
    - -
  • - -
  • - -
    -
    Branding
    - 90% -
    - -
    -
    -
    - -
  • - -
  • - -
    -
    WordPress
    - 50% -
    - -
    -
    -
    - -
  • - -
- -
- -
- - - - - - - -
-
  • - + + - orizon - + +
  • -

    Fundo

    +
  • +
    + +
    -

    Web design

    +
    +

    Birthday

    - + +
  • -
  • - - -
    -
    - -
    +
  • +
    + +
    - brawlhalla -
  • +
    +

    Location

    -

    Brawlhalla

    +
    Sacramento, California, USA
    +
    +
  • + -

    Applications

    +
    +
    + +
    +
    + +
    +
    + -
  • - - -
    -
    - -
    - - summary -
    - -

    Summary

    + -

    Web development

    +
    + - + -

    Applications

    + -
    -
  • +
    +
    +

    About me

    +
    + +
    +

    + I'm Creative Director and UI/UX Designer from Sydney, Australia, + working in web development and print media. I enjoy turning + complex problems into simple, beautiful and intuitive designs. +

    + +

    + My job is to build your website so that it is functional and + user-friendly but at the same time attractive. Moreover, I add + personal touch to your product and make sure that is eye-catching + and easy to use. My aim is to bring across your message and + identity in the most creative way. I created web design for many + famous brand companies. +

    +
    -
  • - + -
    -
    - -
    +
    +

    What i'm doing

    + +
      +
    • +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      - arrival -
    +
    +

    Web design

    -

    Arrival

    +

    + The most modern and high-quality design made at a + professional level. +

    +
    +
  • -

    Web development

    +
  • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    -
    -
  • +
    +

    Web development

    - +

    + High-quality development of sites at the professional level. +

    +
    + - +
  • +
    + + + + + + + + + + + + + + +
    -
  • +
    +

    Mobile apps

    +

    + Professional development of applications for iOS and + Android. +

    +
    + +
  • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Photography

    +

    + I make high-quality photos of any category at a professional + level. +

    +
    +
  • + + - + -
    +
    +

    Testimonials

    + +
    -
    -

    Design

    + - +
    +
    +

    Resume

    +
    - -
    +
    +
    +
    + +
    -

    Best fonts every designer

    +

    Education

    +
    -

    - Sed ut perspiciatis, nam libero tempore, cum soluta nobis est eligendi. -

    +
      +
    1. +

      + University school of the arts +

      - + 2007 — 2008 - -
    2. +

      + Nemo enims ipsam voluptatem, blanditiis praesentium voluptum + delenit atque corrupti, quos dolores et quas molestias + exceptur. +

      + -
    3. - +
    4. +

      New york academy of art

      -
      - Design digest #80 -
      + 2006 — 2007 -
      +

      + Ratione voluptatem sequi nesciunt, facere quisquams facere + menda ossimus, omnis voluptas assumenda est omnis.. +

      +
    5. -
      -

      Design

      +
    6. +

      + High school of art and design +

      - + 2002 — 2004 - -
    7. +

      + Duis aute irure dolor in reprehenderit in voluptate, quila + voluptas mag odit aut fugit, sed consequuntur magni dolores + eos. +

      + +
    +
    -

    Design digest #80

    +
    +
    +
    + +
    -

    - Excepteur sint occaecat cupidatat no proident, quis nostrum exercitationem ullam corporis suscipit. -

    +

    Experience

    +
    - +
      +
    1. +

      Creative director

      -
      -
    2. + 2015 — Present -
    3. - +

      + Nemo enim ipsam voluptatem blanditiis praesentium voluptum + delenit atque corrupti, quos dolores et qvuas molestias + exceptur. +

      +
    4. -
      - UI interactions of the week -
      +
    5. +

      Art director

      -
      + 2013 — 2015 -
      -

      Design

      +

      + Nemo enims ipsam voluptatem, blanditiis praesentium voluptum + delenit atque corrupti, quos dolores et quas molestias + exceptur. +

      +
    6. - +
    7. +

      Web designer

      - - + 2010 — 2013 -

      UI interactions of the week

      +

      + Nemo enims ipsam voluptatem, blanditiis praesentium voluptum + delenit atque corrupti, quos dolores et quas molestias + exceptur. +

      +
    8. +
    +
    -

    - Enim ad minim veniam, consectetur adipiscing elit, quis nostrud exercitation ullamco laboris nisi. -

    +
    +

    My skills

    +
    +
    + -

    The forgotten art of spacing

    + -

    - Maxime placeat, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -

    +
    +
    +

    Portfolio

    +
    - +
    + -
    +
    + - +
      +
    • + +
    • - -
    +
  • + +
  • -

    Design digest #79

    +
  • + +
  • -

    - Optio cumque nihil impedit uo minus quod maxime placeat, velit esse cillum. -

    +
  • + +
  • + +
    - +
    +
  • + +
    +
    + +
    + + fundo +
    + +

    Fundo

    + +

    Web design

    +
    +
  • -
    +
  • + +
    +
    + +
    + + brawlhalla +
    + +

    Brawlhalla

    + +

    Applications

    +
    +
  • -
    +
  • + +
    +
    + +
    + + dsm. +
    + +

    DSM.

    + +

    Web design

    +
    +
  • +
  • + +
    +
    + +
    + + metaspark +
    + +

    MetaSpark

    + +

    Web design

    +
    +
  • +
  • + +
    +
    + +
    + + summary +
    + +

    Summary

    + +

    Web development

    +
    +
  • +
  • + +
    +
    + +
    + + task manager +
    + +

    Task Manager

    + +

    Applications

    +
    +
  • +
  • + +
    +
    + +
    + + arrival +
    + +

    Arrival

    + +

    Web development

    +
    +
  • + + + - -
    +
    +
    +

    Blog

    +
    + +
    +
    +
    +
    +

    Design

    -
    + - + + -
    +

    Design digest #79

    +

    + Optio cumque nihil impedit uo minus quod maxime placeat, + velit esse cillum. +

    + +
    + + + + + +
    +
    +

    Contact

    +
    + +
    +
    + +
    +
    +
    +

    Contact Form

    + +
    +
    + + + +
    + + + +
    +
    +
    + + - - + - - - - - - - \ No newline at end of file + + + +