/* BOOT SEQUENCE */
#boot-screen {
  position: fixed;
  inset: 0;
  z-index: 1000;
  background: var(--void);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 22px;
  transition:
    opacity 520ms ease,
    visibility 520ms ease;
}

#boot-screen.hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

#boot-logo {
  width: 64px;
  height: 64px;
}

.boot-label {
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: var(--ls-eyebrow);
  color: var(--text-secondary);
  text-transform: uppercase;
}

.boot-bar-track {
  width: 280px;
  height: 8px;
  background: var(--concrete);
  border: 1px solid var(--ochre-dim);
  display: flex;
  gap: 2px;
  padding: 2px;
}

.boot-bar-track span {
  flex: 1;
  background: transparent;
  transition: background 60ms linear;
}

.boot-bar-track span.lit {
  background: var(--ochre);
}

/* HERO */
#hero-topbar {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 6;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 18px 24px;
}

#hero-topbar-logo {
  width: 32px;
  height: 32px;
}

#hero-topbar .wordmark {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: var(--text-display);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--text-primary);
  text-shadow: 0 1px 12px rgba(0, 0, 0, 0.55);
}

#hero-bay {
  position: absolute;
  inset: 0;
}

#hero-bay canvas {
  display: block;
  width: 100%;
  height: 100%;
  cursor: default;
}

body.hero-gates #hero-bay canvas.gate-hovered {
  cursor: pointer;
}

#hero-overlay {
  position: absolute;
  inset: 0;
  z-index: 5;
  pointer-events: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  text-align: center;
  padding: 0 20px;
  padding-top: 38vh;
  background: radial-gradient(
    ellipse at 50% 55%,
    transparent 0%,
    rgba(10, 9, 8, 0.45) 78%
  );
}

.hero-eyebrow {
  font-size: var(--text-sm);
  letter-spacing: 0.32em;
  color: var(--scan-teal);
  text-transform: uppercase;
  margin-bottom: 18px;
}

.hero-byline {
  font-family: var(--font-accent);
  font-weight: 400;
  font-size: var(--text-xl);
  letter-spacing: var(--ls-wide);
  text-transform: none;
  color: var(--text-primary);
  line-height: var(--lh-snug);
  text-shadow: 0 2px 18px rgba(0, 0, 0, 0.65);
}

.hero-byline b {
  font-weight: 400;
}

#hero-overlay,
.hero-hud,
#scroll-cue {
  transition:
    opacity 480ms var(--snap),
    transform 480ms var(--snap);
}

body.hero-gates #hero-overlay {
  opacity: 0;
  transform: translateY(-14px);
  pointer-events: none;
}

#gate-click-hint {
  position: absolute;
  left: 50%;
  bottom: 7.5vh;
  z-index: 6;
  transform: translateX(-50%);
  margin: 0;
  padding: 0 16px;
  max-width: min(92vw, 560px);
  text-align: center;
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
  color: var(--text-gold-dim, rgba(232, 221, 199, 0.82));
  pointer-events: none;
  opacity: 0;
  transition: opacity 420ms var(--snap, ease);
}

body.hero-gates #gate-click-hint {
  opacity: 1;
}

#pager-track.in-app #gate-click-hint {
  opacity: 0;
}

body.hero-gates .hero-hud {
  opacity: 0;
  pointer-events: none;
}

body.hero-gates #scroll-cue {
  opacity: 0;
  pointer-events: none;
  animation: none;
}

#pager-track.in-app #scroll-cue {
  animation: none;
}

.hero-hud {
  position: absolute;
  inset: 16px;
  pointer-events: none;
  z-index: 5;
}

.hero-hud span {
  position: absolute;
  font-size: var(--text-2xs);
  font-weight: 600;
  letter-spacing: var(--ls-label);
  color: var(--text-gold-dim);
  text-transform: uppercase;
}

.hero-hud .tl {
  top: 0;
  left: 0;
}
.hero-hud .tr {
  top: 0;
  right: 0;
}
.hero-hud .bl {
  bottom: 0;
  left: 0;
}
.hero-hud .br {
  bottom: 0;
  right: 0;
}

#scroll-cue,
#ascend-cue {
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: var(--ls-eyebrow);
  color: var(--text-secondary);
  text-transform: uppercase;
}

#scroll-cue {
  position: absolute;
  bottom: 30px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 6;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  animation: bob 2.2s ease-in-out infinite;
  cursor: pointer;
  pointer-events: auto;
  background: none;
  border: none;
}

#scroll-cue:focus-visible {
  outline: none;
  color: var(--scan-teal);
  text-shadow: 0 0 8px var(--scan-teal);
}

#scroll-cue .chev {
  width: 9px;
  height: 9px;
  border-right: 2px solid var(--ochre);
  border-bottom: 2px solid var(--ochre);
  transform: rotate(45deg);
}

@keyframes bob {
  0%,
  100% {
    transform: translate(-50%, 0);
  }
  50% {
    transform: translate(-50%, 8px);
  }
}

#ascend-cue {
  position: absolute;
  top: 26px;
  left: 50%;
  transform: translate(-50%, -10px);
  z-index: 6;
  display: flex;
  flex-direction: column-reverse;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  pointer-events: none;
  background: none;
  border: none;
  opacity: 0;
  transition:
    opacity 480ms var(--snap),
    transform 480ms var(--snap);
}

#ascend-cue:focus-visible {
  outline: none;
  color: var(--scan-teal);
  text-shadow: 0 0 8px var(--scan-teal);
}

body.hero-gates #ascend-cue {
  opacity: 1;
  pointer-events: auto;
  transform: translate(-50%, 0);
}

#ascend-cue .chev {
  width: 9px;
  height: 9px;
  border-right: 2px solid var(--ochre);
  border-bottom: 2px solid var(--ochre);
  transform: rotate(225deg);
}

#gate-overlay {
  position: absolute;
  inset: 0;
  z-index: 6;
  pointer-events: none;
}

.gate-eyebrow {
  position: absolute;
  top: 10.5%;
  left: 50%;
  transform: translate(-50%, 10px);
  font-size: var(--text-sm);
  font-weight: 600;
  letter-spacing: var(--ls-eyebrow);
  color: var(--text-accent);
  text-transform: uppercase;
  text-align: center;
  opacity: 0;
  transition:
    opacity 560ms var(--snap) 120ms,
    transform 560ms var(--snap) 120ms;
}

body.hero-gates .gate-eyebrow {
  opacity: 1;
  transform: translate(-50%, 0);
}
