* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: "Manrope";

  font-size: var(--default-font-size);
  color: var(--white-color);

  --webpage-width: 1440px;
  --landing-showcase-body-width: 1360px;

  --tab-content-horizontal-padding: 120px;

  --tertiary-color: rgba(28, 28, 28, 0.6);
  --white-color: #ffffff;
  --green-color: #215e24;
  --black-color: #1c1c1c;
  --gray-color: #f6f4f2;
  --purple-color: #554fec;
  --light-purple-color: #cdcbff;
  --light-pink-color: #f6c2e6;
  --white-color-80: rgba(256, 256, 256, 0.8);

  --regular-font-weight: 350;
  --medium-font-weight: 500;
  --semibold-font-weight: 550;

  --default-font-size: 16px;

  scroll-behavior: smooth;

  --project-cycle-wrapper-vertical-padding: 40px;
  --project-cycle-height: 74px;
}

p,
h1,
h2,
h3,
h4,
span {
  overflow-wrap: break-word;
  white-space: normal;
  word-break: keep-all;
  font-weight: var(--regular-font-weight);
}

body {
  background: url("../images/background_texture.webp") repeat;
  background-blend-mode: multiply;
  background-color: var(--green-color);
  width: var(--webpage-width);
  position: relative;
}

.page-header-wrapper {
  margin-bottom: 60px;
}

.page-header {
  height: 128px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}

.header-nav {
  height: 50%;
  padding-left: 55px;
  padding-bottom: 20px;
}

.nav-img {
  width: auto;
  height: 50px;
}

#all-tab,
#all-tab-content {
  background-color: var(--white-color);
}

#uiux-tab,
#uiux-tab-content {
  background-color: #f9dae2;
}

#service-tab,
#service-tab-content {
  background-color: #d3eada;
}

#research-tab,
#research-tab-content {
  background-color: #e9e1ff;
}

.project-showcase {
  display: flex;
  justify-content: center;
}

.project-showcase-inner {
  display: flex;
  flex-direction: column;
}

.project-showcase-tab-list {
  display: flex;
}

.project-showcase-tab {
  width: 210px;
  height: 60px;
  color: var(--tertiary-color);
  border: 0 none;

  display: flex;
  justify-content: center;
  align-items: center;
  clip-path: polygon(15% 0, 85% 0, 100% 100%, 0 100%);

  transform: scaleY(1.005); /* tiny vertical stretch */
  transform-origin: top; /* stretch from the top edge */
}

.project-showcase-tab::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(00, 00, 00, 0.2);
}

.project-showcase-tab.active::before {
  opacity: 0;
}

.project-showcase-tab.active {
  z-index: 1;
  color: #000000;
}

.project-showcase-tab:not(.active) {
  cursor: pointer;
}

.project-showcase-tab + .project-showcase-tab {
  margin-left: -15px;
}

.project-showcase-body-wrapper {
  width: var(--landing-showcase-body-width);
}

.project-group {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  row-gap: 32px;
  column-gap: 20px;
  position: relative;
}

.project-content {
  display: flex;
  flex-direction: column;
  row-gap: 12px;
}

.project-preview {
  position: relative;
  z-index: 1;
}

.project-img,
.project-img-wrapper,
.project-content.project-wip .project-img-wrapper::after {
  width: 400px;
  height: 280px;
  border-radius: 26px;
}

.project-img {
  border: 4px solid var(--black-color);
  transition: box-shadow 0.2s ease;
}

.project-img-wrapper {
  position: relative;
}

.project-content.project-wip .project-img-wrapper::after {
  content: "Working In Progress";
  position: absolute;
  display: flex;
  justify-content: center;
  align-items: center;
  top: 0%;
  right: 0%;
  width: 100%;
  height: 100%;
  line-height: 200px;
  color: var(--white-color);
  font-size: 22px;
  z-index: 10;
  background: var(--tertiary-color);

  opacity: 0;
}

.project-content.project-wip:hover .project-img-wrapper::after {
  opacity: 1;
}

