diff --git a/src/images/about/about-us-text-big-desktop.png b/src/images/about/about-us-text-big-desktop.png
new file mode 100644
index 00000000..f9844ce6
Binary files /dev/null and b/src/images/about/about-us-text-big-desktop.png differ
diff --git a/src/images/about/about-us-text-big-desktop.svg b/src/images/about/about-us-text-big-desktop.svg
new file mode 100644
index 00000000..e8351e0b
--- /dev/null
+++ b/src/images/about/about-us-text-big-desktop.svg
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/about/about-us-text-desktop.png b/src/images/about/about-us-text-desktop.png
new file mode 100644
index 00000000..25e55889
Binary files /dev/null and b/src/images/about/about-us-text-desktop.png differ
diff --git a/src/images/about/about-us-text-desktop.svg b/src/images/about/about-us-text-desktop.svg
new file mode 100644
index 00000000..25145dc3
--- /dev/null
+++ b/src/images/about/about-us-text-desktop.svg
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/about/about-us-text-tablet.svg b/src/images/about/about-us-text-tablet.svg
new file mode 100644
index 00000000..c3273765
--- /dev/null
+++ b/src/images/about/about-us-text-tablet.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/about/about-us-text.png b/src/images/about/about-us-text.png
new file mode 100644
index 00000000..896259f0
Binary files /dev/null and b/src/images/about/about-us-text.png differ
diff --git a/src/images/about/slider/slide1.png b/src/images/about/slider/slide1.png
new file mode 100644
index 00000000..98ca21ea
Binary files /dev/null and b/src/images/about/slider/slide1.png differ
diff --git a/src/images/about/slider/slide2.jpg b/src/images/about/slider/slide2.jpg
new file mode 100644
index 00000000..e3e0cc5a
Binary files /dev/null and b/src/images/about/slider/slide2.jpg differ
diff --git a/src/images/about/slider/slide3.jpg b/src/images/about/slider/slide3.jpg
new file mode 100644
index 00000000..46d3c2c9
Binary files /dev/null and b/src/images/about/slider/slide3.jpg differ
diff --git a/src/images/about/slider/slide4.jpg b/src/images/about/slider/slide4.jpg
new file mode 100644
index 00000000..7acbcb8f
Binary files /dev/null and b/src/images/about/slider/slide4.jpg differ
diff --git a/src/images/about/slider/slide5.jpg b/src/images/about/slider/slide5.jpg
new file mode 100644
index 00000000..3eaabf98
Binary files /dev/null and b/src/images/about/slider/slide5.jpg differ
diff --git a/src/images/common-images/arrow-down-icon.svg b/src/images/common-images/arrow-down-icon.svg
new file mode 100644
index 00000000..1782f2a7
--- /dev/null
+++ b/src/images/common-images/arrow-down-icon.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/images/common-images/arrow-left-icon.svg b/src/images/common-images/arrow-left-icon.svg
new file mode 100644
index 00000000..6d4ea073
--- /dev/null
+++ b/src/images/common-images/arrow-left-icon.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/images/common-images/detail-minus-icon.svg b/src/images/common-images/detail-minus-icon.svg
new file mode 100644
index 00000000..37a7c4f5
--- /dev/null
+++ b/src/images/common-images/detail-minus-icon.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/images/common-images/detail-plus-icon.svg b/src/images/common-images/detail-plus-icon.svg
new file mode 100644
index 00000000..4a37bb8e
--- /dev/null
+++ b/src/images/common-images/detail-plus-icon.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/images/common-images/katvr-favicon.svg b/src/images/common-images/katvr-favicon.svg
new file mode 100644
index 00000000..01a2193e
--- /dev/null
+++ b/src/images/common-images/katvr-favicon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/images/common-images/katvr-logo.svg b/src/images/common-images/katvr-logo.svg
new file mode 100644
index 00000000..0dc340bd
--- /dev/null
+++ b/src/images/common-images/katvr-logo.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/images/common-images/menu-close-icon.svg b/src/images/common-images/menu-close-icon.svg
new file mode 100644
index 00000000..9ebfb1b9
--- /dev/null
+++ b/src/images/common-images/menu-close-icon.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/images/common-images/menu-icon.svg b/src/images/common-images/menu-icon.svg
new file mode 100644
index 00000000..1cc5401c
--- /dev/null
+++ b/src/images/common-images/menu-icon.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/images/common-images/scroll-up-button.svg b/src/images/common-images/scroll-up-button.svg
new file mode 100644
index 00000000..89b022d2
--- /dev/null
+++ b/src/images/common-images/scroll-up-button.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/images/common-images/video-player-button-white.svg b/src/images/common-images/video-player-button-white.svg
new file mode 100644
index 00000000..9b21cdf6
--- /dev/null
+++ b/src/images/common-images/video-player-button-white.svg
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/common-images/video-player-button.svg b/src/images/common-images/video-player-button.svg
new file mode 100644
index 00000000..3220562e
--- /dev/null
+++ b/src/images/common-images/video-player-button.svg
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/favicon/faviconKateVR.png b/src/images/favicon/faviconKateVR.png
new file mode 100644
index 00000000..3111568e
Binary files /dev/null and b/src/images/favicon/faviconKateVR.png differ
diff --git a/src/images/header/headerBGImg.png b/src/images/header/headerBGImg.png
new file mode 100644
index 00000000..aadbc804
Binary files /dev/null and b/src/images/header/headerBGImg.png differ
diff --git a/src/images/header/headerBg-fifth.png b/src/images/header/headerBg-fifth.png
new file mode 100644
index 00000000..fc962d7e
Binary files /dev/null and b/src/images/header/headerBg-fifth.png differ
diff --git a/src/images/header/headerBg-fourth.png b/src/images/header/headerBg-fourth.png
new file mode 100644
index 00000000..516e821a
Binary files /dev/null and b/src/images/header/headerBg-fourth.png differ
diff --git a/src/images/header/headerBg-phone.png b/src/images/header/headerBg-phone.png
new file mode 100644
index 00000000..0e5a7504
Binary files /dev/null and b/src/images/header/headerBg-phone.png differ
diff --git a/src/images/header/headerBg-second.png b/src/images/header/headerBg-second.png
new file mode 100644
index 00000000..74b70aa3
Binary files /dev/null and b/src/images/header/headerBg-second.png differ
diff --git a/src/images/header/headerBg-third.png b/src/images/header/headerBg-third.png
new file mode 100644
index 00000000..71fc866c
Binary files /dev/null and b/src/images/header/headerBg-third.png differ
diff --git a/src/images/social-icons/fb-icon.svg b/src/images/social-icons/fb-icon.svg
new file mode 100644
index 00000000..e4de883e
--- /dev/null
+++ b/src/images/social-icons/fb-icon.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/images/social-icons/reddit-icon.svg b/src/images/social-icons/reddit-icon.svg
new file mode 100644
index 00000000..53bade5b
--- /dev/null
+++ b/src/images/social-icons/reddit-icon.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/images/social-icons/twitter-icon.svg b/src/images/social-icons/twitter-icon.svg
new file mode 100644
index 00000000..084900b8
--- /dev/null
+++ b/src/images/social-icons/twitter-icon.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/images/social-icons/youtube-icon.svg b/src/images/social-icons/youtube-icon.svg
new file mode 100644
index 00000000..59b97532
--- /dev/null
+++ b/src/images/social-icons/youtube-icon.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/images/tech-specs/bottom-line-mask.svg b/src/images/tech-specs/bottom-line-mask.svg
new file mode 100644
index 00000000..3caea26c
--- /dev/null
+++ b/src/images/tech-specs/bottom-line-mask.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/images/tech-specs/bottom-line.svg b/src/images/tech-specs/bottom-line.svg
new file mode 100644
index 00000000..a1f02465
--- /dev/null
+++ b/src/images/tech-specs/bottom-line.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/images/tech-specs/circle-line.svg b/src/images/tech-specs/circle-line.svg
new file mode 100644
index 00000000..b90496be
--- /dev/null
+++ b/src/images/tech-specs/circle-line.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/images/tech-specs/detail-plus.svg b/src/images/tech-specs/detail-plus.svg
new file mode 100644
index 00000000..9c4a3f56
--- /dev/null
+++ b/src/images/tech-specs/detail-plus.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/images/tech-specs/device-bg.png b/src/images/tech-specs/device-bg.png
new file mode 100644
index 00000000..6da536db
Binary files /dev/null and b/src/images/tech-specs/device-bg.png differ
diff --git a/src/images/tech-specs/right-line-mask.svg b/src/images/tech-specs/right-line-mask.svg
new file mode 100644
index 00000000..ab6f647e
--- /dev/null
+++ b/src/images/tech-specs/right-line-mask.svg
@@ -0,0 +1,8 @@
+
+
+ Source: openclipart.org/detail/209545
+
+
+
+
+
\ No newline at end of file
diff --git a/src/images/tech-specs/right-line.svg b/src/images/tech-specs/right-line.svg
new file mode 100644
index 00000000..f47de02d
--- /dev/null
+++ b/src/images/tech-specs/right-line.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/images/tech-specs/up-line.svg b/src/images/tech-specs/up-line.svg
new file mode 100644
index 00000000..ef522dfa
--- /dev/null
+++ b/src/images/tech-specs/up-line.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/images/using-areas/buildings.svg b/src/images/using-areas/buildings.svg
new file mode 100644
index 00000000..f375f9c9
--- /dev/null
+++ b/src/images/using-areas/buildings.svg
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/using-areas/network.svg b/src/images/using-areas/network.svg
new file mode 100644
index 00000000..eaf7896e
--- /dev/null
+++ b/src/images/using-areas/network.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/using-areas/power-hand.svg b/src/images/using-areas/power-hand.svg
new file mode 100644
index 00000000..f7ec9950
--- /dev/null
+++ b/src/images/using-areas/power-hand.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/images/using-areas/study-hat.svg b/src/images/using-areas/study-hat.svg
new file mode 100644
index 00000000..62adf3e2
--- /dev/null
+++ b/src/images/using-areas/study-hat.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/images/why-cat-loco/modern.svg b/src/images/why-cat-loco/modern.svg
new file mode 100644
index 00000000..30b6079b
--- /dev/null
+++ b/src/images/why-cat-loco/modern.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/why-cat-loco/signal.svg b/src/images/why-cat-loco/signal.svg
new file mode 100644
index 00000000..60de1b3e
--- /dev/null
+++ b/src/images/why-cat-loco/signal.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/why-cat-loco/vr-screen.svg b/src/images/why-cat-loco/vr-screen.svg
new file mode 100644
index 00000000..912319b6
--- /dev/null
+++ b/src/images/why-cat-loco/vr-screen.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/index.html b/src/index.html
index 8019b83e..d9765354 100644
--- a/src/index.html
+++ b/src/index.html
@@ -1,19 +1,1342 @@
-
+
- Title
+ KatVR
+
+
+
+
+
-
- Hello Mate Academy
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MORE THAN
+ GAMING!
+
+
+ This also made for people who are interested in...
+
+
+
+
+
Education
+
+ Create aducational simulations, trainings and much more with
+ unlimited virtual space and minimum physical space
+
+
+
+
+
Real Estate
+
+ Desighn architectural projects in a deeply realistic
+ environment allowing visitors to freely walk around, and
+ feel their vibe
+
+
+
+
+
Fitness
+
+ Combine business with pleasure, and discover countless ways
+ to stay fit while playing your favorite VR Games!
+
+
+
+
+
Social interactions
+
+ Hang out with your friends in the virtual world when you
+ can’t meet space requirements
+
+
+
+
+
+
+
+
+
+
+
+
+
+ About
+ Product
+
+
+
+
+
+
+
+
+ Previous
+
+
+ Next
+
+
+
+
+
+
+
+
+ About
+ Product
+
+
+
+ KAT loco is a foot-based VR locomotion system that gives
+ complete physical control over lower-body actions, allowing
+ you to freely walk, run, and carry out just any other
+ movement in virtual reality.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tech
+ specs
+
+
+
+
+
+
+ Type: Lthium-lon polymer batteries
+
+ Capacity: 370mAh
+
+ Battery life: 10h of continuous use 150 hours on stand by
+
+ Charging: Fast charging - 1 hour
+
+ Charging voltage and current: 5V = 0.5A
+
+
+
+
+
+ Weight: 35g/1.23oz each
+
+ Dimension: 50mm/1.97in
+
+ 24mm/0.94in
+
+ Light: LED lights
+
+
+
+
+
+ Wireless: Bluetooth 4.2
+
+ Signal range: 5m
+
+ Receiver: USB 2.0 and above
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Why
+ Kat loco?
+
+
+
+
+
Universally Compatible
+
+ KAT Loco offers universal compatibility across all major VR
+ headsets and...
+
+
+
+
+
VR/PC Control panel
+
+ Our Multifunctional Software allows for quick access to KAT
+ Loco’s...
+
+
+
+
+
Wireless sensors
+
+ What makes it even more advanced, KAT Loco is entirely
+ wireless, and..
+
+
+
+
+
+ Buy Now
+
+
+
+
+
+
+
+
+
+
+
+
Have any questions
+
+ Get in
+ touch
+
+
+
+
+
+
Have any questions
+
+ Get in
+ touch
+
+
+
+ Our manager will reply you within 15 minutes
+
+
+
+
+
+
+
+
+
+
+ Our manager will reply you within 15 minutes
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/scripts/main.js b/src/scripts/main.js
index ad9a93a7..df73a577 100644
--- a/src/scripts/main.js
+++ b/src/scripts/main.js
@@ -1 +1,232 @@
'use strict';
+
+document.addEventListener("DOMContentLoaded", function () {
+
+ // #region YouTube video
+ const hdrButton = document.getElementById("header__button");
+ const hdrCloseButton = document.getElementById("header__close-button");
+ const hdrContainer = document.getElementById("header__video-container");
+ const hdrIframe = document.getElementById("header__video-frame");
+
+ const abtButton = document.getElementById("about__button");
+ const abtCloseButton = document.getElementById("about__close-button");
+ const abtContainer = document.getElementById("about__video-container");
+ const abtIframe = document.getElementById("about__video-frame");
+
+
+ hdrButton.addEventListener('click', function () {
+ hdrContainer.classList.remove('hidden');
+ hdrIframe.setAttribute('src', hdrButton.dataset.video);
+ });
+
+ hdrCloseButton.addEventListener('click', function () {
+ hdrContainer.classList.add('hidden');
+ hdrIframe.setAttribute('src', "");
+ });
+
+ abtButton.addEventListener('click', function () {
+ abtContainer.classList.remove('hidden');
+ abtIframe.setAttribute('src', abtButton.dataset.video);
+ });
+
+ abtCloseButton.addEventListener('click', function () {
+ abtContainer.classList.add('hidden');
+ abtIframe.setAttribute('src', "");
+ });
+
+ // #endregion
+
+ // #region About slider
+const aboutSlides = document.querySelectorAll(".about__slider .slider__slide");
+const aboutPrevBtn = document.getElementById("about-prev");
+const aboutNextBtn = document.getElementById("about-next");
+const aboutProgressBar = document.getElementById("about-progress-bar");
+const aboutProgressLine = document.getElementById("about-progress-line");
+const aboutPaginationCount = document.querySelector(".about__slider .slider__pagination-count");
+const aboutTotalSlides = aboutSlides.length;
+const aboutPaginationDots = document.querySelectorAll(".about__slider .dot");
+
+let aboutCurrent = 0;
+let aboutInterval = null;
+
+ function showAboutSlide(index) {
+ aboutSlides.forEach((slide, i) => {
+ slide.classList.toggle("active", i === index);
+ slide.style.opacity = i === index ? "1" : "0";
+ slide.style.visibility = i === index ? "visible" : "hidden";
+ });
+
+ if (aboutPaginationCount) {
+ aboutPaginationCount.textContent = `${index + 1}/${aboutTotalSlides}`;
+ }
+
+ if (aboutPaginationDots.length) {
+ aboutPaginationDots.forEach((dot, i) => {
+ dot.classList.toggle("active", i === index);
+ });
+ }
+
+ if (aboutProgressBar && aboutProgressLine) {
+ const lineWidth = aboutProgressLine.offsetWidth;
+ const barWidth = aboutProgressBar.offsetWidth;
+ const maxTranslate = lineWidth - barWidth;
+ const step = aboutTotalSlides > 1 ? maxTranslate / (aboutTotalSlides - 1) : 0;
+ aboutProgressBar.style.transform = `translateX(${index * step}px)`;
+ }
+}
+
+function nextAboutSlide() {
+ aboutCurrent = (aboutCurrent + 1) % aboutSlides.length;
+ showAboutSlide(aboutCurrent);
+}
+
+function prevAboutSlide() {
+ aboutCurrent = (aboutCurrent - 1 + aboutSlides.length) % aboutSlides.length;
+ showAboutSlide(aboutCurrent);
+}
+
+function startAboutAuto() {
+ if (aboutInterval) clearInterval(aboutInterval);
+ aboutInterval = setInterval(nextAboutSlide, 3000);
+}
+
+if (aboutSlides.length > 0) {
+ showAboutSlide(aboutCurrent);
+ startAboutAuto();
+
+ if (aboutNextBtn) {
+ aboutNextBtn.addEventListener("click", () => {
+ nextAboutSlide();
+ startAboutAuto();
+ });
+ }
+ if (aboutPrevBtn) {
+ aboutPrevBtn.addEventListener("click", () => {
+ prevAboutSlide();
+ startAboutAuto();
+ });
+ }
+}
+// #endregion
+
+ // #region tech-specs plusses
+ const plusFirst = document.getElementById("plus-detail-first");
+ const plusSecond = document.getElementById("plus-detail-second");
+ const plusThird = document.getElementById("plus-detail-third");
+
+ const infoFirst = document.querySelector(".tech-specs__info--first");
+ const infoSecond = document.querySelector(".tech-specs__info--second");
+ const infoThird = document.querySelector(".tech-specs__info--third");
+
+ if (plusFirst && infoFirst) {
+ plusFirst.addEventListener('click', function () {
+ plusFirst.classList.toggle('plus-active');
+ infoFirst.classList.toggle('tech-specs__info-active');
+ });
+ }
+ if (plusSecond && infoSecond) {
+ plusSecond.addEventListener('click', function () {
+ plusSecond.classList.toggle('plus-active');
+ infoSecond.classList.toggle('tech-specs__info-active');
+ });
+ }
+ if (plusThird && infoThird) {
+ plusThird.addEventListener('click', function () {
+ plusThird.classList.toggle('plus-active');
+ infoThird.classList.toggle('tech-specs__info-active');
+ });
+ }
+// #endregion
+
+ // #region Header slider
+ const slides = document.querySelectorAll(".header__slider .slider__slide");
+ const prevBtn = document.getElementById("button-prev");
+ const nextBtn = document.getElementById("button-next");
+ const headerProgressBar = document.getElementById("header-progress-bar");
+ const headerProgressLine = document.getElementById("header-progress-line");
+
+ const headerTotalSlides = slides.length;
+ let current = 0;
+ let interval = null;
+
+ function showSlide(index) {
+ slides.forEach((slide, i) => {
+ slide.classList.toggle("active", i === index);
+ slide.style.opacity = i === index ? "1" : "0";
+ slide.style.visibility = i === index ? "visible" : "hidden";
+ });
+ aboutPaginationCount.textContent = `${index + 1}/${aboutTotalSlides}`;
+
+ if (headerProgressBar && headerProgressLine) {
+ const lineWidth = headerProgressLine.offsetWidth;
+ const barWidth = headerProgressBar.offsetWidth;
+ const maxTranslate = lineWidth - barWidth;
+ const step = headerTotalSlides > 1 ? maxTranslate / (headerTotalSlides - 1) : 0;
+ headerProgressBar.style.transform = `translateX(${index * step}px)`;
+ }
+ }
+
+ function nextSlide() {
+ current = (current + 1) % slides.length;
+ showSlide(current);
+ }
+
+ function prevSlide() {
+ current = (current - 1 + slides.length) % slides.length;
+ showSlide(current);
+ }
+
+ function startAuto() {
+ if (interval) clearInterval(interval);
+ interval = setInterval(nextSlide, 3000);
+ }
+
+ if (slides.length > 0) {
+ showSlide(current);
+ startAuto();
+
+ if (nextBtn) {
+ nextBtn.addEventListener("click", () => {
+ nextSlide();
+ startAuto();
+ });
+ }
+ if (prevBtn) {
+ prevBtn.addEventListener("click", () => {
+ prevSlide();
+ startAuto();
+ });
+ }
+ }
+// #endregion
+
+ // #region error in the form input
+const inputFields = document.querySelectorAll("input");
+const errorMessages = {
+ name: "Please, fill your name*",
+ phone: "Please, fill your phone*",
+ email: "Please, fill your email*"
+};
+
+inputFields.forEach((input) => {
+ const label = input.closest(".form__field").querySelector(".form__field-name");
+ const formFieldPlace = input;
+
+ input.addEventListener("input", () => {
+ if (!input.checkValidity()) {
+ label.textContent = errorMessages[input.name];
+ label.classList.add("error");
+ formFieldPlace.classList.add("error-field");
+ } else {
+ label.textContent = label.getAttribute("data-default-text");
+ label.classList.remove("error");
+ formFieldPlace.classList.remove("error-field");
+ }
+ });
+});
+
+// #endregion
+
+});
+
+
diff --git a/src/styles/_typography.scss b/src/styles/_typography.scss
index 1837eb46..94fde18a 100644
--- a/src/styles/_typography.scss
+++ b/src/styles/_typography.scss
@@ -1,3 +1,136 @@
-h1 {
- @extend %h1;
+.page {
+ font-family: $fontFamilyInter;
+ font-weight: 400;
+ font-size: 16px;
+ line-height: 150%;
+ color: $greyC;
+ letter-spacing: 0;
+}
+
+.header-title {
+ font-size: 26px;
+ line-height: 130%;
+ letter-spacing: 0;
+ color: $whiteC;
+
+ &--bold {
+ font-weight: 900;
+ }
+
+ &-thin {
+ font-weight: 400;
+ color: $cyanC;
+ }
+
+ @include on-desktop {
+ font-size: 46px;
+ }
+}
+
+.section-title {
+ font-size: 21px;
+ line-height: 100%;
+ text-transform: uppercase;
+ color: $whiteC;
+
+ &--bold {
+ font-weight: 900;
+ }
+
+ &-thin {
+ font-weight: 400;
+ color: $cyanC;
+ }
+
+ @include on-desktop {
+ font-size: 36px;
+ line-height: 100%;
+ }
+}
+
+h3 {
+ font-weight: 900;
+ font-size: 18px;
+ line-height: 100%;
+ text-transform: uppercase;
+ color: $whiteC;
+}
+
+.slider__pagination-count {
+ font-size: 14px;
+ line-height: 100%;
+ font-weight: 400;
+}
+
+.form__field-name {
+ height: 21px;
+ font-size: 14px;
+}
+
+.button {
+ font-weight: 500;
+ font-size: 16px;
+ line-height: 130%;
+ text-align: center;
+}
+
+.top-bar__language-switcher {
+ font-weight: 500;
+ line-height: 130%;
+}
+
+.header__text {
+ font-weight: 500;
+
+ @include on-desktop {
+ font-size: 20px;
+ }
+}
+
+.header__price {
+ font-weight: 500;
+ font-size: 18px;
+ line-height: 100%;
+
+ @include on-desktop {
+ font-size: 20px;
+ }
+}
+
+.bottom__link,
+.bottom__button-more,
+.bottom__button {
+ font-weight: 500;
+ line-height: 150%;
+}
+
+.about__greeting {
+ font-size: 14px;
+ line-height: 100%;
+}
+
+.using-areas__text {
+ font-size: 12px;
+ line-height: 100%;
+
+ @include on-desktop {
+ font-size: 14px;
+ }
+}
+
+.tech-specs__info {
+ font-size: 12px;
+}
+
+.footer__link {
+ font-size: 13px;
+
+ @include on-tablet {
+ font-size: 14px;
+ }
+}
+
+.footer__contact {
+ font-size: 13px;
+ line-height: 100%;
}
diff --git a/src/styles/blocks/_buttons.scss b/src/styles/blocks/_buttons.scss
new file mode 100644
index 00000000..c20ef65c
--- /dev/null
+++ b/src/styles/blocks/_buttons.scss
@@ -0,0 +1,98 @@
+.button {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ cursor: pointer;
+ padding: 0;
+ border: none;
+ box-sizing: border-box;
+ color: $whiteC;
+ background-color: $cyanC;
+ border-radius: 4px;
+ transition-duration: $effectDuration;
+ width: 100%;
+ height: 40px;
+
+ @include on-tablet {
+ width: 200px;
+ height: 48px;
+ }
+
+ &:hover {
+ color: $cyanC;
+ background-color: $whiteC;
+ }
+
+ &:active {
+ color: $cyanC;
+ background-color: $whiteC;
+ }
+
+ &:disabled {
+ color: $ralphLaurenC;
+ background-color: $darkBlueMagentaC;
+ }
+}
+
+.button-play {
+ cursor: pointer;
+ display: flex;
+ background-color: transparent;
+ border: none;
+ background-image: url(../images/common-images/video-player-button.svg);
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ box-sizing: border-box;
+ padding: 0;
+ height: 70px;
+ align-items: center;
+ transition-duration: $effectDuration;
+}
+
+.button-play:hover {
+ background-image: url(../images/common-images/video-player-button-white.svg);
+}
+
+.slider-control__button {
+ cursor: pointer;
+ display: flex;
+ align-items: center;
+ background-color: transparent;
+ color: $whiteC;
+ border: none;
+ transition-duration: $effectDuration;
+ padding: 0;
+
+ @include hover(scale, 1.1);
+
+ &:hover {
+ color: $cyanC;
+ }
+}
+
+.scroll-up__link {
+ display: none;
+
+ @include on-tablet {
+ display: flex;
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ width: 48px;
+ height: 48px;
+ }
+}
+
+.scroll-up__button {
+ display: none;
+
+ @include on-tablet {
+ display: flex;
+ width: 100%;
+ height: 100%;
+ transition-duration: $effectDuration;
+
+ @include hover(scale, 1.1);
+ }
+}
diff --git a/src/styles/blocks/_contacts.scss b/src/styles/blocks/_contacts.scss
new file mode 100644
index 00000000..b62b0d5d
--- /dev/null
+++ b/src/styles/blocks/_contacts.scss
@@ -0,0 +1,14 @@
+.contacts {
+ &__contact {
+ display: flex;
+ flex-direction: column;
+ text-decoration: none;
+ color: $greyC;
+ transition-duration: $effectDuration;
+ width: max-content;
+
+ &:hover {
+ color: $cyanC;
+ }
+ }
+}
diff --git a/src/styles/blocks/_form.scss b/src/styles/blocks/_form.scss
new file mode 100644
index 00000000..abc40e16
--- /dev/null
+++ b/src/styles/blocks/_form.scss
@@ -0,0 +1,122 @@
+.form {
+ display: flex;
+ flex-direction: column;
+
+ &__field--message {
+ height: 88px;
+ }
+
+ &__field-place {
+ display: flex;
+ overflow: hidden;
+ resize: none;
+ background-color: transparent;
+ border: none;
+ height: 34px;
+ width: 100%;
+ padding: 0 2px 0 0;
+ transition: $effectDuration;
+ }
+
+ &__field-place--message {
+ height: 67px;
+ padding-top: 2px;
+ }
+
+ &__field {
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 24px;
+ border-bottom: 1px solid $ralphLaurenC;
+ height: 55px;
+ transition-duration: $effectDuration;
+
+ &-name {
+ height: 21px;
+ }
+ }
+
+ &__button {
+ margin-top: 30px;
+
+ @include on-tablet {
+ margin-top: 48px;
+ }
+ }
+
+ &__field-place::placeholder {
+ color: $greyC;
+ }
+
+ &__field-place:not(:placeholder-shown) {
+ color: $greyC;
+ font-weight: 700;
+ background-color: $blackBG;
+ }
+
+ &__field-place:hover::placeholder {
+ color: $greyC;
+ }
+
+ &__field-place:focus {
+ border: none;
+ outline: none;
+ border-bottom: 1px solid $cyanC;
+ color: $greyC;
+ font-weight: 600;
+ }
+
+ &__field:hover {
+ .form__field-name {
+ color: $cyanC;
+ }
+
+ .form__field-place {
+ border-bottom: 1px solid $cyanC;
+ }
+
+ &:active {
+ height: 55px;
+
+ .form__field-name {
+ color: $cyanC;
+ }
+
+ .form__field-place {
+ border-bottom: 1px solid $cyanC;
+ }
+ }
+ }
+}
+
+input:autofill,
+input:-webkit-autofill,
+input:-webkit-autofill:hover,
+input:-webkit-autofill:focus {
+ -webkit-text-fill-color: $greyC;
+ -webkit-box-shadow: 0 0 0 1000px $blackBG inset;
+}
+
+input:autofill:not(:placeholder-shown),
+input:-webkit-autofill:not(:placeholder-shown) {
+ -webkit-text-fill-color: $greyC;
+}
+
+textarea:-webkit-autofill,
+textarea:-webkit-autofill:hover,
+textarea:-webkit-autofill:focus {
+ -webkit-text-fill-color: $greyC;
+ -webkit-box-shadow: 0 0 0 1000px $blackBG inset;
+}
+
+textarea:-webkit-autofill:not(:placeholder-shown) {
+ -webkit-text-fill-color: $greyC;
+}
+
+.error {
+ color: $errorC;
+}
+
+.error-field {
+ border-bottom: 1px solid $errorC;
+}
diff --git a/src/styles/blocks/_header-bottom.scss b/src/styles/blocks/_header-bottom.scss
new file mode 100644
index 00000000..4aae9f44
--- /dev/null
+++ b/src/styles/blocks/_header-bottom.scss
@@ -0,0 +1,63 @@
+.bottom {
+ height: 39px;
+ align-items: center;
+
+ @include on-desktop {
+ &__nav {
+ display: flex;
+ }
+
+ &__list {
+ display: flex;
+ flex-direction: row;
+ gap: 39px;
+ }
+
+ &__item {
+ display: flex;
+ }
+
+ &__link {
+ color: $whiteC;
+ transition-duration: $effectDuration;
+
+ @include hover(scale, 1.1);
+
+ &:hover {
+ color: $cyanC;
+ }
+ }
+
+ &__button-more {
+ display: flex;
+ flex-direction: column;
+ cursor: pointer;
+ background-color: transparent;
+ border: none;
+ align-items: center;
+ gap: 7px;
+ padding: 0;
+ transition-duration: $effectDuration;
+
+ @include hover(scale, 1.1);
+ }
+
+ &__button-text {
+ color: $cyanC;
+ }
+
+ &__button-img {
+ width: 9px;
+ height: 6px;
+ }
+
+ &__slider-control {
+ display: flex;
+ flex-direction: column;
+ }
+
+ .slider-control__progress-bar {
+ width: 20%;
+ }
+ }
+}
diff --git a/src/styles/blocks/_icon.scss b/src/styles/blocks/_icon.scss
new file mode 100644
index 00000000..48e3f6f1
--- /dev/null
+++ b/src/styles/blocks/_icon.scss
@@ -0,0 +1,49 @@
+.icon {
+ display: flex;
+ cursor: pointer;
+ height: 20px;
+ width: 20px;
+ justify-content: center;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: cover;
+ transition-duration: $effectDuration;
+ align-self: flex-end;
+
+ @include hover(transform, scale(1.1));
+
+ &--menu {
+ background-image: url(../images/common-images/menu-icon.svg);
+ }
+
+ &--left {
+ background-image: url(../images/common-images/arrow-left-icon.svg);
+
+ @include on-desktop {
+ padding-top: 15px;
+ }
+ }
+
+ &--close {
+ background-image: url(../images/common-images/menu-close-icon.svg);
+ max-height: 20px;
+ align-self: flex-end;
+ margin-left: auto;
+ }
+
+ @include on-desktop {
+ display: none;
+ padding-top: 15px;
+ }
+
+ &--close-video {
+ content: '';
+ display: flex;
+ position: absolute;
+ right: 13px;
+ top: 15px;
+ z-index: 3;
+ background-color: transparent;
+ border: none;
+ }
+}
diff --git a/src/styles/blocks/_nav-menu.scss b/src/styles/blocks/_nav-menu.scss
new file mode 100644
index 00000000..2033d10d
--- /dev/null
+++ b/src/styles/blocks/_nav-menu.scss
@@ -0,0 +1,30 @@
+.nav {
+ display: flex;
+
+ &__list {
+ display: flex;
+ flex-direction: column;
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ }
+
+ &__link {
+ display: flex;
+ color: $whiteC;
+ text-decoration: none;
+ transition-duration: $effectDuration;
+ }
+
+ &__item {
+ transition-duration: $effectDuration;
+
+ &:hover {
+ .nav__link {
+ @include hover(scale, 1.1);
+
+ color: $cyanC;
+ }
+ }
+ }
+}
diff --git a/src/styles/blocks/_slider.scss b/src/styles/blocks/_slider.scss
new file mode 100644
index 00000000..635ef46b
--- /dev/null
+++ b/src/styles/blocks/_slider.scss
@@ -0,0 +1,118 @@
+.slider {
+ display: flex;
+ flex-direction: column;
+ position: relative;
+ overflow: hidden;
+ max-width: 100%;
+
+ &__pagination-desktop {
+ display: none;
+ font-size: 18px;
+ font-weight: bold;
+ width: 21px;
+
+ @include on-desktop {
+ display: flex;
+ }
+ }
+
+ &__images {
+ display: flex;
+ justify-content: space-between;
+ box-sizing: border-box;
+ transition: transform $effectDuration ease-in-out;
+ }
+
+ &__slide {
+ width: 100%;
+ height: 100%;
+ display: none;
+ box-sizing: border-box;
+
+ @include on-desktop {
+ width: 430px;
+ }
+
+ @include on-big-desktop {
+ width: 622px;
+ max-width: 622px;
+ }
+ }
+
+ &__slide.active {
+ display: flex;
+
+ @include on-desktop {
+ width: 430px;
+ max-width: 430px;
+ }
+
+ @include on-big-desktop {
+ width: 622px;
+ max-width: 622px;
+ }
+ }
+
+ &__pagination-count {
+ display: flex;
+ color: $cyanC;
+ }
+}
+
+.slider-control {
+ padding-left: 45px;
+ display: none;
+
+ @include on-desktop {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ width: 205px;
+ gap: 10px;
+ }
+
+ &__buttons {
+ display: flex;
+ width: 100%;
+ justify-content: space-between;
+ box-sizing: border-box;
+ }
+
+ &__progress-line {
+ width: 207px;
+ height: 1px;
+ background-color: $grey21C;
+ position: relative;
+ }
+
+ &__progress-bar {
+ width: 20%;
+ height: 100%;
+ background-color: $cyanC;
+ transition: width $effectDuration ease-in-out;
+ }
+}
+
+.pagination-dots {
+ display: flex;
+ justify-content: center;
+ padding-bottom: 20px;
+ gap: 6px;
+ margin-top: 15px;
+
+ @include on-desktop {
+ display: none;
+ }
+}
+
+.dot {
+ cursor: pointer;
+ width: 4px;
+ height: 4px;
+ background-color: $notActiveC;
+ border-radius: 50%;
+}
+
+.dot.active {
+ background-color: $whiteC;
+}
diff --git a/src/styles/blocks/_tech-specs-desktop.scss b/src/styles/blocks/_tech-specs-desktop.scss
new file mode 100644
index 00000000..9ec94daf
--- /dev/null
+++ b/src/styles/blocks/_tech-specs-desktop.scss
@@ -0,0 +1,114 @@
+.tech-specs {
+ &__desktop {
+ display: none;
+
+ @include on-desktop {
+ display: flex;
+ margin: auto;
+ max-width: 1055px;
+ height: 355px;
+ position: relative;
+ }
+
+ @include on-big-desktop {
+ width: 1175px;
+ max-width: 1175px;
+ }
+ }
+
+ &__block {
+ display: flex;
+ flex-direction: row;
+ position: absolute;
+ height: max-content;
+ }
+
+ &__block--first {
+ right: 50%;
+ }
+
+ &__block--second {
+ gap: 17px;
+ left: 50%;
+ top: 125px;
+ transform: translateY(-50%);
+
+ @include on-big-desktop {
+ left: 47%;
+ gap: 21px;
+ }
+ }
+
+ &__block--third {
+ bottom: 14px;
+ right: 61%;
+ align-items: flex-end;
+ }
+
+ &__information {
+ display: flex;
+ flex-direction: column;
+ width: max-content;
+ max-width: 344px;
+ gap: 21px;
+ }
+
+ &__information--third {
+ margin-bottom: -17px;
+ margin-right: -60px;
+ }
+
+ &__line-img {
+ display: flex;
+ background-size: contain;
+ background-repeat: no-repeat;
+ }
+
+ &__line-img--top {
+ display: flex;
+ background-image: url(../images/tech-specs/up-line.svg);
+ background-position: left 6px;
+ min-height: 72px;
+ width: 403px;
+ z-index: 1;
+ margin-left: -80px;
+
+ @include on-big-desktop {
+ width: 431px;
+ }
+ }
+
+ &__line-img--right {
+ background-image: url(../images/tech-specs/right-line.svg);
+ background-position: left 8px;
+ width: 185px;
+ min-height: 245px;
+
+ @include on-big-desktop {
+ background-image: url(../images/tech-specs/right-line-mask.svg);
+ background-position: right;
+ width: 283px;
+ min-height: 245px;
+ }
+ }
+
+ &__line-img--bottom {
+ background-image: url(../images/tech-specs/bottom-line.svg);
+ width: 134px;
+ min-height: 113px;
+ margin-bottom: 80px;
+
+ @include on-big-desktop {
+ background-image: url(../images/tech-specs/bottom-line-mask.svg);
+ width: 241px;
+ min-height: 113px;
+ }
+ }
+
+ &__line-img--circle {
+ background-image: url(../images/tech-specs/circle-line.svg);
+ width: 40px;
+ min-height: 201px;
+ transform: rotate(-11deg);
+ }
+}
diff --git a/src/styles/blocks/_tech-specs-mob-tab.scss b/src/styles/blocks/_tech-specs-mob-tab.scss
new file mode 100644
index 00000000..787960bb
--- /dev/null
+++ b/src/styles/blocks/_tech-specs-mob-tab.scss
@@ -0,0 +1,126 @@
+.tech-specs {
+ &__detail {
+ cursor: pointer;
+ display: flex;
+ position: absolute;
+ width: 34px;
+ padding: 0;
+ height: 34px;
+ border-radius: 50%;
+ box-sizing: border-box;
+ border: 2px solid $white14C;
+ background-color: $cyanC;
+ background-image: url(../images/common-images/detail-plus-icon.svg);
+ background-repeat: no-repeat;
+ background-size: 12px 12px;
+ background-position: center;
+ transition-duration: $effectDuration;
+
+ @include on-tablet {
+ width: 62px;
+ height: 62px;
+ background-size: 22px 22px;
+ }
+
+ @include on-desktop {
+ display: none;
+ }
+
+ @include hover(scale, 1.1);
+
+ &--first {
+ left: 69px;
+ top: 27px;
+
+ @include on-tablet {
+ top: 25px;
+ left: 65px;
+ }
+ }
+
+ &--second {
+ top: 50%;
+ transform: translateY(-50%);
+ right: 35px;
+
+ @include on-tablet {
+ right: 50px;
+ }
+ }
+
+ &--third {
+ left: 0;
+ bottom: 40px;
+
+ @include on-tablet {
+ left: -30px;
+ bottom: 50px;
+ }
+ }
+ }
+
+ &__information-active {
+ display: flex;
+ }
+
+ &__info {
+ opacity: 0;
+ display: none;
+ position: absolute;
+ background-color: $darkBlueMagentaC;
+ color: $greyC;
+ width: max-content;
+ height: auto;
+ align-items: center;
+ justify-content: center;
+ padding: 17px 10px 22px 11px;
+ border-radius: 4px;
+ transition: opacity $effectDuration;
+
+ @include on-desktop {
+ display: none;
+ }
+
+ &--first {
+ left: 20px;
+ top: 25px;
+
+ @include on-tablet {
+ top: 42px;
+ left: -10px;
+ }
+ }
+
+ &--second {
+ top: -5px;
+ left: -30px;
+
+ @include on-tablet {
+ inset: auto 0 0 auto;
+ }
+ }
+
+ &--third {
+ bottom: 5px;
+ left: 25px;
+
+ @include on-tablet {
+ bottom: 0;
+ left: 48px;
+ }
+ }
+ }
+}
+
+.plus-active {
+ background-image: url(../images/common-images/detail-minus-icon.svg);
+ background-repeat: no-repeat;
+ background-size: 12px 12px;
+ background-position: center;
+}
+
+.tech-specs__info-active {
+ display: flex;
+ opacity: 1;
+ z-index: 2;
+}
diff --git a/src/styles/blocks/_top-bar.scss b/src/styles/blocks/_top-bar.scss
new file mode 100644
index 00000000..bb0c28bd
--- /dev/null
+++ b/src/styles/blocks/_top-bar.scss
@@ -0,0 +1,78 @@
+.top-bar {
+ display: flex;
+ position: sticky;
+ top: 0;
+ padding-block: 20px;
+ justify-content: space-between;
+ align-items: center;
+
+ &__middle {
+ display: none;
+
+ @include on-desktop {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ width: 67%;
+ }
+ }
+
+ &__language-switcher {
+ display: none;
+ cursor: pointer;
+
+ @include on-desktop {
+ display: flex;
+ background-color: transparent;
+ color: $cyanC;
+ border: none;
+ width: 40px;
+ height: 21px;
+ transition-duration: $effectDuration;
+
+ @include hover(scale, 1.1);
+
+ &:focus {
+ .language-switcher__option {
+ appearance: none;
+ color: $whiteC;
+ background-color: $blackBG;
+ transition-duration: $effectDuration;
+ border: none;
+ outline: none;
+ }
+
+ .language-switcher__option:hover {
+ background: $cyanC;
+ color: $whiteC;
+ }
+ }
+ }
+ }
+
+ &__nav {
+ width: 315px;
+ }
+
+ .nav__list {
+ flex-direction: row;
+ width: 100%;
+ justify-content: space-between;
+ }
+
+ &__button {
+ display: none;
+
+ @include on-desktop {
+ display: flex;
+ }
+ }
+
+ &__icon {
+ display: flex;
+
+ @include on-desktop {
+ display: none;
+ }
+ }
+}
diff --git a/src/styles/blocks/_using-area.scss b/src/styles/blocks/_using-area.scss
new file mode 100644
index 00000000..f8d2708f
--- /dev/null
+++ b/src/styles/blocks/_using-area.scss
@@ -0,0 +1,38 @@
+.area {
+ transition-duration: $effectDuration;
+ box-sizing: border-box;
+ padding: 1px;
+
+ @include on-tablet {
+ &:hover {
+ border: 1px solid $cyanC;
+ border-radius: 20px;
+ }
+ }
+ &__img {
+ display: none;
+
+ @include on-tablet {
+ display: flex;
+ max-height: 84px;
+ }
+ }
+
+ &__title {
+ text-align: left;
+ padding-bottom: 11px;
+
+ @include on-tablet {
+ text-align: center;
+ padding: 30px 0 18px;
+ }
+ }
+
+ &__text {
+ color: $greyC;
+
+ @include on-tablet {
+ text-align: center;
+ }
+ }
+}
diff --git a/src/styles/blocks/_why-cat-loco-card.scss b/src/styles/blocks/_why-cat-loco-card.scss
new file mode 100644
index 00000000..26feea6f
--- /dev/null
+++ b/src/styles/blocks/_why-cat-loco-card.scss
@@ -0,0 +1,42 @@
+.cards {
+ justify-content: center;
+
+ &__card {
+ display: flex;
+ flex-direction: column;
+ box-sizing: border-box;
+ transition-duration: $effectDuration;
+ padding: 1px;
+
+ @include on-tablet {
+ &:hover {
+ border: 1px solid $cyanC;
+ border-radius: 20px;
+ }
+ }
+ }
+
+ &__img {
+ display: none;
+
+ @include on-tablet {
+ display: flex;
+ max-height: 80px;
+ }
+ }
+
+ &__title {
+ padding-bottom: 11px;
+
+ @include on-tablet {
+ text-align: center;
+ padding: 22px 0 27px;
+ }
+ }
+
+ &__text {
+ @include on-tablet {
+ text-align: center;
+ }
+ }
+}
diff --git a/src/styles/blocks/_youtube-video.scss b/src/styles/blocks/_youtube-video.scss
new file mode 100644
index 00000000..91cac648
--- /dev/null
+++ b/src/styles/blocks/_youtube-video.scss
@@ -0,0 +1,52 @@
+.hidden {
+ opacity: 0;
+ visibility: hidden;
+ transition: opacity $effectDuration ease-in-out visibility 0.3s ease-in-out;
+}
+
+.video-container {
+ display: flex;
+ position: absolute;
+ z-index: 2;
+ width: 100%;
+ min-height: 207px;
+ top: 0;
+ transition: ease-in-out;
+ transition-duration: $effectDuration;
+
+ @include on-tablet {
+ height: 55vh;
+ }
+
+ @include on-desktop {
+ width: 68%;
+ left: 16%;
+ }
+}
+
+.video-wrapper {
+ display: flex;
+ width: 100%;
+ min-height: 207px;
+
+ @include on-tablet {
+ height: 55vh;
+ }
+}
+
+.video-frame {
+ display: flex;
+ position: relative;
+ border: none;
+ width: 100%;
+ height: 207px;
+
+ @include on-tablet {
+ height: 55vh;
+ }
+}
+
+.icon--close-video {
+ position: absolute;
+ z-index: 2;
+}
diff --git a/src/styles/main.scss b/src/styles/main.scss
index fb9195d1..b8307838 100644
--- a/src/styles/main.scss
+++ b/src/styles/main.scss
@@ -1,7 +1,26 @@
@import 'utils';
@import 'fonts';
@import 'typography';
-
-body {
- background: $c-gray;
-}
+@import 'sections/page';
+@import 'blocks/buttons';
+@import 'blocks/icon';
+@import 'blocks/top-bar';
+@import 'blocks/slider';
+@import 'blocks/youtube-video';
+@import 'blocks/nav-menu';
+@import 'blocks/header-bottom';
+@import 'blocks/using-area';
+@import 'blocks/tech-specs-mob-tab';
+@import 'blocks/tech-specs-desktop';
+@import 'blocks/contacts';
+@import 'blocks/form';
+@import 'blocks/why-cat-loco-card';
+@import 'sections/header';
+@import 'sections/page-menu';
+@import 'sections/help';
+@import 'sections/about';
+@import 'sections/tech-specs';
+@import 'sections/why-cat-loco';
+@import 'sections/questions';
+@import 'sections/using-areas';
+@import 'sections/footer';
diff --git a/src/styles/sections/_about.scss b/src/styles/sections/_about.scss
new file mode 100644
index 00000000..3b771702
--- /dev/null
+++ b/src/styles/sections/_about.scss
@@ -0,0 +1,219 @@
+.about {
+ background: $linearGradient;
+
+ &__content {
+ display: flex;
+ flex-direction: column;
+ position: relative;
+ padding-block: 50px;
+ gap: 88px;
+
+ @include on-tablet {
+ padding: 70px 0 50px;
+ gap: 84px;
+ }
+
+ @include on-desktop {
+ padding: 100px 0 98px;
+ gap: 183px;
+ }
+
+ @include on-big-desktop {
+ padding: 147px 0 156px;
+ gap: 175px;
+ }
+ }
+
+ .section-title {
+ padding-bottom: 20px;
+
+ @include on-tablet {
+ padding-bottom: 30px;
+ }
+ }
+
+ .section-title--first {
+ display: flex;
+
+ @include on-tablet {
+ display: none;
+ }
+ }
+
+ .section-title--right {
+ display: none;
+
+ @include on-tablet {
+ display: flex;
+ }
+
+ @include on-big-desktop {
+ height: 72px;
+ }
+ }
+
+ .section-title--second {
+ padding-bottom: 22px;
+
+ @include on-tablet {
+ padding-bottom: 32px;
+ }
+ }
+
+ &__top {
+ display: flex;
+ flex-direction: column;
+
+ @include on-tablet {
+ justify-content: space-between;
+ flex-direction: row;
+ gap: 20px;
+ }
+
+ @include on-desktop {
+ gap: 107px;
+ }
+ }
+
+ &__images {
+ gap: 23px;
+ height: 67vw;
+
+ @include on-tablet {
+ min-width: 340px;
+ min-height: 270px;
+ height: 270px;
+ }
+
+ @include on-desktop {
+ width: 430px;
+ min-width: 430px;
+ height: 290px;
+ max-height: 290px;
+ justify-self: right;
+ padding-bottom: 12px;
+ }
+
+ @include on-big-desktop {
+ width: 622px;
+ min-width: 622px;
+ }
+ }
+
+ &__product-info {
+ display: flex;
+ flex-direction: column;
+
+ @include on-tablet {
+ width: 49%;
+ }
+
+ @include on-desktop {
+ width: 31%;
+ }
+
+ @include on-big-desktop {
+ width: 30%;
+ }
+ }
+
+ &__button-play {
+ display: flex;
+ margin-top: 15px;
+ height: 71px;
+ width: 249px;
+
+ @include on-desktop {
+ margin-top: 21px;
+ }
+ }
+
+ &__slider {
+ width: 100%;
+ height: auto;
+
+ @include on-tablet {
+ width: 50%;
+ height: 290px;
+ }
+
+ @include on-desktop {
+ margin-left: auto;
+ width: 430px;
+ height: 336px;
+ }
+
+ @include on-big-desktop {
+ width: 622px;
+ }
+ }
+
+ &__bottom {
+ display: flex;
+ align-items: center;
+
+ @include on-tablet {
+ height: 255px;
+ justify-content: space-between;
+ }
+
+ @include on-desktop {
+ height: 346px;
+ gap: 101px;
+ }
+ }
+
+ &__information {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+
+ @include on-tablet {
+ max-width: 65%;
+ }
+
+ @include on-desktop {
+ width: 41%;
+ }
+
+ @include on-big-desktop {
+ width: 40%;
+ }
+ }
+
+ &__img-container {
+ display: none;
+
+ @include on-tablet {
+ display: flex;
+ flex-direction: row;
+ height: 100%;
+ width: 33%;
+ background-image: url(../images/about/about-us-text.png);
+ background-repeat: no-repeat;
+ background-size: auto 90%;
+ background-position: center;
+ }
+
+ @include on-desktop {
+ width: 48%;
+ background-image: url(../images/about/about-us-text-desktop.png);
+ background-position: left;
+ }
+
+ @include on-big-desktop {
+ width: 52%;
+ background-image: url(../images/about/about-us-text-big-desktop.png);
+ background-position: left;
+ }
+ }
+
+ &__greeting {
+ color: $cyanC;
+ padding-bottom: 11px;
+
+ @include on-desktop {
+ padding-bottom: 15px;
+ }
+ }
+}
diff --git a/src/styles/sections/_footer.scss b/src/styles/sections/_footer.scss
new file mode 100644
index 00000000..0f003463
--- /dev/null
+++ b/src/styles/sections/_footer.scss
@@ -0,0 +1,130 @@
+.footer {
+ background-color: $totalBlackC;
+
+ &__content {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ padding: 45px 0 50px;
+
+ @include on-tablet {
+ flex-direction: row;
+ padding-block: 21px;
+ align-items: center;
+ }
+
+ @include on-desktop {
+ padding-block: 39px;
+ }
+ }
+
+ &__main-info {
+ display: flex;
+ justify-content: space-between;
+ padding-top: 15px;
+
+ @include on-tablet {
+ align-items: center;
+ padding: 0;
+ width: 100%;
+ }
+ }
+
+ &__left {
+ display: flex;
+ flex-direction: column;
+ gap: 15px;
+
+ @include on-tablet {
+ flex-direction: row;
+ margin: auto;
+ }
+ }
+
+ &__logo-link {
+ height: 100%;
+ display: flex;
+
+ &--mob {
+ @include on-tablet {
+ display: none;
+ }
+ }
+
+ &--tablet {
+ display: none;
+
+ @include on-tablet {
+ display: flex;
+ }
+ }
+ }
+
+ &__logo {
+ height: 14px;
+ width: auto;
+ }
+
+ &__nav {
+ @include on-tablet {
+ width: 306px;
+ }
+ }
+
+ &__list {
+ gap: 12px;
+
+ @include on-tablet {
+ width: 100%;
+ flex-direction: row;
+ justify-content: space-between;
+ }
+ }
+
+ &__right {
+ display: flex;
+ flex-direction: column;
+ gap: 22px;
+
+ @include on-tablet {
+ flex-direction: row;
+ }
+ }
+
+ &__contacts {
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+
+ @include on-tablet {
+ display: none;
+ }
+ }
+
+ &__social-media {
+ display: flex;
+ gap: 23px;
+ height: 18px;
+ align-items: center;
+
+ @include on-tablet {
+ gap: 18px;
+ }
+
+ @include on-big-desktop {
+ gap: 28px;
+ }
+ }
+
+ &__icon {
+ transition-duration: $effectDuration;
+
+ @include hover(scale, 1.1);
+
+ &:hover {
+ path {
+ fill: $cyanC;
+ }
+ }
+ }
+}
diff --git a/src/styles/sections/_header.scss b/src/styles/sections/_header.scss
new file mode 100644
index 00000000..750f65a5
--- /dev/null
+++ b/src/styles/sections/_header.scss
@@ -0,0 +1,155 @@
+.header {
+ height: auto;
+ background: $linearGradient;
+
+ @include on-desktop {
+ height: 100vh;
+ }
+
+ &__content {
+ padding-bottom: 55px;
+ position: relative;
+
+ @include on-tablet {
+ padding-bottom: 64px;
+ }
+
+ @include on-desktop {
+ height: 100%;
+ padding-bottom: 0;
+ }
+ }
+
+ &__middle {
+ width: 100%;
+ display: flex;
+ flex-direction: column-reverse;
+ position: relative;
+
+ @include on-tablet {
+ padding-top: 25px;
+ align-items: center;
+ justify-content: space-between;
+ flex-direction: row;
+ }
+
+ @include on-desktop {
+ padding: 52px 0 0;
+ }
+ }
+
+ &__middle-info {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+
+ @include on-tablet {
+ justify-content: flex-start;
+ width: 50%;
+ }
+
+ @include on-desktop {
+ max-width: 479px;
+ }
+ }
+
+ &-title {
+ padding-bottom: 17px;
+
+ @include on-desktop {
+ padding-bottom: 19px;
+ }
+ }
+
+ &__text {
+ padding-bottom: 8px;
+
+ @include on-desktop {
+ padding-left: 92px;
+ }
+ }
+
+ &__price {
+ display: flex;
+ text-align: center;
+ justify-content: center;
+ padding-bottom: 16px;
+ color: $whiteC;
+
+ @include on-tablet {
+ text-align: left;
+ justify-content: left;
+ }
+
+ @include on-desktop {
+ padding: 0 0 20px 92px;
+ }
+ }
+
+ &__slider {
+ width: 100%;
+
+ @include on-tablet {
+ width: 50%;
+ }
+ }
+
+ &__slide {
+ width: 100%;
+ height: auto;
+ }
+
+ &__bottom {
+ display: none;
+
+ @include on-desktop {
+ position: absolute;
+ bottom: 84px;
+ display: flex;
+ width: 100%;
+ justify-content: space-between;
+ }
+
+ @include on-big-desktop {
+ bottom: 107px;
+ }
+ }
+
+ &__button-play {
+ justify-content: center;
+ width: 221px;
+
+ @include on-tablet {
+ justify-self: left;
+ width: 258px;
+ background-position: left;
+ }
+
+ @include on-desktop {
+ margin-left: 92px;
+ }
+ }
+
+ &__button-link {
+ z-index: 1;
+ position: fixed;
+ bottom: 10px;
+ left: 20px;
+ right: 20px;
+
+ @include on-tablet {
+ width: 458px;
+ bottom: 31px;
+ left: 50%;
+ transform: translateX(-50%);
+ }
+
+ @include on-desktop {
+ display: none;
+ }
+ }
+
+ &__button {
+ width: 100%;
+ }
+}
diff --git a/src/styles/sections/_help.scss b/src/styles/sections/_help.scss
new file mode 100644
index 00000000..b8eca0c7
--- /dev/null
+++ b/src/styles/sections/_help.scss
@@ -0,0 +1,44 @@
+.help {
+ display: flex;
+ background-color: $darkBlueMagentaC;
+
+ &__content {
+ display: flex;
+ flex-direction: column;
+ padding: 30px 0 73px;
+ gap: 30px;
+ }
+
+ &__description {
+ display: flex;
+ flex-direction: column;
+ gap: 20px;
+ }
+
+ &__text {
+ text-align: left;
+ }
+
+ &__text-link {
+ color: $cyanC;
+ }
+
+ &__links {
+ display: flex;
+ flex-direction: column;
+ gap: 20px;
+ }
+
+ &__link {
+ color: $cyanC;
+ transition-duration: $effectDuration;
+
+ @include hover(transform, translateX(10px));
+ }
+
+ &__contacts {
+ display: flex;
+ flex-direction: column;
+ gap: 11px;
+ }
+}
diff --git a/src/styles/sections/_page-menu.scss b/src/styles/sections/_page-menu.scss
new file mode 100644
index 00000000..d6b74ea6
--- /dev/null
+++ b/src/styles/sections/_page-menu.scss
@@ -0,0 +1,70 @@
+.menu {
+ &__content {
+ display: flex;
+ position: relative;
+ }
+
+ .container {
+ width: 100%;
+ }
+
+ display: flex;
+ height: 568px;
+ background-color: $darkblue;
+ width: 100%;
+ min-height: 568px;
+
+ @include on-desktop {
+ display: none;
+ }
+
+ &__top-bar {
+ display: flex;
+ width: 100%;
+ }
+
+ .icon--close {
+ display: flex;
+ justify-self: flex-end;
+ }
+
+ &__nav {
+ display: flex;
+ flex-direction: column;
+ }
+
+ &__list {
+ padding-left: 0;
+ width: 100%;
+ gap: 0;
+ position: absolute;
+ left: 0;
+ right: 0;
+ }
+
+ .nav__link {
+ @include content-padding-inline;
+
+ width: 100%;
+
+ @include on-tablet {
+ padding-left: 122px;
+ }
+ }
+
+ &__item {
+ height: 49px;
+ align-content: center;
+ width: 100%;
+ transition-duration: $effectDuration;
+ cursor: pointer;
+
+ &:hover {
+ background-color: $deepBlueC;
+
+ .nav__link {
+ @include hover(scale, 1);
+ }
+ }
+ }
+}
diff --git a/src/styles/sections/_page.scss b/src/styles/sections/_page.scss
new file mode 100644
index 00000000..c985d8ca
--- /dev/null
+++ b/src/styles/sections/_page.scss
@@ -0,0 +1,80 @@
+* {
+ margin: 0;
+ text-decoration: none;
+}
+
+a {
+ cursor: pointer;
+ transition-duration: $effectDuration;
+}
+
+.page {
+ scroll-behavior: smooth;
+ transition: $effectDuration;
+
+ &__body {
+ background-color: $blackBG;
+ box-sizing: border-box;
+ min-width: 320px;
+ width: 100%;
+ margin: 0;
+ padding: 0;
+ }
+
+ &__menu {
+ position: fixed;
+ top: 0;
+ right: 0;
+ left: 0;
+ transition: all $effectDuration;
+ transform: translateX(-100%);
+ opacity: 1;
+ pointer-events: all;
+
+ &:target {
+ opacity: 1;
+ z-index: 3;
+ transform: translateX(0);
+ pointer-events: all;
+ }
+ }
+
+ &::before {
+ content: '';
+ margin: 0;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ opacity: 0;
+ pointer-events: none;
+ transition: opacity $effectDuration;
+ }
+
+ &:has(.page__menu:target)::before {
+ opacity: 1;
+ pointer-events: all;
+ }
+}
+
+.page,
+.page__body {
+ max-width: 100%;
+ overflow-x: hidden;
+}
+
+.page:has(.page__menu:target) {
+ overflow: hidden;
+ pointer-events: all;
+}
+
+.logo {
+ transition-duration: $effectDuration;
+
+ @include hover(scale, 1.1);
+}
+
+.main {
+ width: 100%;
+}
diff --git a/src/styles/sections/_questions.scss b/src/styles/sections/_questions.scss
new file mode 100644
index 00000000..177eb527
--- /dev/null
+++ b/src/styles/sections/_questions.scss
@@ -0,0 +1,83 @@
+.questions {
+ &__content {
+ padding-block: 50px;
+
+ @include on-tablet {
+ display: flex;
+ padding: 70px 0 130px;
+ }
+
+ @include on-desktop {
+ padding-block: 100px;
+ }
+
+ @include on-big-desktop {
+ padding: 156px 0 205px;
+ }
+ }
+
+ &__question {
+ color: $cyanC;
+ }
+
+ &__mob {
+ display: flex;
+ flex-direction: column;
+ gap: 11px;
+ padding-bottom: 32px;
+
+ @include on-tablet {
+ display: none;
+ }
+ }
+
+ &__left {
+ display: none;
+
+ @include on-tablet {
+ display: flex;
+ flex-direction: column;
+ width: 50%;
+ }
+ }
+
+ &__right {
+ display: flex;
+ flex-direction: column;
+ position: relative;
+ width: 100%;
+
+ @include on-tablet {
+ width: 50%;
+ }
+ }
+
+ &__tablet {
+ @include on-tablet {
+ display: flex;
+ flex-direction: column;
+ gap: 11px;
+ padding-bottom: 26px;
+ }
+ }
+
+ &__note {
+ @include on-tablet {
+ padding-bottom: 76px;
+ }
+ }
+
+ &__contacts {
+ gap: 11px;
+ }
+
+ &__note--mobile {
+ display: flex;
+ flex-direction: column;
+ margin-top: 30px;
+
+ @include on-tablet {
+ display: none;
+ }
+ }
+}
diff --git a/src/styles/sections/_tech-specs.scss b/src/styles/sections/_tech-specs.scss
new file mode 100644
index 00000000..8bcc2790
--- /dev/null
+++ b/src/styles/sections/_tech-specs.scss
@@ -0,0 +1,70 @@
+.tech-specs {
+ &__content {
+ padding-block: 50px;
+ height: auto;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+
+ @include on-tablet {
+ padding-block: 80px;
+ min-height: 440px;
+ }
+
+ @include on-desktop {
+ padding-block: 100px;
+ }
+
+ @include on-big-desktop {
+ padding-block: 160px;
+ }
+ }
+
+ .section-title {
+ display: flex;
+ padding-bottom: 30px;
+ align-self: flex-start;
+
+ @include on-desktop {
+ padding-bottom: 80px;
+ padding-right: 73px;
+ align-self: flex-end;
+ }
+ }
+
+ &__mobtab {
+ display: flex;
+ position: relative;
+ width: 100%;
+ width: 214px;
+ background-image: url(../images/tech-specs/device-bg.png);
+ background-repeat: no-repeat;
+ background-size: 197px 195px;
+ min-height: 265px;
+ background-position: center;
+
+ @include on-tablet {
+ height: 440px;
+ width: 419px;
+ background-size: 358px 354px;
+ }
+
+ @include on-desktop {
+ display: none;
+ }
+ }
+
+ &__desktop {
+ display: none;
+ position: relative;
+ width: 100%;
+
+ @include on-desktop {
+ display: flex;
+ background-image: url(../images/tech-specs/device-bg.png);
+ background-size: 297px 294px;
+ background-repeat: no-repeat;
+ background-position: center bottom;
+ }
+ }
+}
diff --git a/src/styles/sections/_using-areas.scss b/src/styles/sections/_using-areas.scss
new file mode 100644
index 00000000..a0502511
--- /dev/null
+++ b/src/styles/sections/_using-areas.scss
@@ -0,0 +1,78 @@
+.using-areas {
+ &__content {
+ padding-block: 50px;
+
+ @include on-tablet {
+ padding-block: 70px;
+ }
+
+ @include on-desktop {
+ padding-block: 100px;
+ }
+
+ @include on-big-desktop {
+ padding-block: 158px;
+ }
+ }
+
+ .section-title {
+ padding-bottom: 12px;
+ width: 100%;
+
+ @include on-tablet {
+ text-align: center;
+ }
+
+ @include on-desktop {
+ padding-bottom: 16px;
+ }
+ }
+
+ &__text {
+ padding-bottom: 30px;
+ color: $cyanC;
+ width: 100%;
+ height: 30px;
+
+ @include on-tablet {
+ text-align: center;
+ }
+
+ @include on-desktop {
+ padding-bottom: 83px;
+ }
+
+ @include on-big-desktop {
+ padding-bottom: 70px;
+ }
+ }
+
+ &__areas {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ gap: 20px;
+
+ @include on-tablet {
+ flex-flow: row wrap;
+ justify-content: space-between;
+ row-gap: 40px;
+ }
+ }
+
+ &__area {
+ display: flex;
+ flex-direction: column;
+
+ @include on-tablet {
+ width: calc(50% - 20px);
+ flex: 0 0 calc(50% - 20px);
+ height: auto;
+ }
+
+ @include on-desktop {
+ width: calc(25% - 20px);
+ flex: 0 0 calc(25% - 20px);
+ }
+ }
+}
diff --git a/src/styles/sections/_why-cat-loco.scss b/src/styles/sections/_why-cat-loco.scss
new file mode 100644
index 00000000..d58392d5
--- /dev/null
+++ b/src/styles/sections/_why-cat-loco.scss
@@ -0,0 +1,69 @@
+.why-cat-loco {
+ background: $linearGradient;
+
+ &__content {
+ padding-block: 50px;
+
+ @include on-tablet {
+ padding-block: 70px;
+ }
+
+ @include on-desktop {
+ padding: 100px 0 102px;
+ }
+
+ @include on-big-desktop {
+ padding-block: 160px;
+ }
+ }
+
+ .section-title {
+ padding-bottom: 32px;
+
+ @include on-tablet {
+ padding-bottom: 30px;
+ }
+
+ @include on-desktop {
+ text-align: center;
+ padding-bottom: 84px;
+ }
+ }
+
+ &__cards {
+ display: flex;
+ flex-direction: column;
+ gap: 20px;
+ width: 100%;
+ box-sizing: border-box;
+
+ @include on-tablet {
+ flex-direction: row;
+ }
+
+ @include on-desktop {
+ padding-bottom: 79px;
+ }
+ }
+
+ &__link {
+ @include on-desktop {
+ display: flex;
+ justify-self: center;
+ width: 200px;
+ height: 48px;
+ }
+ }
+
+ &__button {
+ display: none;
+
+ @include on-desktop {
+ display: flex;
+ }
+
+ @include on-big-desktop {
+ display: none;
+ }
+ }
+}
diff --git a/src/styles/utils/_mixins.scss b/src/styles/utils/_mixins.scss
index 80c79780..0073465b 100644
--- a/src/styles/utils/_mixins.scss
+++ b/src/styles/utils/_mixins.scss
@@ -4,3 +4,41 @@
#{$_property}: $_toValue;
}
}
+
+@mixin on-tablet {
+ @media (min-width: $tablet-min-width) {
+ @content;
+ }
+}
+
+@mixin on-desktop {
+ @media (min-width: $desktop-min-width) {
+ @content;
+ }
+}
+
+@mixin on-big-desktop {
+ @media (min-width: $big-desktop-min-width) {
+ @content;
+ }
+}
+
+@mixin content-padding-inline() {
+ padding-inline: 20px;
+
+ @include on-tablet {
+ padding-inline: 34px;
+ }
+
+ @include on-desktop {
+ margin-inline: auto;
+ padding-inline: 110px;
+ }
+}
+
+.container {
+ @include content-padding-inline;
+
+ max-width: 1452px;
+ height: 100%;
+}
diff --git a/src/styles/utils/_vars.scss b/src/styles/utils/_vars.scss
index aeb006ff..83a827c6 100644
--- a/src/styles/utils/_vars.scss
+++ b/src/styles/utils/_vars.scss
@@ -1 +1,20 @@
-$c-gray: #eee;
+$mobile-min-width: 320px;
+$tablet-min-width: 640px;
+$desktop-min-width: 1280px;
+$big-desktop-min-width: 1920px;
+$effectDuration: 0.3s;
+$fontFamilyInter: 'Inter', sans-serif;
+$blackBG: #05040b;
+$totalBlackC: #000;
+$darkblue: #191536;
+$cyanC: #05c2df;
+$ralphLaurenC: #2f2f2f;
+$grey21C: #212121;
+$deepBlueC: #110e25;
+$greyC: #929292;
+$whiteC: #fff;
+$white14C: #ffffff23;
+$notActiveC: #484848;
+$linearGradient: linear-gradient(to right, #191536, #000);
+$darkBlueMagentaC: #191536;
+$errorC: #860404;