:root {
  color-scheme: dark;
  --black: #000;
  --white: #f4f4f2;
  --phi: #ad0000;
  --muted: #818181;
}

* { box-sizing: border-box; }

html { background: var(--black); }

body {
  margin: 0;
  min-width: 20rem;
  overflow-x: hidden;
  background: var(--black);
  color: var(--white);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

button, a { font: inherit; }

.orbit-stage {
  position: relative;
  min-height: 100svh;
  overflow: hidden;
  isolation: isolate;
  background:
    radial-gradient(circle at 50% 64%, rgba(12, 33, 47, .16), transparent 32%),
    var(--black);
}

.orbit-stage::after {
  content: "";
  position: absolute;
  z-index: 2;
  right: 0;
  bottom: -1px;
  left: 0;
  height: clamp(7rem, 16vh, 12rem);
  background: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, .16) 24%,
    rgba(0, 0, 0, .72) 72%,
    var(--black) 100%
  );
  pointer-events: none;
}

.brand-banner {
  position: absolute;
  z-index: 6;
  top: 50%;
  left: 50%;
  width: min(63vw, 55rem);
  height: auto;
  transform: translate(-50%, -50%);
  opacity: 0;
  transition: top 1.8s cubic-bezier(.2,.8,.2,1), transform 1.8s cubic-bezier(.2,.8,.2,1), opacity 1.15s ease;
  pointer-events: none;
}

.earth {
  position: absolute;
  z-index: 1;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  opacity: 0;
  transform: translateY(100%);
  transition: transform 1.8s cubic-bezier(.2,.8,.2,1), opacity 1.15s ease;
  pointer-events: none;
  user-select: none;
}

.game-mount {
  position: absolute;
  z-index: 3;
  inset: 0;
  opacity: 0;
  transition: opacity 1.1s ease;
}

.game-mount canvas {
  display: block;
  width: 100%;
  height: 100%;
}

.orbit-stage.ready .game-mount { opacity: 1; }

.hud {
  position: absolute;
  z-index: 5;
  top: max(1.1rem, env(safe-area-inset-top));
  right: max(1.1rem, env(safe-area-inset-right));
  width: min(46vw, 15rem);
  opacity: 0;
  transition: opacity 1s ease;
  font: 500 .68rem/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: .1em;
  text-transform: uppercase;
  text-align: right;
  color: rgba(244,244,242,.72);
}

.orbit-stage.ready .hud { opacity: 1; }

.hud-tier { margin-bottom: .45rem; }

.hud-bar {
  height: .18rem;
  background: rgba(244,244,242,.16);
  border-radius: 999px;
  overflow: hidden;
}

.hud-bar-fill {
  height: 100%;
  width: 0%;
  background: var(--phi);
  transition: width .4s ease;
}

.tier-banner {
  position: absolute;
  z-index: 7;
  left: 50%;
  top: 38%;
  transform: translate(-50%, -50%);
  text-align: center;
  font: 600 .95rem/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--white);
  text-shadow: 0 0 1.2rem rgba(0,0,0,.9);
  opacity: 0;
  pointer-events: none;
  transition: opacity .6s ease;
  white-space: nowrap;
}

.tier-banner.show { opacity: 1; }

.controls-hint {
  position: absolute;
  z-index: 5;
  left: 50%;
  bottom: max(1.2rem, env(safe-area-inset-bottom));
  transform: translateX(-50%);
  margin: 0;
  color: rgba(244,244,242,.66);
  font: 500 .72rem/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: .1em;
  text-align: center;
  text-transform: uppercase;
  opacity: 0;
  transition: opacity 1s ease;
  white-space: nowrap;
}

.skip-intro {
  position: absolute;
  z-index: 8;
  right: max(1rem, env(safe-area-inset-right));
  bottom: max(1rem, env(safe-area-inset-bottom));
  padding: .6rem .7rem;
  border: 0;
  color: rgba(244,244,242,.48);
  background: transparent;
  font-size: .8rem;
  letter-spacing: .08em;
  cursor: pointer;
}

.skip-intro:hover,
.skip-intro:focus-visible { color: var(--white); }
.skip-intro:focus-visible { outline: 1px solid var(--phi); outline-offset: 3px; }

.orbit-stage.show-title .brand-banner { opacity: 1; }

.orbit-stage.framed .brand-banner {
  top: max(1rem, env(safe-area-inset-top));
  transform: translate(-50%, 0);
}

.orbit-stage.framed .earth {
  opacity: 1;
  transform: translateY(0);
}

.orbit-stage.ready .controls-hint { opacity: 1; }
.orbit-stage.ready .skip-intro { display: none; }

.black-buffer {
  min-height: 52svh;
  background: var(--black);
}

.manifest {
  display: grid;
  place-items: center;
  min-height: 100svh;
  padding: 8rem max(1.25rem, 6vw);
  border-top: 1px solid #151515;
}

.manifest-inner { width: min(100%, 44rem); text-align: center; }

.manifest p {
  margin: 0;
  color: #d9d9d7;
  font-size: clamp(1.05rem, 1.7vw, 1.3rem);
  line-height: 1.85;
}

.manifest .intent { color: var(--phi); }

.contact {
  display: inline-block;
  margin-top: 4rem;
  color: var(--muted);
  text-decoration: none;
  font: .82rem ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: .12em;
}

.contact:hover,
.contact:focus-visible { color: var(--phi); }

@media (max-aspect-ratio: 3/4) {
  .brand-banner { width: 68vw; }
  .orbit-stage.framed .brand-banner { top: max(1.5rem, env(safe-area-inset-top)); }
  .controls-hint { bottom: max(1.5rem, env(safe-area-inset-bottom)); font-size: .65rem; }
  .hud { width: min(60vw, 12rem); font-size: .6rem; }
}