.project-tag {
  width: 100px;
  height: 100px;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 18px;
  font-weight: bold;
  box-shadow: 5px 6px 0px var(--black-color);
  text-align: center;

  position: absolute;
  z-index: -1;
  transform: translate(0, 0); /* initial state */
}

@keyframes jiggleMove {
  0% {
    transform: translate(0, 0);
  }
  40% {
    /* first overshoot upward */
    transform: translate(calc(var(--dx) - 15px), calc(var(--dy) - 15px));
  }
  70% {
    /* overshoot downward */
    transform: translate(calc(var(--dx) + 1px), calc(var(--dy) + 1px));
  }
  100% {
    /* final settle */
    transform: translate(var(--dx), var(--dy));
  }
}

/* 
container width: 400
tag width: 100
box shadow width: 5
child: 200, right in the middle
*/
.project-tag-list:has(:only-child) .project-tag:only-child {
  top: 50px;
  right: 30px; /* push 30px to left, on top of original 50px due to absolute position*/

  --dx: -120px;
  --dy: -160px;
}

/* 
container width: 400
tag width: 100
box shadow width: 5
left child; (200 - gap - 5 - 50)
right child: (200 + gap + 50) 
*/

.project-tag-list:has(:nth-child(2):last-child) .project-tag:first-child {
  top: 50px;
  right: 30px; /* push 30px to left, on top of original 50px due to absolute position*/

  --dx: -176px;
  --dy: -160px;
}

.project-tag-list:has(:nth-child(2):last-child) .project-tag:nth-child(2) {
  top: 155px;
  right: 30px;

  --dx: -69px;
  --dy: -265px;
}

.project-preview:has(.project-content:hover)
  .project-tag-list.enter
  .project-tag {
  animation: jiggleMove 496ms ease forwards;
}

.project-preview:has(.project-content:not(:hover))
  .project-tag-list.exit
  .project-tag {
  animation: jiggleMoveReverse 300ms ease none;
}

@keyframes jiggleMoveReverse {
  0% {
    transform: translate(var(--dx), var(--dy));
  }
  100% {
    transform: translate(0, 0);
  }
}

.project-tag.uiux-tag {
  background-color: #f6c2e6;
  color: var(--black-color);
}

.project-tag.research-tag {
  background-color: #064427;
  color: var(--white-color);
}

.project-tag.service-tag {
  background-color: #fff7e9;
  color: var(--black-color);
}

.project-tag.three-d-tag {
  background-color: #71a8df;
  color: var(--black-color);
}

.project-tag.animation-tag {
  background-color: #e8178a;
  color: var(--white-color);
}

.project-tag.web3-tag {
  background-color: #302da2;
  color: var(--white-color);
}

.project-tag.grab-tag {
  background-color: #00b14f;
  color: #fff7e9;
}

.project-tag.speculative-design-tag {
  background-color: #2c3dd1;
  color: var(--white-color);
}

.project-tag.healthcare-tag {
  background-color: #ffd233;
  color: var(--black-color);
}

.project-tag.retail-tag {
  background-color: #b62626;
  color: var(--white-color);
}

.project-tag.furniture-tag {
  background-color: #b85917;
  color: var(--black-color);
}

.project-tag.interior-tag {
  background-color: #d4d4d4;
  color: var(--black-color);
}

.project-content:hover {
  cursor: pointer;
}

.project-content.project-wip {
  cursor: default;
}

.project-content:hover .project-img {
  box-shadow: 5px 6px 0px var(--black-color);
}

.project-content:hover .project-title {
  transform: translateX(5px);
}

.project-content .project-title {
  font-size: 20px;
  text-align: center;

  transition: transform 0.3s ease;
}

.text-color-highlight {
  color: var(--light-pink-color) !important;
}

.page-footer-wrapper {
  padding: 0 60px;
}

.page-footer {
  display: flex;
  column-gap: 46px;
  border-top: solid 1px #064427;
  padding: 65px 0;
}

.page-footer-section {
  display: flex;
  flex-direction: column;

  flex: 1;
  color: rgba(255, 255, 255, 0.6);
}

.page-footer-section * {
  color: inherit;
  list-style: none;
  text-decoration: none;
}

.page-footer-section-left {
  line-height: 30px;
  row-gap: 44px;
}

