:root {
  --vw: 1440;
  --multiplier: 100vw;
  --primary-color: #e4e0dd;
  --secondary-color: #131313;
  --base-vooban-color: #1458e4;
}

::selection {
  background-color: var(--secondary-color);
  color: var(--primary-color);
}

::-webkit-scrollbar {
  display: none;
}

* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

li,
ol {
  list-style: none;
}

img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

@font-face {
  font-family: "Neue Montreal";
  src: url("/assets/fonts/NeueMontrealRegular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
}

@font-face {
  font-family: "PP Editorial";
  src: url("/assets/fonts/PPEditorialNewRegular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
}

p,
a {
  text-decoration: none;
  color: currentColor;
}

body {
  overflow-x: hidden;
  font-family: "Neue Montreal", sans-serif;
  background-color: var(--primary-color);
  color: var(--secondary-color);
}
.base-cursor {
  position: fixed;
  top: 0;
  left: 0;
  pointer-events: none;
  border-radius: 10vmax;
  will-change: transform;
}

.view-site {
  --font-size: calc(12 / var(--vw) * var(--multiplier));
  position: absolute;
  background-color: var(--secondary-color);
  color: var(--primary-color);
  width: calc(var(--font-size) * 10);
  height: calc(var(--font-size) * 2);
  pointer-events: none;
  user-select: none;
}

.inner-view-site {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
  height: 100%;
  width: max-content;
  animation: marquee 10s linear infinite;
}

.wrapper-text-view-site {
  font-size: var(--font-size);
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0 0.5rem;
}

.line {
  will-change: transform;
}

.link {
  position: relative;
  width: max-content;
  color: var(--base-vooban-color);
}

.link::before {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  background: currentColor;
  pointer-events: none;
  transform: scaleX(1);
  transform-origin: left;
  transition: transform 0.5s cubic-bezier(0.24, 0.43, 0.15, 0.97);
  width: 100%;
  height: 1px;
  will-change: transform;
}

.link:hover::before {
  transform: scaleX(0);
  transform-origin: right;
}

.infinite-text-wrapper {
  width: 100%;
  max-width: 100%;
  overflow: hidden;
  height: max-content;
  will-change: transform, opacity;
}

.infinite-text-inner {
  width: max-content;
  padding: 0.5rem 0;
  display: flex;
  gap: 0.5rem;
  animation: marquee 30s linear infinite;
  font-size: calc(12 / var(--vw) * var(--multiplier));
  user-select: none;
}

.infinite-text-wrapper:hover .infinite-text-inner {
  animation-play-state: paused;
}

@keyframes marquee {
  to {
    transform: translateX(-50%);
  }
}

.main-container {
  width: 100%;
  height: 100dvh;
  display: flex;
  position: relative;
  overflow: hidden;
}

.left-container,
.right-container {
  width: 50%;
  height: 100%;
}

.images {
  position: relative;
  width: 100%;
  height: 100%;
}

.image-wrapper {
  position: absolute;
  width: 100%;
  height: 100%;
  overflow: hidden;
  will-change: transform;
}

.left-container {
  display: flex;
  flex-direction: column;
}

.wrapper-content {
  width: 100%;
  padding: 0 0.8rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 1rem;
}

.title-content {
  font-size: 4vw;
  text-transform: uppercase;
  text-align: center;
  line-height: 1;
  letter-spacing: -0.02em;
}

.description p {
  font-size: calc(15 / var(--vw) * var(--multiplier));
}

.wrapper-project {
  padding: 0 0.8rem;
  display: flex;
  flex-direction: column;
  gap: 0.8rem;
  margin-bottom: 1rem;
  margin-top: auto;
}

.wrapper-title-project {
  --font-size-title-project: calc(30 / var(--vw) * var(--multiplier));
  max-width: 100%;
  position: relative;
  overflow: hidden;
  pointer-events: none;
  height: calc(var(--font-size-title-project) + 10px);
}

.title-project {
  font-size: var(--font-size-title-project);
  letter-spacing: -0.02em;
  will-change: transform;
  display: inline-block;
  position: absolute;
  bottom: 0;
  left: 0;
}

.number-project-wrapper {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  overflow: hidden;
}

.number-project-wrapper * {
  font-size: calc(18 / var(--vw) * var(--multiplier));
  pointer-events: none;
}

.total-project {
  opacity: 0.7;
}

.number-project {
  position: relative;
  overflow: hidden;
  height: 100%;
  width: calc(2.5rem + 1vw);
}

.number-project span {
  display: inline-block;
  will-change: transform;
  position: absolute;
  top: 0;
  left: 0;
}

.footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: calc(14 / var(--vw) * var(--multiplier));
}

.preload-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100dvh;
  color: var(--primary-color);
  z-index: 10;
}

