#firstview {
  height: 100vh;
  position: relative;
  background: #fcfcfc;
  overflow-x: clip;
  overflow-y: visible;
  z-index: var(--z-base);
}

#hero-logo {
  height: 160px;
  position: absolute;
  top: 40%;
  left: 40px;
  transform: translateY(-50%);
  z-index: var(--z-base);
}

@media (max-width: 768px) {
  #hero-logo {
    height: 80px;
    left: 20px;
  }
}

#hero-copy {
  position: absolute;
  top: calc(35% + 90px);
  left: 60px;
  font-size: 1.4rem;
  color: #555;
  font-weight: 500;
  opacity: 0;

  transform: translateX(-30px);
  z-index: var(--z-base);
  will-change: opacity, transform, visibility;
}

@media (max-width: 768px) {
  #hero-copy {
    top: calc(36% + 60px);
    left: 20px;
    font-size: 1.0rem;
  }
}

/* ローディング画面 */
#preloader {
  position: fixed;
  width: 100%;
  height: 100dvh;
  background: #333;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: var(--z-topmost);
  transition: opacity 1s ease;
}

#typing-text {
  color: #fcfcfc;
  font-size: 2.0rem;
  font-family: 'M PLUS 1p', sans-serif;
  font-weight: 700;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  top: 40%;
  border-right: none;
}

#typing-text.fade-out {
  animation: fadeOut 0.8s ease forwards;
}

@keyframes fadeOut {
  to {
    opacity: 0;
  }
}

#preloader.preloader-fade {
  opacity: 0;
  pointer-events: none;
}

#firstview.fade-in {
  animation: fadeIn 1.5s ease forwards;
}

@keyframes fadeIn {
  to {
    opacity: 1;
  }
}

.firstview-inner.zoom-in {
  transform: scale(0.7);
  opacity: 0;
  animation: zoomIn 1.2s ease forwards 0.5s;
}

@keyframes zoomIn {
  to {
    transform: scale(1);
    opacity: 1;
  }
}

.circle-wheel {
  position: absolute;
  bottom: -120px;
  right: -130px;
  width: 300px;
  height: 300px;
  perspective: 1000px;
  transform-style: preserve-3d;
  pointer-events: none;
  z-index: var(--z-decor);
}

.wheel-icon {
  position: absolute;
  width: 120px;
  height: 120px;
  object-fit: contain;
  transition: transform 0.3s ease;
  pointer-events: none;
}

.circle-wheel.minimized {
  top: auto;
  bottom: 80px;
  left: auto;
  right: 20px;
  width: 50px;
  height: 50px;
  transform: none;
  opacity: 0.9;
  transition: all 0.6s ease;
}

.circle-wheel.minimized .wheel-icon {
  transform: scale(0.5);
}

.preload-line {
  opacity: 0;
  transform: translateY(20px);
  font-size: 1.6rem;
  font-weight: bold;
  color: white;
  transition: opacity 0.5s ease, transform 0.5s ease;
}

.preload-line.visible {
  opacity: 1;
  transform: translateY(0);
}

#hero-logo path {
  opacity: 0 ;
}




