.zylo-page-switcher {
  position: relative;
  isolation: isolate;
}

.zylo-page-switcher::before {
  position: absolute;
  z-index: -1;
  top: 3px;
  bottom: 3px;
  left: 3px;
  width: calc((100% - 6px) / 3);
  border-radius: 999px;
  background: var(--zylo-white);
  content: "";
  transform: translateX(0);
  transition: transform 520ms cubic-bezier(0.22, 1, 0.36, 1);
}

.zylo-page-switcher.is-pricing::before {
  transform: translateX(100%);
}

.zylo-page-switcher.is-partners::before {
  transform: translateX(200%);
}

.zylo-page-switcher a {
  z-index: 1;
}

.zylo-page-switcher a.is-active {
  background: transparent;
}

.zylo-page-transition {
  position: fixed;
  z-index: 100000;
  inset: 0;
  display: grid;
  grid-template-columns: 27% 46% 27%;
  overflow: hidden;
  visibility: hidden;
  pointer-events: none;
}

.zylo-page-transition__panel {
  position: relative;
  width: 100%;
  min-width: 0;
  height: 100%;
  background: var(--zylo-black);
  transform: translate3d(0, calc(100% + 2px), 0);
  backface-visibility: hidden;
  will-change: transform;
}

.zylo-page-transition__panel:nth-child(2) {
  background: var(--zylo-white);
}

.zylo-page-transition.is-language-transition {
  grid-template-columns: 100%;
  grid-template-rows: 27% 46% 27%;
}

.zylo-page-transition.is-language-transition .zylo-page-transition__panel {
  width: 100%;
  height: 100%;
  transform: translateX(-105%);
}

.zylo-page-transition__label {
  position: absolute;
  z-index: 2;
  top: 50%;
  left: 50%;
  color: var(--zylo-white);
  font-size: clamp(2rem, 8vw, 8rem);
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 0.85;
  mix-blend-mode: difference;
  opacity: 0;
  transform: translate(-50%, -35%) scale(0.92);
  transition:
    opacity 360ms ease 180ms,
    transform 760ms cubic-bezier(0.22, 1, 0.36, 1) 100ms;
  white-space: nowrap;
}

.zylo-page-transition.is-leaving,
.zylo-page-transition.is-entering {
  visibility: visible;
  pointer-events: auto;
}

.zylo-page-transition.is-leaving .zylo-page-transition__panel,
.zylo-page-transition.is-entering .zylo-page-transition__panel {
  transform: translate3d(0, 0, 0);
}

.zylo-page-transition.is-leaving .zylo-page-transition__panel {
  animation: zylo-page-cover 820ms cubic-bezier(0.77, 0, 0.18, 1) both;
}

.zylo-page-transition.is-language-transition.is-leaving
  .zylo-page-transition__panel,
.zylo-page-transition.is-language-transition.is-entering
  .zylo-page-transition__panel {
  transform: translateX(0);
}

.zylo-page-transition.is-language-transition.is-leaving
  .zylo-page-transition__panel {
  animation: zylo-language-cover 760ms cubic-bezier(0.77, 0, 0.18, 1)
    forwards;
  transition: none;
}

.zylo-page-transition.is-leaving .zylo-page-transition__label,
.zylo-page-transition.is-entering .zylo-page-transition__label {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
}

.zylo-page-transition.is-entering .zylo-page-transition__panel,
.zylo-page-transition.is-entering .zylo-page-transition__label {
  transition: none;
}

.zylo-page-transition.is-entering.is-revealing .zylo-page-transition__panel {
  animation: zylo-page-reveal 820ms cubic-bezier(0.77, 0, 0.18, 1) both;
}

.zylo-page-transition.is-language-transition.is-entering.is-revealing
  .zylo-page-transition__panel {
  animation: zylo-language-reveal 820ms cubic-bezier(0.77, 0, 0.18, 1)
    forwards;
  transform: translateX(105%);
  transition: none;
}

@keyframes zylo-language-cover {
  from {
    transform: translateX(-105%);
  }

  to {
    transform: translateX(0);
  }
}

@keyframes zylo-page-cover {
  from {
    transform: translate3d(0, calc(100% + 2px), 0);
  }

  to {
    transform: translate3d(0, 0, 0);
  }
}

@keyframes zylo-page-reveal {
  from {
    transform: translate3d(0, 0, 0);
  }

  to {
    transform: translate3d(0, calc(-100% - 2px), 0);
  }
}

@keyframes zylo-language-reveal {
  from {
    transform: translateX(0);
  }

  to {
    transform: translateX(105%);
  }
}

.zylo-page-transition.is-entering.is-revealing .zylo-page-transition__label {
  opacity: 0;
  transform: translate(-50%, -65%) scale(1.08);
  transition:
    opacity 420ms ease,
    transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
}

.zylo-page-leaving body > *:not(.zylo-page-transition) {
  transform: scale(0.985);
  transition: transform 760ms cubic-bezier(0.22, 1, 0.36, 1);
}

@media (max-width: 640px) {
  .zylo-page-transition__label {
    font-size: clamp(2rem, 15vw, 4.5rem);
  }
}

@media (prefers-reduced-motion: reduce) {
  .zylo-page-switcher::before {
    transition: none;
  }

  .zylo-page-transition {
    display: none;
  }
}
