.firstview {
  position: relative;
  padding-bottom: 3rem;
}
.firstview::before {
  content: "";
  position: absolute;
  top: -10rem;
  left: 0;
  width: calc(180 / var(--sp-width) * 100vw);
  height: calc(100% + 10rem);
  max-height: 2001px;
  background-color: var(--main-color);
}
.firstview__inner {
  position: relative;
  padding-inline: calc(30 / var(--sp-width) * 100vw);
}

@media (min-width: 600px) {
  .firstview {
    padding-bottom: calc(135 / var(--pc-width) * 100vw);
  }
  .firstview::before {
    width: calc(480 / var(--pc-width) * 100vw);
  }
  .firstview__inner {
    display: flex;
    padding-top: 12rem;
    padding-inline: 0;
    max-width: calc(var(--main-width) / var(--pc-width) * 100%);
  }
}
.firstview__img {
  position: relative;
  flex-shrink: 0;
}
.firstview__img::before, .firstview__img::after {
  content: "";
  position: absolute;
  width: calc(28 / var(--sp-width) * 100vw);
  max-width: 28px;
  height: calc(28 / var(--sp-width) * 100vw);
  max-height: 28px;
  aspect-ratio: 1/1;
  background-size: 100% 100%;
  background-position: top left;
  z-index: 1;
}
.firstview__img::before {
  top: -1.1rem;
  left: -1.1rem;
  background-image: url(../img/index/firstview_border_top.svg);
}
.firstview__img::after {
  bottom: -1.1rem;
  right: -1.1rem;
  background-image: url(../img/index/firstview_border_bottom.svg);
}

@media (min-width: 600px) {
  .firstview__img {
    width: calc(760 / var(--pc-width) * 100vw);
  }
  .firstview__img::before, .firstview__img::after {
    width: calc(56 / var(--pc-width) * 100vw);
    max-width: 56px;
    height: calc(56 / var(--pc-width) * 100vw);
    max-height: 56px;
  }
  .firstview__img::before {
    top: -2.3rem;
    left: -2.3rem;
  }
  .firstview__img::after {
    bottom: -2.3rem;
    right: -2.3rem;
  }
}
.firstview__img-lst,
.firstview__img-bg {
  position: absolute;
  bottom: 1.3rem;
  left: 0.7rem;
  display: flex;
  flex-direction: column;
  transform: translateY(100%);
}
.firstview__img-lst li,
.firstview__img-lst span,
.firstview__img-bg li,
.firstview__img-bg span {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  border-radius: 100%;
  width: calc(106 / var(--sp-width) * 100vw);
  height: calc(106 / var(--sp-width) * 100vw);
  padding: 0.4rem;
}
.firstview__img-lst span,
.firstview__img-bg span {
  background-color: var(--main-color);
}
.firstview__img-lst img,
.firstview__img-bg img {
  width: 100%;
  position: relative;
  z-index: 100;
}

.firstview__img-lst {
  z-index: 10;
}

.firstview__img-bg {
  mix-blend-mode: multiply;
  z-index: 1;
}

@media (min-width: 600px) {
  .firstview__img-lst,
  .firstview__img-bg {
    left: 3.5rem;
    flex-direction: row;
    transform: translateY(50%);
  }
  .firstview__img-lst li,
  .firstview__img-lst span,
  .firstview__img-bg li,
  .firstview__img-bg span {
    margin-right: calc(11 / var(--pc-width) * 100vw);
    width: calc(138 / var(--pc-width) * 100vw);
    height: calc(138 / var(--pc-width) * 100vw);
  }
}
.firstview__body {
  width: calc(190 / var(--sp-width) * 100vw);
  display: flex;
  flex-direction: column;
  position: relative;
  margin-left: auto;
}

