html.is-loading,
html.is-loading body {
  overflow: hidden;
}

html.is-loading body {
  opacity: 0;
}

html.is-ready body {
  opacity: 1;
}

body {
  opacity: 1;
  transition: opacity 0.35s ease;
}

html.is-loading .hero__cubes {
  opacity: 0;
}

html.is-ready .hero__cubes {
  opacity: 1;
  transition: opacity 0.4s ease;
}

html.is-loading .header {
  background: var(--header-bg-solid);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

html.is-loading main {
  opacity: 0;
  transform: translateY(6px);
}

html.is-ready main {
  opacity: 1;
  transform: none;
  transition: opacity 0.4s ease, transform 0.4s ease;
}

#page-loader {
  position: fixed;
  inset: 0;
  z-index: 999999;
  background:
    radial-gradient(circle at 50% 42%, var(--bg-glow), transparent 34%),
    var(--loader-bg);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: opacity 0.45s ease, visibility 0.45s ease;
}

#page-loader::before {
  content: "";
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 2px solid var(--border-soft);
  border-top-color: var(--accent);
  animation: loaderSpin 0.8s linear infinite;
}

#page-loader.is-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

@keyframes loaderSpin {
  to {
    transform: rotate(360deg);
  }
}
