html,
body {
  margin: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: #a9b1bf;
  font-family: "IBM Plex Mono", "Courier New", monospace;
}

body::before,
body::after {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
}

body::before {
  background:
    radial-gradient(30vw 10vw at 9% 24%, rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0) 70%),
    radial-gradient(22vw 8vw at 89% 11%, rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0) 70%),
    radial-gradient(24vw 10vw at 89% 95%, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0) 70%);
}

body::after {
  background-image: radial-gradient(rgba(255, 255, 255, 0.4) 0.7px, rgba(255, 255, 255, 0) 0.7px);
  background-size: 80px 80px;
  opacity: 0.34;
}

#app {
  position: fixed;
  inset: 0;
}

#scene {
  width: 100%;
  height: 100%;
  display: block;
}

.ui {
  position: absolute;
  inset: 0;
  color: rgba(255, 255, 255, 0.9);
  letter-spacing: 0.04em;
  pointer-events: none;
  text-shadow: 0 0 6px rgba(255, 255, 255, 0.3);
}

.logo {
  position: absolute;
  left: 7%;
  top: 11.5%;
  margin: 0;
  font-size: clamp(44px, 3.7vw, 60px);
  line-height: 1;
  font-weight: 700;
}

.label {
  position: absolute;
  margin: 0;
  font-size: clamp(11px, 0.84vw, 15px);
  font-weight: 600;
  white-space: nowrap;
}

.project { left: 30.2%; top: 14%; }
.temp { left: 58.7%; top: 24.6%; }
.cta { left: 56.8%; top: 61.2%; }
.sound { left: 10%; bottom: 8%; font-size: clamp(12px, 0.8vw, 16px); }

.overlay-lines {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.overlay-lines path {
  fill: none;
  stroke: rgba(255, 255, 255, 0.64);
  stroke-width: 0.12;
}

.overlay-lines path.thin {
  stroke-width: 0.08;
  opacity: 0.8;
}

@media (max-width: 900px) {
  .logo { left: 8%; top: 11%; font-size: 42px; }
  .project { left: 20%; top: 22%; }
  .temp { left: 66%; top: 36%; }
  .cta { left: 50%; top: 68%; }
}