@media (min-width: 600px) {
  .firstview__body {
    width: 100%;
    margin-left: calc(35 / var(--pc-width) * 100vw);
  }
}
.firstview__title {
  writing-mode: vertical-rl;
  display: flex;
  flex-direction: column;
  justify-content: center;
  font-size: clamp(1rem, 16 / var(--sp-width) * 100vw, 1.6rem);
  font-weight: 500;
  color: var(--main-color);
  padding-top: calc(50 / var(--sp-width) * 100vw);
  padding-bottom: calc(50 / var(--sp-width) * 100vw);
  font-family: var(--font-family);
  line-height: 1.4;
}
.firstview__title span {
  font-family: var(--font-family2);
  font-size: clamp(1rem, 32 / var(--sp-width) * 100vw, 3.2rem);
  color: #000;
  margin-right: 0.6rem;
}

@media (min-width: 600px) {
  .firstview__title {
    font-size: clamp(1rem, 21 / var(--pc-width) * 100vw, 2.1rem);
    font-size: 1.5vw;
    line-height: 1.5;
    padding-top: calc(65 / var(--pc-width) * 100vw);
    padding-bottom: 0;
  }
  .firstview__title span {
    font-size: clamp(1rem, 42 / var(--pc-width) * 100vw, 4.2rem);
    font-size: 3vw;
    margin-right: 1.4rem;
  }
}
.firstview__button {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  display: none;
  justify-content: center;
}
.firstview__button a {
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: var(--main-color);
  border-radius: 0.4rem;
  color: #fff;
  font-size: clamp(1rem, 16 / var(--pc-width) * 100vw, 1.6rem);
  font-weight: 600;
  width: calc(290 / var(--pc-width) * 100vw);
  height: calc(50 / var(--pc-width) * 100vw);
}

@media (min-width: 600px) {
  .firstview__button {
    display: flex;
  }
}
@media (hover: hover) {
  .firstview__button a {
    transition: background-color 0.3s ease;
  }
  .firstview__button a:hover {
    background-color: var(--main-color-hover);
  }
}
.firstview__scroll {
  position: absolute;
  top: 0;
  left: 1.25rem;
  transform: rotate(90deg);
  transform-origin: left center;
  color: #fff;
  font-weight: 600;
  display: flex;
  align-items: center;
  font-size: clamp(0.9rem, 9 / var(--pc-width) * 100vw, 0.9rem);
  width: 56vw;
  display: flex;
  justify-content: center;
}
.firstview__scroll::after {
  content: "";
  width: 1.3rem;
  height: 0.8rem;
  background-image: url(../img/index/scrolldown.svg);
  background-size: 100% 100%;
  margin-left: 0.6rem;
}

@media (min-width: 600px) {
  .firstview__scroll {
    font-size: clamp(1rem, 14 / var(--pc-width) * 100vw, 1.4rem);
    top: calc(50% - 6rem);
    left: 2rem;
    justify-content: flex-start;
    width: auto;
    transform: translateY(-50%) rotate(90deg);
  }
  .firstview__scroll::after {
    width: 2.1rem;
    height: 1.3rem;
  }
}
.dot-bar {
  position: absolute;
  bottom: 3rem;
  left: 0;
  width: 100%;
  height: 1.4rem;
}
.dot-bar::before, .dot-bar::after {
  content: "";
  height: 100%;
  position: absolute;
  bottom: 0;
  background-repeat: repeat-x;
  background-size: 2.8rem 1.4rem;
}
.dot-bar::before {
  width: calc(180 / var(--sp-width) * 100vw);
  background-image: url(../img/index/dot_bar_reverse.svg);
  background-position: right -0.6rem center;
  left: 0;
}
.dot-bar::after {
  width: 100%;
  background-image: url(../img/index/dot_bar.svg);
  background-position: 0.6rem center;
  left: calc(180 / var(--sp-width) * 100vw);
  width: calc(100% - 480 / var(--pc-width) * 100vw);
}

@media (min-width: 600px) {
  .dot-bar {
    bottom: 0;
  }
  .dot-bar::before, .dot-bar::after {
    background-position: right center;
  }
  .dot-bar::before {
    width: calc(480 / var(--pc-width) * 100vw);
  }
  .dot-bar::after {
    left: calc(480 / var(--pc-width) * 100vw);
    background-position: 0.2rem center;
  }
}