html {
  overflow: hidden;
  position: relative;
}

body {
  overflow: auto;
  overflow: overlay;
  overflow-x: hidden;
}

html,
body {
  height: 100vh;
  height: -webkit-fill-available;

  margin: 0;
  background: #270447;

  color: #fff;
  font-family: 'Manrope', sans-serif;
  font-optical-sizing: auto;
  font-weight: 400;
  font-style: normal;
  font-size: 16px;
}

body {
  background: linear-gradient(180deg, #270447 0%, #140325 100%);
}

* {
  scrollbar-width: thin;
  scrollbar-color: rgba(217, 217, 217, 0.25) transparent;
  box-sizing: border-box;

  &::-webkit-scrollbar {
    width: 7px;
    height: 7px;
  }

  &::-webkit-scrollbar-thumb {
    background-color: #dad0dd77;
    border-radius: 6px;
  }

  &::-webkit-scrollbar-track {
    background-color: transparent;
  }
}

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

  max-width: 1200px;
  margin: 0 auto;
  padding: 16px 0;
}

@media screen and (max-width: 1200px) {
  .container {
    margin: 0 16px;
  }
}

a {
  text-decoration: none;
  color: #fff;
}

.btn {
  width: fit-content;
  height: 44px;
  padding: 0 24px;
  border-radius: 24px;

  font-size: 16px;

  display: flex;
  justify-content: center;
  align-items: center;

  cursor: pointer;
  user-select: none;

  border: none;

  transition:
    background-color 0.3s,
    color 0.3s;
}

