body {
  position: relative;
  background-color: var(--color-bg);
  font-family: "Manrope", "Space Grotesk", "Noto Sans KR", "Segoe UI", sans-serif;
  color: var(--color-text);
  background-image: var(--bg-image);
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
  overflow: hidden;
}

.bg-stage {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}

.bg-layer {
  position: absolute;
  inset: 0;
  background-image: var(--bg-image);
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
  opacity: 0;
  transition: opacity 700ms ease;
  will-change: opacity;
}

.bg-layer.is-active {
  opacity: 1;
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 1;
  background:
    radial-gradient(circle at 20% 10%, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0) 42%),
    linear-gradient(to bottom, rgba(0, 0, 0, 0.18), rgba(0, 0, 0, 0.58));
  pointer-events: none;
}

body.bg-light::before {
  background:
    radial-gradient(circle at 20% 10%, rgba(0, 0, 0, 0.18), rgba(0, 0, 0, 0) 42%),
    linear-gradient(to bottom, rgba(0, 0, 0, 0.36), rgba(0, 0, 0, 0.66));
}

label,
button,
input {
  letter-spacing: 0.01em;
}

button,
input {
  transition: transform 0.2s ease, border-color 0.2s ease, background-color 0.2s ease, opacity 0.2s ease;
}

button:active {
  transform: translateY(1px);
}

button:focus-visible,
input:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.35), 0 0 0 4px var(--color-focus);
}

@media (max-width: 900px) {
  body {
    overflow: auto;
  }
}
