*, *::before, *::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html, body {
  width: 100vw;
  height: 100vh;
  overflow: hidden;
  background: #000000;
  color-scheme: dark;
}

canvas#scene {
  display: block;
  width: 100vw;
  height: 100vh;
  position: fixed;
  top: 0;
  left: 0;
}

.overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  z-index: 10;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.8s ease-in;
}

.overlay.visible {
  opacity: 1;
}

.title {
  font-family: system-ui, -apple-system, sans-serif;
  font-size: 8vw;
  font-weight: 700;
  color: #ffffff;
  letter-spacing: -0.05em;
  text-shadow:
    0 0 20px rgba(0, 200, 255, 0.4),
    0 0 60px rgba(0, 200, 255, 0.2),
    0 0 100px rgba(0, 200, 255, 0.1);
  user-select: none;
  text-align: center;
  line-height: 1;
}

@media (max-width: 768px) {
  .title {
    font-size: 18vw;
  }

  .title span {
    display: block;
  }
}

.splash {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background: #000000;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 100;
  transition: opacity 0.6s ease-out;
}

.splash.fade-out {
  opacity: 0;
  pointer-events: none;
}

.splash-title {
  font-family: system-ui, -apple-system, sans-serif;
  font-size: 8vw;
  font-weight: 700;
  color: #ffffff;
  letter-spacing: -0.05em;
  text-align: center;
  line-height: 1;
  opacity: 0;
  animation: splash-in 0.5s ease-out 0.1s forwards;
}

@keyframes splash-in {
  from { opacity: 0; transform: scale(0.95); }
  to { opacity: 1; transform: scale(1); }
}

@media (max-width: 768px) {
  .splash-title {
    font-size: 18vw;
  }

  .splash-title span {
    display: block;
  }
}