.btn.primary {
  color: #fff;
  background: linear-gradient(120deg, #321a77 0%, #8a2eff 100%) 100% 0;
  background-size: 150% 100%;
  transition:
    filter 0.5s,
    background-position 0.5s;

  &:hover {
    filter: brightness(1.7);
    background-position: 0 0;
  }
}

.btn.secondary {
  border: 1px solid #fff;
}

.btn.secondary:hover {
  background-color: #fff;
  color: #5f30e2;
}

icon-button,
icon {
  font-family: 'Material Symbols Rounded';
  font-weight: normal;
  font-style: normal;
  font-size: 24px;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  font-feature-settings: 'liga';
  -webkit-font-feature-settings: 'liga';
  -webkit-font-smoothing: antialiased;

  font-variation-settings:
    'FILL' 0,
    'wght' 300,
    'GRAD' 0,
    'opsz' 24;

  user-select: none;

  &.loading {
    opacity: 0 !important;
    max-width: 24px;
    max-height: 24px;
  }
}

icon-button {
  position: relative;
  cursor: pointer;

  &::after {
    position: absolute;
    top: -8px;
    right: -8px;
    bottom: -8px;
    left: -8px;
    border-radius: 50px;

    content: '';
    background-color: #ffffff22;
    opacity: 0;

    pointer-events: none;

    transition:
      120ms opacity ease,
      120ms background-color ease;
  }

  &:hover::after {
    opacity: 1;
  }

  &:active::after {
    background-color: #ffffff77;
  }
}

h1,
h2,
h3,
h4,
h5,
h6 {
  margin: 0;
}

h1 {
  font-size: 54px;
  font-weight: 800;

  background: linear-gradient(90deg, #8dcefe 13.71%, #c65bff 85.71%);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

h2 {
  font-size: 24px;
  font-weight: 600;
}

.gradient-text {
  background: linear-gradient(90deg, #8dcefe 13.71%, #c65bff 85.71%);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

@media screen and (max-width: 1200px) {
  h1 {
    font-size: 36px;
  }

  h2 {
    font-size: 18px;
  }
}

p {
  margin: 0;
}

body:has(> .overlay) {
  position: relative;
}

body:has(> .overlay) > .container,
body:has(> .overlay) > .overlay {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
}

body > .overlay {
  height: 650px;
}

body:has(nav.secondary) > .overlay {
  height: 750px;
}

body:has(nav.secondary):has(#hero > .property) > .overlay {
  height: 900px;
}

@media screen and (max-width: 600px) {
  body > .overlay {
    height: 550px;
  }

  body:has(nav.secondary) > .overlay {
    height: 550px;
  }

  body:has(nav.secondary):has(#hero > .property) > .overlay {
    height: 600px;
  }
}

body > .overlay {
  pointer-events: none;
  overflow: hidden;

  animation: overlayLoading 1000ms ease forwards;

  background-size: cover;
  background-position: center center;
}

body > .overlay:after {
  content: '';
  position: absolute;
  top: -10px;
  right: -10px;
  bottom: -10px;
  left: -10px;

  background: linear-gradient(180deg, #270447 0%, #140325 100%);
  opacity: 0.8;
  animation: overlayAfterLoading 1000ms ease forwards;
}

body > .overlay.static {
  background: radial-gradient(#c65bff33 0%, #27044733 40%, transparent 80%);
  background-size: max(100vw, 1200px) max(100vw, 1200px);
  background-position: center center;
  animation: overlayStaticLoading 1000ms ease forwards;

  &.strict {
    background-size: min(max(100vw, 1200px), 1920px)
      min(max(100vw, 1200px), 650px);
    background-repeat: no-repeat;
  }

  &::after {
    background: unset;
  }
}

@keyframes overlayLoading {
  0% {
    filter: blur(5px);
  }
}

@keyframes overlayAfterLoading {
  0% {
    opacity: 1;
  }

  100% {
    opacity: 0.8;
  }
}

@keyframes overlayStaticLoading {
  0% {
    opacity: 0;
    transform: scale(0.7);
  }

  100% {
    opacity: 1;
    transform: scale(1);
  }
}

.fullwidth-wrapper {
  display: flex;
  justify-content: center;
  width: 100%;

  > .fullwidth-center-content {
    flex: 0 0 100vw;
    padding: 0 max(calc((100vw - 1200px) / 2), 16px);
    background-size: auto 150%;
    background-position: center 0%;
    animation: fullwidthParallax 1000ms ease forwards;
    animation-timeline: view();
  }
}

@keyframes fullwidthParallax {
  0% {
    background-position: center 0%;
  }

  100% {
    background-position: center 100%;
  }
}

.sidenav-container {
  display: flex;
  gap: 64px;
  margin-top: 64px;

  > .sidenav-navbar {
    position: sticky;
    margin-bottom: 24px;
    top: 120px;
    left: 0px;
    height: fit-content;

    flex: 0 0 210px;
    padding: 8px 0;
    border-radius: 24px;
    background-color: #00000033;

    display: flex;
    flex-direction: column;

    > a {
      position: relative;
      flex: 0 0 50px;

      display: flex;
      align-items: center;
      gap: 16px;

      padding: 0 24px;
      font-size: 16px;
      font-weight: 700;

      background: linear-gradient(90deg, #8dcefe 33%, #ffffff 66%);
      background-size: 300% 100%;
      background-position: 100%;
      transition:
        background-position 0.3s ease,
        font-size 0.12s ease;

      background-clip: text;
      -webkit-background-clip: text;
      -webkit-text-fill-color: transparent;

      &:hover {
        background-position: 50%;
        /* font-size: 18px; */
      }

      &.href-active,
      &:active {
        background-position: 0%;
        /* font-size: 15px; */
      }

      &.href-active::before {
        content: '';
        position: absolute;
        top: 0;
        left: 8px;
        bottom: 0;
        right: 8px;
        background: #270447;
        z-index: -1;
        border-radius: 12px;
      }
    }
  }
}

.standalone-card {
  padding: 24px;
  border-radius: 36px;
  border: 1px solid #58476f;
  background: #190233;
  box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.25);

  display: flex;
  flex-direction: column;
  gap: 24px;

  @media screen and (max-width: 600px) {
    padding: 16px;
    border-radius: 24px;
  }
}

nav:not(.secondary),
footer {
  a:not(.btn).href-active {
    color: #c65bff;
  }
}
