html, body {
  margin: 0;
  background: #020a18;
  color: #cfe9f2;
  overscroll-behavior: none;
  scrollbar-width: none;
}
html::-webkit-scrollbar { display: none; }

/* the document only exists to provide scroll distance: its height is the timeline */
.scroll-space { height: 1000vh; }

.experience {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  height: 100lvh;
  display: block;
}

#loader, #hint, #end, #sound {
  position: fixed;
  font: 11px/1 Georgia, 'Times New Roman', serif;
  letter-spacing: .42em;
  text-transform: lowercase;
  color: rgba(207, 233, 242, .72);
  user-select: none;
}

#loader {
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  background: #020a18;
  transition: opacity 1.8s ease;
  z-index: 3;
}
#loader.done { opacity: 0; pointer-events: none; }
#pct { font-size: 13px; letter-spacing: .2em; opacity: .9; }

#hint {
  left: 0; right: 0; bottom: 9vh;
  text-align: center;
  opacity: 0;
  pointer-events: none;
}
#hint i {
  display: block;
  width: 1px; height: 34px;
  margin: 16px auto 0;
  background: linear-gradient(rgba(207, 233, 242, .8), rgba(207, 233, 242, 0));
  animation: sink 2.4s ease-in-out infinite;
  transform-origin: top;
}
@keyframes sink {
  0% { transform: scaleY(0); opacity: 0; }
  40% { transform: scaleY(1); opacity: 1; }
  100% { transform: translateY(16px) scaleY(.2); opacity: 0; }
}

#end {
  left: 0; right: 0; top: 50%;
  text-align: center;
  font-style: italic;
  opacity: 0;
  pointer-events: none;
}

#sound {
  right: 18px; bottom: 16px;
  padding: 8px;
  background: none;
  border: 0;
  font-size: 9px;
  letter-spacing: .3em;
  opacity: .38;
  cursor: pointer;
  transition: opacity .4s;
}
#sound:hover, #sound:focus-visible { opacity: .85; outline: none; }
