@font-face {
  font-family: "Roboto";
  font-weight: 400;
  src: url("../multimedia/fonts/Roboto/Roboto-Regular.ttf");
  font-display: swap;
}

@font-face {
  font-family: "Roboto";
  font-weight: 500;
  src: url("../multimedia/fonts/Roboto/Roboto-Medium.ttf");
  font-display: swap;
}

@font-face {
  font-family: "Roboto";
  font-weight: 900;
  src: url("../multimedia/fonts/Roboto/Roboto-Black.ttf");
  font-display: swap;
}

:root {
  --indent-x: 4rem;
  --indent-y: 3.6rem;
}

.portfolio__card__buttons::before,
.portfolio__card__buttons,
.portfolio__card__image,
.portfolio__card__body,
.face,
.horisontal {
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  width: 100%;
}

.portfolio__scrollbar__knob::after {
  height: 100%;
  width: 100%;
}

.portfolio__card__button,
.portfolio__card__body,
.horisontal,
.portfolio__card__buttons {
  display: flex;
  align-items: center;
  justify-content: center;
}

.portfolio__card__buttons {
  flex-direction: column;
}

*,
*::before,
*::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

html,
body {
  width: 100%;
  height: 100%;
  overflow: hidden;
}

body {
  font-family: "Roboto";
  font-size: 1.6rem;
  image-rendering: -webkit-optimize-contrast;
  color: #EAE8E4;
}

button,
a,
input {
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  border: none;
  background: none;
  color: inherit;
  outline: none;
}

a {
  text-decoration: none;
}

a,
button {
  cursor: pointer;
}

img,
video {
  display: block;
  -o-object-fit: contain;
  object-fit: contain;
}

ul {
  list-style: none;
}

svg {
  display: block;
}

html {
  font-size: calc((70vw + 50vh) / 1920 * 10);
}

#root {
  position: relative;
  height: 100%;
  width: 100%;
  overflow: hidden;
  cursor: -webkit-grab;
  cursor: grab;
  background-color: #133154;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

.grabbing #root {
  cursor: -webkit-grabbing;
  cursor: grabbing;
}

[data-scroll-section] {
  height: 100%;
  min-width: 100%;
  overflow: hidden;
}

main {
  height: 100%;
}

.canvas {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  pointer-events: none;
}

#css-vars-calclulator {
  position: fixed;
  pointer-events: none;
}

.horisontal {
  font-size: 4vmax;
  font-weight: 500;
  display: none;
  background-color: #232323;
  z-index: 4;
}

.preloader {
  z-index: 3;
}

.face {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-left: var(--indent-x);
}

.face__studio {
  font-size: 3rem;
  line-height: 3.5rem;
  font-weight: 500;
  text-transform: uppercase;
  margin-left: 67.5rem;
  color: #659AD6;
  will-change: transform;
  transform: rotate(-5deg) translateY(2rem) translateX(100vw);
  transition: transform 2.1s cubic-bezier(0.19, 1, 0.22, 1);
}

.initialization .face__studio {
  transform: rotate(-5deg) translateY(2rem) translateX(0);
}

.face__heading {
  font-size: 11.6rem;
  line-height: 13.6rem;
  text-transform: uppercase;
  font-weight: 900;
  margin-bottom: 55rem;
  display: flex;
  flex-direction: column;
  color: #659AD6;
  transform: rotate(-5deg);
}

.face__heading__part-1 {
  margin-left: 10.9rem;
  transition: transform 2s cubic-bezier(0.19, 1, 0.22, 1);
  transform: translateX(100vw);
  will-change: transform;
}

.initialization .face__heading__part-1 {
  transform: translateX(0);
}

.face__heading__part-2 {
  transition: transform 2.3s cubic-bezier(0.19, 1, 0.22, 1);
  transform: translateX(-100vw);
  will-change: transform;
}

.initialization .face__heading__part-2 {
  transform: translateX(0);
}