.block {
  position: absolute;
  width: 50%;
  height: 100%;
  background-color: var(--secondary-color);
  top: 0;
  will-change: clip-path;
}

.block.left {
  left: 0;
}

.block.right {
  right: 0;
}

.text-preload {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  font-size: calc(50 / var(--vw) * var(--multiplier));
  font-weight: 500;
  overflow: hidden;
  will-change: transform;
  padding: 0 0.5rem;
  user-select: none;
  pointer-events: none;
}

.block.left .text-preload {
  right: 0;
}

.block.right .text-preload {
  left: 0;
  font-style: italic;
  font-family: "PP Editorial";
}

.text-preload span {
  display: inline-block;
  will-change: transform;
  transform: translateY(150%);
}

.divider {
  position: absolute;
  width: 0.5px;
  height: 100%;
  background-color: var(--primary-color);
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  will-change: transform, opacity;
  transform: scaleY(0);
  transform-origin: top;
}

.number-preload {
  overflow: hidden;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: inline-block;
  font-size: calc(18 / var(--vw) * var(--multiplier));
  font-weight: 500;
  user-select: none;
  pointer-events: none;
}

.number-preload span {
  display: inline-block;
}

@media (max-width: 1024px) {
  .infinite-text-inner {
    font-size: calc(25 / var(--vw) * var(--multiplier));
  }

  .main-container {
    flex-direction: column-reverse;
  }

  .right-container {
    width: 100%;
    height: 40dvh;
  }

  .left-container {
    width: 100%;
    height: 60dvh;
  }

  .infinite-text-wrapper {
    grid-column: span 2 / span 2;
  }

  .wrapper-content {
    margin-top: 1rem;
    justify-content: start;
  }

  .description p {
    font-size: calc(30 / var(--vw) * var(--multiplier));
  }

  .wrapper-title-project {
    --font-size-title-project: calc(47 / var(--vw) * var(--multiplier));
    height: calc(var(--font-size-title-project) + 10px);
  }

  .title-project {
    font-size: var(--font-size-title-project);
  }

  .number-project-wrapper * {
    font-size: calc(30 / var(--vw) * var(--multiplier));
  }

  .footer {
    font-size: calc(30 / var(--vw) * var(--multiplier));
  }

  .number-preload {
    font-size: calc(50 / var(--vw) * var(--multiplier));
  }

  .text-preload {
    font-size: calc(80 / var(--vw) * var(--multiplier));
  }

  .base-cursor {
    display: none;
  }
}

@media (max-width: 768px) {
  .infinite-text-inner {
    font-size: calc(32 / var(--vw) * var(--multiplier));
  }

  .wrapper-content {
    gap: 0.5rem;
  }

  .description p {
    font-size: calc(34.5 / var(--vw) * var(--multiplier));
  }

  .footer {
    font-size: calc(33 / var(--vw) * var(--multiplier));
  }

  .wrapper-title-project {
    --font-size-title-project: calc(60 / var(--vw) * var(--multiplier));
    height: calc(var(--font-size-title-project) + 10px);
  }

  .title-project {
    font-size: var(--font-size-title-project);
  }

  .number-project-wrapper * {
    font-size: calc(40 / var(--vw) * var(--multiplier));
  }

  .number-preload {
    font-size: calc(45 / var(--vw) * var(--multiplier));
  }

  .text-preload span {
    font-size: calc(75 / var(--vw) * var(--multiplier));
  }

  .divider {
    width: 0.5px;
  }
}
