:root {
  --page-bg: #5aa92d;
  --page-image: url("assets/gulp-background.png");
  --mobile-overscan: 150px;
}

* {
  box-sizing: border-box;
}

html,
body {
  width: 100%;
  min-height: 100%;
  min-height: 100vh;
  min-height: 100dvh;
  margin: 0;
}

html {
  min-height: -webkit-fill-available;
  background: var(--page-bg);
}

body {
  min-height: -webkit-fill-available;
  background: var(--page-bg);
  color: #fff;
  overflow: hidden;
}

.holding-page {
  position: relative;
  display: grid;
  width: 100vw;
  height: 100vh;
  height: -webkit-fill-available;
  min-height: 100svh;
  min-height: 100dvh;
  min-height: 100lvh;
  overflow: hidden;
  background: var(--page-bg);
  isolation: isolate;
}

.holding-page::after {
  position: fixed;
  inset: 0;
  z-index: 1;
  background:
    radial-gradient(circle at 50% 42%, rgb(255 255 255 / 0.08), transparent 34%),
    linear-gradient(180deg, rgb(0 0 0 / 0.22), transparent 24%, transparent 68%, rgb(0 0 0 / 0.3)),
    linear-gradient(90deg, rgb(0 0 0 / 0.18), transparent 28%, transparent 72%, rgb(0 0 0 / 0.16));
  content: "";
  pointer-events: none;
}

.holding-page::before {
  position: fixed;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 0;
  height: var(--mobile-overscan);
  background-image: var(--page-image);
  background-position: 51% bottom;
  background-repeat: no-repeat;
  background-size: cover;
  content: "";
  pointer-events: none;
}

.background-image {
  position: fixed;
  top: 0;
  right: 0;
  bottom: auto;
  left: 0;
  width: 100vw;
  min-width: 100vw;
  height: 100vh;
  height: -webkit-fill-available;
  height: 100dvh;
  height: 100lvh;
  display: block;
  z-index: 0;
  object-fit: cover;
  object-position: center center;
  pointer-events: none;
  user-select: none;
  transform: scale(1);
  transform-origin: 51% 50%;
  animation: background-pulse 5s ease-in-out infinite;
  will-change: transform;
}

h1 {
  position: absolute;
  z-index: 1;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

@media (max-aspect-ratio: 3 / 4) {
  html,
  body,
  .holding-page {
    background-color: var(--page-bg);
    background-image: var(--page-image);
    background-position: 51% top;
    background-repeat: no-repeat;
    background-size: auto calc(100vh + var(--mobile-overscan));
    background-size: auto calc(100dvh + var(--mobile-overscan));
  }

  .background-image {
    height: 100vh;
    height: 100dvh;
    height: 100lvh;
    object-fit: cover;
    object-position: 51% center;
    transform-origin: 51% 44%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .background-image {
    animation: none;
    transform: scale(1);
  }
}

@keyframes background-pulse {
  0%,
  100% {
    transform: scale(1) rotate(-0.12deg) translate3d(-0.25%, -0.15%, 0);
  }

  42% {
    transform: scale(1.035) rotate(0.12deg) translate3d(0.28%, 0.18%, 0);
  }
}