.header {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 2;
  width: 100%;
  padding: var(--indent-y) var(--indent-x);
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.header__logo {
  width: 6.35rem;
  height: 5rem;
  will-change: transform;
  transform: translateY(-20rem);
  transition: transform 2s cubic-bezier(0.19, 1, 0.22, 1);
}

.initialization .header__logo {
  transform: translateY(0rem);
}

.header__contacts {
  display: flex;
  flex-wrap: wrap;
}

.header__contact {
  flex-shrink: 0;
  font-size: 1.8rem;
  line-height: 2.1rem;
  will-change: transform;
  transform: translateY(-20rem);
  transition: color 0.3s, transform 2.2s cubic-bezier(0.19, 1, 0.22, 1);
}

.header__contact:not(:last-child) {
  margin-right: 9.9rem;
}

.header__contact:hover {
  color: #83D024;
}

.initialization .header__contact {
  transform: translateY(0rem);
}

.initialization .header__contact:nth-child(1) {
  transition-duration: 0.3s, 2.2s;
}

.initialization .header__contact:nth-child(2) {
  transition-duration: 0.3s, 2.6s;
}

.initialization .header__contact:nth-child(3) {
  transition-duration: 0.3s, 3s;
}

.initialization .header__contact:nth-child(4) {
  transition-duration: 0.3s, 3.4s;
}

.portfolio {
  position: relative;
  height: 100%;
  display: flex;
  align-items: center;
}

.portfolio::before {
  content: "";
  position: absolute;
  bottom: 10rem;
  left: 0;
  height: 45rem;
  width: 100%;
  z-index: 2;
  background-color: #232323;
  transform: translateX(100vw);
}

.portfolio.filtered-in::before {
  transition: transform 1s cubic-bezier(0.19, 1, 0.22, 1);
  transform: translateX(0);
}

.portfolio.filtered-out::before {
  transition: transform 1s cubic-bezier(0.19, 1, 0.22, 1);
  transform: translateX(-100vw);
}

.portfolio__filter {
  --tx: 100vw;
  --rz: -5deg;
  --ty: -31rem;
  position: absolute;
  left: 72.4rem;
  z-index: 1;
  display: flex;
  will-change: transform;
  transform: translateY(var(--ty)) rotate(var(--rz)) translateX(var(--tx));
  transition: transform 2.2s cubic-bezier(0.19, 1, 0.22, 1);
}

.initialization .portfolio__filter {
  --rz: -5deg;
  --tx: 0px;
}

.portfolio__filter__button {
  font-size: 2rem;
  line-height: 2.34rem;
  transition: color 0.3s;
}

.portfolio__filter__button:not(:last-child) {
  margin-right: 7.36rem;
}

.portfolio__filter__button:hover {
  color: #83D024;
}

.portfolio__filter__button.active {
  color: #83D024;
}

.portfolio__content {
  display: flex;
  align-items: flex-end;
  padding: 0 var(--indent-x);
}

.portfolio__list {
  display: flex;
  width: -webkit-max-content;
  width: -moz-max-content;
  width: max-content;
  height: 45rem;
  margin-bottom: 10rem;
}

.portfolio__card {
  flex-shrink: 0;
  position: relative;
  height: 100%;
  width: 45rem;
  overflow: hidden;
  transition: opacity 2s;
}

.portfolio__card:not(:last-of-type) {
  margin-right: 10rem;
}

.portfolio__card.unactive {
  display: none;
}

.portfolio__card.last {
  margin-right: 0 !important;
}

.portfolio__card:nth-child(1),
.portfolio__card:nth-child(2),
.portfolio__card:nth-child(3),
.portfolio__card:nth-child(4) {
  opacity: 0;
}

.portfolio__card:nth-child(1) {
  transition-delay: 0.2s;
}

.portfolio__card:nth-child(2) {
  transition-delay: 0.4s;
}

.portfolio__card:nth-child(3) {
  transition-delay: 0.8s;
}

.portfolio__card:nth-child(4) {
  transition-delay: 1s;
}

.initialization .portfolio__card:nth-child(1),
.initialization .portfolio__card:nth-child(2),
.initialization .portfolio__card:nth-child(3),
.initialization .portfolio__card:nth-child(4) {
  opacity: 1;
  transform: translateX(0);
}

.portfolio__card_circle {
  border-radius: 50%;
  overflow: hidden;
}

.portfolio__card__title {
  position: absolute;
  bottom: 5rem;
  font-weight: 900;
  font-size: 2.5rem;
  text-transform: uppercase;
  width: -webkit-max-content;
  width: -moz-max-content;
  width: max-content;
  line-height: 1;
  color: #EAE8E4;
  transform: translateX(calc(var(--tx-from, -15rem) + var(--path) * 30rem));
}

.first .portfolio__card__title {
  --tx-from: -25rem;
}

.last .portfolio__card__title {
  --tx-from: -7rem;
}

.portfolio__card__title::before {
  content: "";
  position: absolute;
  width: calc(100% + 4rem);
  height: calc(100% + 2rem);
  top: -1rem;
  left: -2rem;
  z-index: -1;
  opacity: 0.9;
  border-radius: 0.2rem;
}

.portfolio__card:nth-child(odd) .portfolio__card__title::before {
  background-color: #232323;
}

.portfolio__card:nth-child(even) .portfolio__card__title::before {
  background-color: #659AD6;
}

.portfolio__card__image {
  width: 200%;
  left: -100%;
  z-index: -1;
  -o-object-fit: cover;
  object-fit: cover;
  transform: translateX(calc(var(--path) * 50%));
}

.first .portfolio__card__image {
  left: -132%;
}

.last .portfolio__card__image {
  left: -70%;
}

.portfolio__card__buttons {
  position: relative;
  -webkit-clip-path: circle(calc(40% * var(--mouse-enter)) at calc(var(--mouse-x) * 100%) calc(var(--mouse-y) * 100%));
  clip-path: circle(calc(40% * var(--mouse-enter)) at calc(var(--mouse-x) * 100%) calc(var(--mouse-y) * 100%));
}

.portfolio__card__buttons::before {
  content: "";
  z-index: -1;
  background-color: #659AD6;
  opacity: 0.8;
}

.portfolio__card__button {
  font-size: 1.6rem;
  line-height: 1.875rem;
  width: 19.2rem;
  height: 3.9rem;
  background-color: #232323;
  transition: background-color 0.3s;
}

.portfolio__card__button:not(:last-child) {
  margin-bottom: 1rem;
}

.portfolio__card__button:hover {
  background-color: #83D024;
}

.portfolio__scrollbar {
  --knob-size: 2.7rem;
  position: fixed;
  bottom: var(--indent-y);
  display: flex;
  align-items: center;
  width: 100%;
  height: var(--knob-size);
  padding: 0 var(--indent-x);
}

.portfolio__scrollbar::before {
  content: "";
  position: absolute;
  width: calc(100% - var(--indent-x) * 2);
  height: 0.1rem;
  background-color: #83D024;
  transform-origin: left;
  transform: scaleX(var(--scroll-progress));
}

.portfolio__scrollbar::after {
  content: "";
  position: absolute;
  z-index: -1;
  width: 100%;
  width: calc(100% - var(--indent-x) * 2);
  height: 0.1rem;
  border-bottom: 0.1rem dashed #83D024;
  transition: transform 2s 1s cubic-bezier(0.19, 1, 0.22, 1);
  transform: scaleX(0);
  transform-origin: right;
}

.filtered-in .portfolio__scrollbar::before {
  transition: transform 1s cubic-bezier(0.19, 1, 0.22, 1);
  transform: scaleX(0);
}

.filtered-out .portfolio__scrollbar::before {
  transition: transform 1s cubic-bezier(0.19, 1, 0.22, 1);
  transform: scaleX(0);
}

.initialization .portfolio__scrollbar::after {
  transform: scaleX(1);
}

.portfolio__scrollbar__knob {
  position: relative;
  z-index: 1;
  width: var(--knob-size);
  height: var(--knob-size);
  transform: translateX(calc(var(--scroll-progress) * (100vw - var(--knob-size) - var(--indent-x) * 2)));
}

.portfolio__scrollbar__knob::after {
  content: "";
  display: block;
  background-color: #232323;
  border: 0.1rem solid #83D024;
  border-radius: 50%;
  transition: transform 0.5s;
  transform: scale(0);
}

.filtered-in .portfolio__scrollbar__knob {
  transition: transform 1s cubic-bezier(0.19, 1, 0.22, 1);
  transform: translateX(0);
}

.filtered-out .portfolio__scrollbar__knob {
  transition: transform 1s cubic-bezier(0.19, 1, 0.22, 1);
  transform: translateX(0);
}

.initialization .portfolio__scrollbar__knob::after {
  transition: transform 2s 2s cubic-bezier(0.19, 1, 0.22, 1);
  transform: scale(1);
}

@media (max-aspect-ratio: 14/9) and (min-width: 768px) {
  .face__studio {
    margin-left: 55rem;
  }

  .face__heading {
    font-size: 9.6rem;
    line-height: 11.6rem;
  }

  .portfolio__filter {
    left: 60rem;
    --ty: -29.5rem;
  }
}

@media (max-aspect-ratio: 11/9) and (min-width: 768px) {
  .face__heading {
    font-size: 8.6rem;
    line-height: 10.6rem;
  }
}

@media (min-width: 769px) {
  .second .portfolio__card__title {
    --tx-from: -17rem;
  }

  .penult .portfolio__card__title {
    --tx-from: -13rem;
  }

  .second .portfolio__card__image {
    left: -110%;
  }

  .penult .portfolio__card__image {
    left: -93%;
  }
}

@media (max-width: 1024px) and (min-height: 1300px) {
  html {
    font-size: calc(100vw / 900 * 10);
  }

  .face__studio {
    margin-left: 0rem;
    margin-bottom: -2rem;
  }

  .face__heading {
    font-size: 8rem;
    line-height: 8.3rem;
  }

  .face__heading__part-1 {
    margin-left: auto;
    margin-right: 3rem;
  }

  .portfolio__filter {
    left: 6rem;
    --ty: -5.5rem;
  }
}

@media (max-width: 1000px) and (orientation: landscape) {
  .horisontal {
    display: flex;
  }
}

@media (max-width: 768px) {
  :root {
    --indent-x: 3.4rem;
    --indent-y: 2rem;
  }

  html {
    font-size: calc(100vw / 768 * 10);
  }

  .face__studio {
    margin-left: 2.5rem;
    margin-bottom: -3rem;
  }

  .face__heading {
    font-size: 6rem;
    line-height: 7.3rem;
    margin-bottom: 55rem;
    margin-left: 3rem;
  }

  .face__heading__part-1 {
    margin-left: auto;
    margin-right: 8rem;
  }

  .header__contact:not(:last-child) {
    margin-right: 2rem;
  }

  .portfolio::before {
    bottom: 8.5rem;
    height: 46rem;
  }

  .portfolio__filter {
    left: 8rem;
    --ty: -11rem;
  }

  .portfolio__filter__button:not(:last-child) {
    margin-right: 4.8rem;
  }

  .portfolio__list {
    margin-bottom: 9rem;
  }

  .first .portfolio__card__title {
    --tx-from: -19rem;
  }

  .last .portfolio__card__title {
    --tx-from: -13rem;
  }

  .first .portfolio__card__image {
    left: -113%;
  }

  .last .portfolio__card__image {
    left: -91%;
  }
}

@media (max-width: 500px) {
  :root {
    --indent-x: 1.6rem;
    --indent-y: 2.8rem;
  }

  html {
    font-size: calc(100vw / 375 * 10);
  }

  .face__studio {
    font-size: 3rem;
    line-height: 3.5rem;
    font-weight: 700;
    margin-left: auto;
    margin-right: 2rem;
    margin-bottom: 3rem;
  }

  .face__heading {
    font-size: 3rem;
    line-height: 3.5rem;
    margin-bottom: 30rem;
    margin-left: unset;
    letter-spacing: 0.18rem;
    -webkit-text-stroke-width: 0.1rem;
    -webkit-text-stroke-color: #659AD6;
    color: transparent;
  }

  .face__heading__part-1 {
    margin-right: 1.5rem;
  }

  .header__logo {
    width: 4.7rem;
    height: 3.6rem;
    margin-bottom: 2rem;
  }

  .header__contacts {
    justify-content: flex-end;
  }

  .header__contact:not(:last-child) {
    margin-right: unset;
  }

  .header__contact {
    font-size: 1.6rem;
    line-height: 1.8rem;
  }

  .header__contact {
    margin-left: 2rem;
    margin-bottom: 1rem;
  }

  .portfolio::before {
    height: 32rem;
    bottom: 0rem;
  }

  .initialization .portfolio__filter {
    --rz: 0deg;
  }

  .portfolio__filter {
    left: unset;
    right: var(--indent-x);
    flex-wrap: wrap;
    justify-content: flex-end;
    margin-bottom: 0rem;
    max-width: 85%;
    --rz: -0deg;
    --ty: 0px;
  }

  .portfolio__filter__button:not(:last-child) {
    margin-right: unset;
  }

  .portfolio__filter__button {
    font-size: 1.6rem;
    line-height: 1.87rem;
    margin-bottom: 1rem;
    margin-left: 2rem;
  }

  .portfolio__list {
    height: 23rem;
    margin-bottom: 2rem;
  }

  .portfolio__card {
    width: 23rem;
  }

  .portfolio__card:not(:last-of-type) {
    margin-right: 2rem;
  }

  .portfolio__card__title {
    transform: translateX(calc(var(--tx-from, -5rem) + var(--path) * 10rem));
  }

  .first .portfolio__card__title {
    --tx-from: -6rem;
  }

  .last .portfolio__card__title {
    --tx-from: -4rem;
  }

  .portfolio__card__title {
    font-size: 1.2rem;
    bottom: 3rem;
  }

  .first .portfolio__card__image {
    left: -110%;
  }

  .last .portfolio__card__image {
    left: -92%;
  }

  .portfolio__card__button {
    width: 17rem;
    height: 3.3rem;
  }

  .portfolio__scrollbar {
    display: none;
  }
}

@media (max-width: 500px) and (max-height: 600px) {
  html {
    font-size: calc(100vw / 480 * 10);
  }

  .face__studio {
    font-size: 4rem;
    line-height: 4.5rem;
  }

  .face__heading {
    font-size: 4rem;
    line-height: 4.5rem;
  }

  .header__contacts {
    max-width: 80%;
  }

  .portfolio::before {
    height: 35rem;
  }

  .portfolio__filter {
    max-width: 60%;
  }
}