diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6704566
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,104 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# TypeScript v1 declaration files
+typings/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
+.env.test
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+
+# Next.js build output
+.next
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and *not* Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port
diff --git a/.prettierrc.json b/.prettierrc.json
new file mode 100644
index 0000000..d865aff
--- /dev/null
+++ b/.prettierrc.json
@@ -0,0 +1,12 @@
+{
+ "printWidth": 80,
+ "tabWidth": 2,
+ "useTabs": false,
+ "semi": true,
+ "singleQuote": true,
+ "trailingComma": "es5",
+ "bracketSpacing": true,
+ "jsxBracketSameLine": false,
+ "arrowParens": "avoid",
+ "proseWrap": "always"
+}
\ No newline at end of file
diff --git a/Portfolio.html b/Portfolio.html
new file mode 100644
index 0000000..e1beb42
--- /dev/null
+++ b/Portfolio.html
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+ WebStudio
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Cards
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
Projects
+
+
+
+
+
+
+
+
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..b974c9f
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# goit-markup-hw-04
diff --git a/css/styles.css b/css/styles.css
new file mode 100644
index 0000000..5b34ae3
--- /dev/null
+++ b/css/styles.css
@@ -0,0 +1,887 @@
+/* основний колір текста #434455;*/
+/* колір текста другої частини лого хедера, навігація та заголовки #2E2F42; */
+/* колір текста героя #FFFFFF; */
+/* колір першої частини текста лого і кнопки #4D5AE5 * /
+/* колір кнопки при hover та навігації при актів #404BBF */
+/* колір другої частини лого футера #F4F4FD */
+/* колір текста футера #E7E9FC; */
+/* бекграунд головний #FFFFFF */
+/* бекграунд другорядний #F4F4FD */
+/* бекграунд темних секцій #2E2F42 */
+
+:root {
+ --primary-text-color:#434455;
+ --title-text-color:#2E2F42;
+ --hero-text-color: #FFFFFF;
+ --footer-text-color: #E7E9FC;
+ --footer-second-text: #FFFFFF;
+ --footer-bg-icon: rgba(255, 255, 255, 0.1);
+ --footer-bg-hover-icon: #31D0AA;
+ --ftr-txt-label: rgba(255, 255, 255, 0.6);
+ --ftr-border-input: rgba(255, 255, 255, 0.3);
+ --primary-background-color: #FFFFFF;
+ --hero-footer-background-color: #2E2F42;
+ --button-background-color: #4D5AE5;
+ --modal-back-color: rgba(46, 47, 66, 0.4);
+ --modal-background-color: #FCFCFC;
+ --modal-btn-background-color: #E7E9FC;
+ --modal-border-input: rgba(33, 33, 33, 0.2);
+ --modal-label-txt: #8E8F99;
+ --modal-txt-accept: #757575;
+ --modal-txt-placeholder: rgba(117, 117, 117, 0.5);
+ --modal-txt-comment: #000;
+ --activ-hover-color: #404BBF;
+ --secondary-background-color: #F4F4FD;
+ --accent-color: #4D5AE5;
+ --logo-footer-second-part: #F4F4FD;
+ --hover-text-color-prtfl: #FFFFFF;
+ --border-customers-link: #8E8F99;
+ --border-modal-btn: rgba(0, 0, 0, 0.1);
+ --fill-customer-icon: #AFB1B8;
+ --fill-modal-icon: #2E2F42;
+ --border-portfolio: #E7E9FC;
+ --text-overlay: #F4F4FD;
+ --main-text-font: 'Roboto', sans-serif;
+ --logo-text-font: 'Raleway', sans-serif;
+ --cubic: 0.4, 0, 0.2, 1;
+ --transition-duration: 250ms;
+}
+
+body {
+ color: var(--primary-text-color);
+ background-color: var(--primary-background-color);
+ font-family: var(--main-text-font);
+ font-size: 16px;
+ line-height: 1.5;
+ letter-spacing: 0.02em;
+}
+
+/* Загальні налаштування контейнера */
+
+.container {
+ width: 1158px;
+ margin-left: auto;
+ margin-right: auto;
+ padding-left: 15px;
+ padding-right: 15px;
+ /* outline: 2px solid tomato; */
+}
+
+/* Зкинути крапки */
+.list {
+ list-style: none;
+}
+
+/* Зкидання відступів */
+h1,
+h2,
+h3,
+h4 {
+ margin: 0;
+}
+
+p,
+ul {
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-left: 0;
+}
+
+/* Перевизначення картинок в блоки */
+
+img {
+ display: block;
+}
+
+/* Загальні падінги у секцій */
+
+.section {
+ padding-top: 120px;
+ padding-bottom: 120px;
+}
+
+/* Заголовки */
+
+.ttl {
+ color: var(--title-text-color);
+ text-transform: capitalize;
+}
+
+.visually-hidden {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ margin: -1px;
+ border: 0;
+ padding: 0;
+
+ white-space: nowrap;
+ clip-path: inset(100%);
+ clip: rect(0 0 0 0);
+ overflow: hidden;
+ }
+
+.values-title,
+.name.ttl,
+.card-ttl {
+ margin-bottom: 8px;
+ font-weight: 500;
+ font-size: 20px;
+ line-height: 1.2;
+}
+
+.services-title,
+.team-title,
+.customers-ttl {
+ margin-bottom: 72px;
+ text-align: center;
+ font-weight: 700;
+ font-size: 36px;
+ line-height: 1.11;
+
+}
+
+/* Логотип */
+.logo {
+ font-family: var(--logo-text-font);
+ font-size: 18px;
+ letter-spacing: 0.03em;
+ text-decoration: none;
+ text-transform:uppercase;
+}
+
+.accent {
+ color: var(--accent-color);
+}
+
+.header-logo {
+ margin-right: 76px;
+ line-height: 1.33;
+}
+
+.ftr-logo {
+ display: inline-block;
+ margin-bottom: 16px;
+ line-height: 1.17;
+ color: var(--logo-footer-second-part);
+}
+
+/* ========= Хедер ========= */
+
+.header-cntnr {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.header-page {
+ border-bottom: 1px solid var(--footer-text-color);
+ box-shadow: 0px 2px 1px rgba(46, 47, 66, 0.08), 0px 1px 1px rgba(46, 47, 66, 0.16), 0px 1px 6px rgba(46, 47, 66, 0.08);
+}
+
+/* Навігація сайту */
+
+.header-nav a {
+ color: var(--title-text-color);
+ text-decoration: none;
+}
+
+.header-nav,
+.header-menu,
+.addrss {
+ display: flex;
+}
+
+.menu-item {
+ position: relative;
+}
+
+.navigation {
+ font-weight: 500;
+ font-size: 16px;
+ transition: color var(--transition-duration) cubic-bezier(var(--cubic));
+}
+
+.menu-item:not(:last-child),
+.addrss-item:not(:last-child) {
+ margin-right: 40px;
+}
+
+.navigation:hover,
+.navigation:focus,
+.navigation.current {
+ color: var(--activ-hover-color);
+}
+
+.navigation.current::after {
+ position: absolute;
+ bottom: -1px;
+ left: 0;
+ display: block;
+ content: '';
+ width: 100%;
+ height: 4px;
+ background-color: var(--activ-hover-color);
+ border-radius: 2px;
+}
+
+/* Адреса */
+
+.addrss a {
+ color: var(--primary-text-color);
+ font-style: normal;
+ text-decoration: none;
+}
+
+.tel,
+.email {
+ transition: color var(--transition-duration) cubic-bezier(var(--cubic));
+}
+
+.email:hover,
+.tel:hover,
+.email:focus,
+.tel:focus {
+ color: var(--activ-hover-color);
+}
+
+.header-cntnr a {
+ display: block;
+ padding-top: 24px;
+ padding-bottom: 23px;
+}
+
+/* ================ Герой ====================== */
+
+.hero {
+ padding-top: 188px;
+ padding-bottom: 188px;
+ text-align: center;
+ color: var(--hero-text-color);
+ max-width: 1440px;
+ min-height: 600px;
+ margin: 0 auto;
+ background-image: linear-gradient(rgba(46, 47, 66, 0.7), rgba(46, 47, 66, 0.7) ), url('../images/people-office.jpg');
+ background-size: cover;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-color: #434455;
+}
+
+.hero-title {
+ max-width: 494px;
+ margin-bottom: 48px;
+ margin-left: auto;
+ margin-right: auto;
+ font-size: 56px;
+ line-height: 1.07;
+ text-transform: capitalize;
+ text-align: center;
+}
+
+.small {
+ text-transform: none;
+}
+
+/* Кнопка */
+.btn {
+ /* min-width: 169px; */
+ padding: 16px 32px;
+ border-radius: 4px;
+ border: none;
+ margin-left: auto;
+ margin-right: auto;
+
+ color: var(--hero-text-color);
+ background-color: var(--button-background-color);
+ box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.15);
+ font-family: inherit;
+ font-weight: 500;
+ font-size: inherit;
+ line-height: inherit;
+ letter-spacing: 0.04em;
+ cursor: pointer;
+ transition: background-color var(--transition-duration) cubic-bezier(var(--cubic));
+}
+.btn:hover,
+.btn:focus {
+ background-color: var(--activ-hover-color);
+}
+
+/* ================= Цінності ================= */
+
+.values {
+ padding-bottom: 60px;
+}
+
+.values-list {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 24px;
+}
+
+.values-list li {
+ flex-basis: calc((100% - 3*24px) / 4);
+}
+
+.values-icon {
+ display: flex;
+ width: 264px;
+ height: 112px;
+ justify-content: center;
+ align-items: center;
+ margin-bottom: 8px;
+ background-color: var(--secondary-background-color);
+
+}
+
+/* ================== Сервіс ================== */
+
+.services {
+ padding-top: 60px;
+}
+
+.services-list {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 24px;
+}
+
+/* ================= Команда ====================== */
+
+.team {
+ background-color: var(--secondary-background-color);
+}
+
+.team-list {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 24px;
+}
+
+.team-item {
+ flex-basis: calc((100% - 3*24px) / 4);
+}
+
+.name.ttl,
+.team-item p {
+ text-align: center;
+}
+
+.team-item p {
+ margin-bottom: 8px;
+}
+
+.net-list {
+ display: flex;
+ justify-content: center;
+}
+
+.team-net-list {
+ gap: 24px;
+}
+
+.net-link {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+}
+
+.team-net-link {
+ background-color: var(--accent-color);
+ transition: background-color var(--transition-duration) cubic-bezier(var(--cubic));
+}
+
+.team-net-link:hover,
+.team-net-link:focus {
+ background-color: var(--activ-hover-color);
+}
+
+.team-content {
+ background-color: var(--primary-background-color);
+ padding-bottom: 32px;
+ padding-top: 32px;
+ box-shadow: 0px 1px 6px rgba(46, 47, 66, 0.08), 0px 1px 1px rgba(46, 47, 66, 0.16), 0px 2px 1px rgba(46, 47, 66, 0.08);
+ border-radius: 0px 0px 4px 4px;
+}
+
+/* ============== customerS ===================*/
+
+.customers {
+ padding-top: 130px;
+}
+
+.customer-list {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 24px;
+}
+
+.customer-item {
+ flex-basis: calc((100% - 5*24px) / 6);
+ height: 88px;
+}
+
+.customer-link {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border: 1px solid var(--border-customers-link);
+ border-radius: 4px;
+ transition: border-color var(--transition-duration) cubic-bezier(var(--cubic));
+}
+
+.customer-link svg {
+ fill: var(--fill-customer-icon);
+ transition: fill var(--transition-duration) cubic-bezier(var(--cubic));
+}
+
+.customer-link:is(:hover, :focus) {
+ border-color: var(--activ-hover-color);
+}
+
+.customer-link:is(:hover, :focus) svg {
+ fill: var(--activ-hover-color);
+}
+
+/* ==================== ФУТЕР =========== */
+.ftr {
+ padding-top: 100px;
+ padding-bottom: 100px;
+ color: var(--footer-text-color);
+ background-color: var(--hero-footer-background-color);
+}
+
+.ftr-cntnr {
+ display: flex;
+ align-items: baseline;
+}
+
+.ftr-motto {
+ margin-right: 120px;
+}
+
+.ftr-motto p {
+ max-width: 264px;
+}
+
+.net-container {
+ margin-right: 80px;
+}
+
+.txt-ttl-ftr {
+ margin-bottom: 16px;
+ font-weight: 500;
+ color: var(--footer-second-text);
+}
+
+.ftr-net-list {
+ gap: 16px;
+}
+
+.ftr-net-link {
+ background-color: var(--footer-bg-icon);
+ border-radius: 50%;
+ transition: background-color var(--transition-duration) cubic-bezier(var(--cubic));
+}
+
+.ftr-net-link:hover,
+.ftr-net-link:focus {
+ background-color: var(--footer-bg-hover-icon);
+}
+
+.subscribe-form {
+ display: flex;
+ gap: 24px;
+}
+
+.wrapper-ftr-input {
+ position: relative;
+}
+
+.subscribe-label {
+ position: absolute;
+ top: 50%;
+ left: 16px;
+ transform: translateY(-50%);
+
+ transition: opacity var(--transition-duration) cubic-bezier(var(--cubic));
+}
+
+.txt-ftr-lbl {
+ font-size: 12px;
+ line-height: 2;
+ letter-spacing: 0.04em;
+ color: var(--ftr-txt-label);
+}
+
+.ftr-input {
+ width: 264px;
+ height: 40px;
+ padding: 8px 16px;
+
+ font-size: 12px;
+ line-height: 2;
+ letter-spacing: 0.04em;
+ color: var(--footer-second-text);
+
+ background-color: transparent;
+ border: 1px solid var(--ftr-border-input);
+ box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.15);
+ border-radius: 4px;
+}
+
+.ftr-input:focus + .subscribe-label,
+.ftr-input:not(:placeholder-shown) + .subscribe-label {
+ opacity: 0;
+}
+
+.wrapper-ftr-btn {
+ position: relative;
+}
+
+.btn-ftr {
+ width: 165px;
+ padding: 8px 24px;
+ text-align: left;
+}
+
+.icon-subscribe {
+ position: absolute;
+ top: 50%;
+ right: 24px;
+ transform: translateY(-50%);
+}
+
+/* ============== Модальне вікно ============== */
+
+.backdrop {
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 100;
+ width: 100%;
+ height: 100%;
+ background-color: var(--modal-back-color);
+
+ transition: transform 1000ms, opacity var(--transition-duration) cubic-bezier(var(--cubic));
+}
+
+.backdrop.is-hidden {
+ visibility: hidden;
+ opacity: 0;
+ pointer-events: none;
+ transform: translate(-100%, 0) scale(0.1) rotate(180deg);
+}
+
+.modal {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ width: 408px;
+ min-height: 576px;
+
+ padding: 72px 24px 24px;
+ background-color: var(--modal-background-color);
+ box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.14), 0px 1px 3px rgba(0, 0, 0, 0.12), 0px 2px 1px rgba(0, 0, 0, 0.2);
+ border-radius: 4px;
+ transform: translate(-50%, -50%);
+}
+
+.modal-close-btn {
+ position: absolute;
+ top: 24px;
+ right: 24px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 24px;
+ height: 24px;
+ padding: 0;
+ background-color: var(--modal-btn-background-color);
+ border: 1px solid var(--border-modal-btn);
+ border-radius: 50%;
+ cursor: pointer;
+ transition: background-color var(--transition-duration) cubic-bezier(var(--cubic));
+
+}
+
+.modal-close-btn:hover,
+.modal-close-btn:focus {
+background-color: var(--activ-hover-color);
+}
+
+.modal-close-svg {
+ transition: fill var(--transition-duration) cubic-bezier(var(--cubic));
+}
+
+.modal-close-btn:hover .modal-close-svg,
+.modal-close-btn:focus .modal-close-svg {
+ fill: var(--hover-text-color-prtfl);
+}
+
+.form-ttl {
+ margin-bottom: 14px;
+ font-weight: 500;
+ text-align: center;
+ color: var(--title-text-color);
+}
+
+.txt-mdl-lbl-first-last {
+ font-size: 12px;
+ line-height: 1.33;
+ letter-spacing: 0.04em;
+}
+
+.txt-mdl-lbl-first {
+ color: var(--modal-label-txt);
+}
+
+.txt-mdl-lbl-last {
+ color: var(--modal-txt-accept);
+}
+
+.txt-mdl-lbl {
+ font-size: 12px;
+ line-height: 1.17;
+ letter-spacing: 0.01em;
+ color: var(--modal-label-txt);
+}
+
+.modal-label {
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+ margin-bottom: 8px;
+}
+
+.wrapper-icon-input {
+ position: relative;
+}
+
+.modal-input {
+ width: 100%;
+ height: 40px;
+ padding: 11px 38px;
+ background-color: transparent;
+ border: 1px solid var(--modal-border-input);
+ border-radius: 4px;
+
+ font-size: 18px;
+ line-height: inherit;
+ letter-spacing: inherit;
+ color: var(--modal-txt-comment);
+
+ transition: border-color var(--transition-duration) cubic-bezier(var(--cubic));
+}
+
+.icon-input {
+ position: absolute;
+ top: 50%;
+ left: 16px;
+ transform: translateY(-50%);
+ fill: var(--fill-modal-icon);
+
+ transition: fill var(--transition-duration) cubic-bezier(var(--cubic));
+ }
+
+.modal-input:focus + .icon-input {
+ fill: var(--accent-color);
+}
+
+.modal-input:focus,
+.modal-textarea:focus {
+ outline: none;
+ border-color: var(--accent-color);
+}
+
+.mdl-lbl-cmmnt {
+ margin-bottom: 16px;
+}
+
+.modal-textarea {
+ width: 100%;
+ height: 138px;
+ resize: none;
+ border-radius: 4px;
+ padding: 8px 16px;
+ overflow: auto;
+
+ font-size: 18px;
+ line-height: inherit;
+ letter-spacing: inherit;
+ color: var(--modal-txt-comment);
+}
+
+.modal-textarea::placeholder {
+ font-size: 12px;
+ line-height: 1.17;
+ letter-spacing: 0.04em;
+ color: var(--modal-txt-placeholder);
+}
+
+.icon-click-wrap {
+ position: relative;
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ border: 1.25px solid var(--fill-modal-icon);
+ border-radius: 2px;
+}
+
+.icon-click {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ opacity: 0;
+}
+
+.modal-input-accept:checked + .modal-label-accept > .icon-click-wrap {
+ background-color: var(--activ-hover-color);
+ border: 1.25px solid var(--activ-hover-color);
+}
+
+.modal-input-accept:checked + .modal-label-accept .icon-click {
+ opacity: 1;
+}
+
+.modal-input-accept:focus + .modal-label-accept > .icon-click-wrap {
+ outline: 1px solid var(--accent-color);
+}
+
+ .modal-label-accept {
+ display: flex;
+ gap: 8px;
+ align-items: center;
+ margin-bottom: 24px;
+}
+/*
+ .modal-label-accept::before {
+ content: '';
+ display: block;
+ width: 16px;
+ height: 16px;
+ border: 1.25px solid var(--fill-modal-icon);
+ border-radius: 2px;
+}
+
+.modal-input-accept:checked + .modal-label-accept::before {
+background-color: var(--activ-hover-color);
+border: 1.25px solid var(--activ-hover-color);
+background-image: url(../images/click.svg);
+background-position: center;
+background-repeat: no-repeat;
+}
+
+.modal-input-accept:focus + .modal-label-accept::before {
+ outline: 1px solid var(--accent-color);
+} */
+
+.btn-submit {
+ min-width: 169px;
+ display: block;
+}
+
+/* =============== Портфоліо ===================== */
+
+.cards {
+ padding-top: 96px;
+ padding-bottom: 120px;
+}
+
+.filter-cards {
+ display: flex;
+ justify-content: center;
+ margin-bottom: 72px;
+}
+
+.filter-btn {
+ padding: 12px 24px;
+ border: 1px solid var(--footer-text-color);
+ border-radius: 4px;
+ color: var(--accent-color);
+ background-color: var(--secondary-background-color);
+ font-family: inherit;
+ font-weight: 500;
+ font-size: inherit;
+ line-height: inherit;
+ letter-spacing: 0.04em;
+ cursor: pointer;
+ transition: color var(--transition-duration) cubic-bezier(var(--cubic)), background-color var(--transition-duration) cubic-bezier(var(--cubic)), box-shadow var(--transition-duration) cubic-bezier(var(--cubic));
+}
+
+.filter-btn:hover,
+.filter-btn:focus,
+.filter-btn:active {
+ color: var(--hover-text-color-prtfl);
+ background-color: var(--activ-hover-color);
+ box-shadow: 0px 3px 1px rgba(0, 0, 0, 0.1), 0px 2px 1px rgba(0, 0, 0, 0.08), 0px 2px 2px rgba(0, 0, 0, 0.12);
+}
+
+.filter-item:not(:last-child) {
+ margin-right: 24px;
+}
+
+.cards-list {
+ display: flex;
+ flex-wrap: wrap;
+ row-gap: 48px;
+ column-gap: 24px;
+}
+
+.card-item {
+ flex-basis: calc((100% - 2*24px) / 3);
+}
+
+.card-link {
+ display: block;
+ text-decoration: none;
+ color: var(--primary-text-color);
+ box-shadow: 0px 1px 6px rgba(46, 47, 66, 0.08);
+ transition: box-shadow var(--transition-duration) cubic-bezier(var(--cubic));
+}
+
+.wrapper-overlay {
+ position: relative;
+ overflow: hidden;
+}
+
+.overlay {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ padding: 40px 32px;
+ background-color: var(--accent-color);
+ color: var(--text-overlay);
+ overflow: auto;
+ transform: translateY(100%);
+ transition: transform var(--transition-duration) cubic-bezier(var(--cubic));
+}
+
+.card-link:hover .overlay,
+.card-link:focus .overlay {
+ transform: translateY(0px);
+}
+
+.card-content {
+ padding-top: 32px;
+ padding-bottom: 31px;
+ padding-left: 16px;
+ border-bottom: 1px solid var(--border-portfolio);
+ border-left: 1px solid var(--border-portfolio);
+ border-right: 1px solid var(--border-portfolio);
+}
+
+.card-link:hover,
+.card-link:focus {
+ box-shadow: 0px 1px 6px rgba(46, 47, 66, 0.08), 0px 1px 1px rgba(46, 47, 66, 0.16), 0px 2px 1px rgba(46, 47, 66, 0.08);
+}
+
diff --git a/images/banking.jpg b/images/banking.jpg
new file mode 100644
index 0000000..8bd8546
Binary files /dev/null and b/images/banking.jpg differ
diff --git a/images/camila.jpg b/images/camila.jpg
new file mode 100644
index 0000000..9b56751
Binary files /dev/null and b/images/camila.jpg differ
diff --git a/images/car.jpg b/images/car.jpg
new file mode 100644
index 0000000..f10af81
Binary files /dev/null and b/images/car.jpg differ
diff --git a/images/cellphone.jpg b/images/cellphone.jpg
new file mode 100644
index 0000000..5c3a8d7
Binary files /dev/null and b/images/cellphone.jpg differ
diff --git a/images/coffee.jpg b/images/coffee.jpg
new file mode 100644
index 0000000..99ea400
Binary files /dev/null and b/images/coffee.jpg differ
diff --git a/images/daniel.jpg b/images/daniel.jpg
new file mode 100644
index 0000000..7011959
Binary files /dev/null and b/images/daniel.jpg differ
diff --git a/images/fruit.jpg b/images/fruit.jpg
new file mode 100644
index 0000000..0d34ef6
Binary files /dev/null and b/images/fruit.jpg differ
diff --git a/images/girl.jpg b/images/girl.jpg
new file mode 100644
index 0000000..81f7432
Binary files /dev/null and b/images/girl.jpg differ
diff --git a/images/icons.svg b/images/icons.svg
new file mode 100644
index 0000000..8a70659
--- /dev/null
+++ b/images/icons.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/images/img1.jpg b/images/img1.jpg
new file mode 100644
index 0000000..958840d
Binary files /dev/null and b/images/img1.jpg differ
diff --git a/images/img2.jpg b/images/img2.jpg
new file mode 100644
index 0000000..082e5e8
Binary files /dev/null and b/images/img2.jpg differ
diff --git a/images/img3.jpg b/images/img3.jpg
new file mode 100644
index 0000000..f808bca
Binary files /dev/null and b/images/img3.jpg differ
diff --git a/images/mark.jpg b/images/mark.jpg
new file mode 100644
index 0000000..32ff103
Binary files /dev/null and b/images/mark.jpg differ
diff --git a/images/notebook.jpg b/images/notebook.jpg
new file mode 100644
index 0000000..7d43881
Binary files /dev/null and b/images/notebook.jpg differ
diff --git a/images/people-office.jpg b/images/people-office.jpg
new file mode 100644
index 0000000..ade312f
Binary files /dev/null and b/images/people-office.jpg differ
diff --git a/images/persons.jpg b/images/persons.jpg
new file mode 100644
index 0000000..4387099
Binary files /dev/null and b/images/persons.jpg differ
diff --git a/images/qrcode.jpg b/images/qrcode.jpg
new file mode 100644
index 0000000..ac98e5e
Binary files /dev/null and b/images/qrcode.jpg differ
diff --git a/images/tom.jpg b/images/tom.jpg
new file mode 100644
index 0000000..46075a5
Binary files /dev/null and b/images/tom.jpg differ
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..1a1fd08
--- /dev/null
+++ b/index.html
@@ -0,0 +1,543 @@
+
+
+
+
+
+
+
+ WebStudio
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Effective Solutions for Your Business
+
+
+
+
+
+
+
+
+
Values
+
+ -
+
+
+
+ Strategy
+
+ Our goal is to identify the business problem to walk away with
+ the perfect and creative solution.
+
+
+ -
+
+
+
+ Punctuality
+
+ Bring the key message to the brand's audience for the best price
+ within the shortest possible time.
+
+
+ -
+
+
+
+ Diligence
+
+ Research and confirm brands that present the strongest digital
+ growth opportunities and minimize risk.
+
+
+ -
+
+
+
+ Technologies
+
+ Design practice focused on digital experiences. We bring forth a
+ deep passion for problem-solving.
+
+
+
+
+
+
+
+
+
+
+
+
+
Our Team
+
+ -
+
+
+
Mark Guerrero
+
Product Designer
+
+
+
+ -
+
+
+
Tom Ford
+
Frontend Developer
+
+
+
+ -
+
+
+
Camila Garcia
+
Marketing
+
+
+
+ -
+
+
+
Daniel Wilson
+
UI Designer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Leave your contacts and we will call you back
+
+
+
+
+
+
diff --git a/js/modal.js b/js/modal.js
new file mode 100644
index 0000000..45ca0c6
--- /dev/null
+++ b/js/modal.js
@@ -0,0 +1,14 @@
+(() => {
+ const refs = {
+ openModalBtn: document.querySelector("[data-modal-open]"),
+ closeModalBtn: document.querySelector("[data-modal-close]"),
+ modal: document.querySelector("[data-modal]"),
+ };
+
+ refs.openModalBtn.addEventListener("click", toggleModal);
+ refs.closeModalBtn.addEventListener("click", toggleModal);
+
+ function toggleModal() {
+ refs.modal.classList.toggle("is-hidden");
+ }
+})();
\ No newline at end of file