.page-footer-section-mid {
  row-gap: 8px;
}

.page-footer-section-right {
  line-height: 2;
}

.page-footer-tab-link {
  width: fit-content;
}

.page-footer-tab-link.active {
  color: var(--light-pink-color);
}

.footer-img {
  width: 100px;
}

.carousel-control {
  display: flex;
  justify-content: center;
  gap: 12px;
}

.component-text-left-img-right-split {
  display: flex;
  gap: 32px;
  align-items: center;
}

.component-text-left-img-right-split-img {
  width: 658px;
  height: 369px;
}

.component-text-left-img-right-split-content {
  width: 510px;
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.component-text-left-img-right-split-content-title {
  font-size: 20px;
  font-weight: var(--medium-font-weight);
}

.component-text-left-img-right-split-content-title-large {
  font-size: 40px;
  font-weight: normal;
}

.multi-component-wrapper {
  display: flex;
  flex-direction: column;
  gap: 60px;
}

.component-rounded-img {
  border-radius: 18px;
}

.component-one-img-title-within {
  position: relative;
}

.component-one-img-title-within-img {
  width: 100%;
}

.component-one-img-title-within-text {
  font-size: 56px;
  font-weight: var(--medium-font-weight);
  color: var(--white-color);

  position: absolute;
  left: 40px;
  bottom: 20px;
}

.component-two-img-card,
.component-two-img-one-textcard-img-list {
  display: flex;
  gap: 20px;
}

.component-two-img-card-item,
.component-one-img-card,
.component-two-img-one-text-card {
  display: flex;
  flex-direction: column;
  gap: 40px;
}

.component-two-img-card-item-img,
.component-two-img-one-text-card-item-img {
  width: 590px;
  height: 337px;
}

.component-two-img-card-item-text-wrapper,
.component-one-img-card-text-wrapper,
.component-two-img-one-text-card-item-text-wrapper {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.component-two-img-card-item-title,
.component-one-img-card-title,
.component-two-img-one-text-card-item-title {
  font-size: 20px;
  font-weight: var(--medium-font-weight);
}

.component-two-img-card-item-text,
.component-one-img-card-text,
.component-two-img-one-text-card-item-text {
  color: var(--tertiary-color);
}

.component-one-img-card-img {
  width: 100%;
}

.animated-link {
  align-self: flex-start;
  position: relative;
  text-decoration: none;
}

.animated-link:hover::after {
  width: 100%;
}

.animated-link::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  height: 2px;
  width: 0;
  background-color: var(--black-color);
  transition: width 0.2s ease;
}

.gray-body {
  background-color: var(--gray-color);
}

.purple-body {
  background-color: var(--purple-color);
}

.light-purple-body {
  background-color: var(--light-purple-color);
}

.project-showcase-tab-list.specific-project-showcase-tab-list {
  margin-left: calc(
    (var(--webpage-width) - var(--landing-showcase-body-width)) / 2
  );
}

.no-top-margin-body {
  padding-top: 0 !important;
}

.full-width-img {
  width: 100%;
}

.related-projects {
  margin: 120px 80px;
}

.related-projects * {
  color: var(--white-color);
}

.related-projects .related-project-header {
  display: flex;
  justify-content: space-between;
  margin-bottom: 60px;
}

.related-projects .related-project-header-title {
  font-size: 32px;
}

.related-projects .related-project-header-all-project-link {
  font-size: 18px;
}

.related-projects .related-project-item-list {
  display: flex;
  gap: 40px;
  color: var(--white-color) !important;
}

.related-projects .related-project-item-img {
  width: 400px;
  height: 280px;
  border-radius: 26px;
}

.related-projects .project-content .project-title {
  color: var(--white-color);
}

.related-projects .animated-link::after {
  background-color: var(--white-color);
}

.white-body {
  background-color: var(--white-color);
}

.bold-text {
  font-weight: bold !important;
}

.light-text {
  font-weight: lighter !important;
}

.semibold-text {
  font-weight: var(--semibold-font-weight) !important;
}

.tertiary-color {
  color: var(--tertiary-color);
}
