/* Pre-reveal */
html::before {
  content: "";
  position: fixed;
  inset: 0;
  background-image: linear-gradient(rgb(255,255,255,0) 0%, rgb(255,255,255,1) 100%);
  z-index: 9999;
  transform: translateY(0);
  transition: transform 0.75s ease;
}

body {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.75s ease;
}

/* Post-reveal */
html.revealed::before {
  transform: translateY(100%);
}

html.revealed body {
  opacity: 1;
  visibility: visible;
  pointer-events: all;
}