.top__video {
  position: fixed;
  top: 0;
  left: 0;
  z-index: -1;
  width: 100%;
  height: 100vh;
}

.top__overlay {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  pointer-events: none;
  background-color: rgb(0 0 0 / 45%);
  transition: background-color 0.8s cubic-bezier(0.75, 0, 0.25, 1);
}

.top__main {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: calc(var(--vh, 1vh) * 100);
}

.top__back-video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  object-fit: cover;
}

.top__header {
  position: fixed;
  top: 0;
  left: 0;
  z-index: var(--z-index-header-top);
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  width: 100%;
}

.top__header__component {
  position: fixed;
  top: -10rem;
  left: 0;
  z-index: var(--z-index-header);
  width: 100%;
  transition: top 0.8s cubic-bezier(0.75, 0, 0.25, 1);
}

.top__header__to-up {
  position: fixed;
  top: -10rem;
  left: 0;
  z-index: var(--z-index-header);
  width: 100%;
  transition: top 0.5s cubic-bezier(0.75, 0, 0.25, 1);
}

.top__header__to-down {
  position: fixed;
  top: 0;
  left: 0;
  z-index: var(--z-index-header);
  width: 100%;
  transition: top 0.8s cubic-bezier(0.75, 0, 0.25, 1);
}

.show-header-component {
  top: 0;
}

.top__header__lists {
  display: none;
}

.top__header__lists-sp {
  position: fixed;
  top: 0;
  left: 0;
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100vh;
  padding-top: 13rem;
  background-color: rgb(0 0 0 / 80%);
  transition: transform 0.8s cubic-bezier(0.75, 0, 0.25, 1);
  transform: translateX(100%);
}

.menu__open {
  overflow: hidden;
}

.top__header__lists-sp.menu__open {
  transform: translateX(0);
}

.hide-header {
  display: none;
}

.top__header__list-sp {
  margin: 2.5rem auto;
  color: var(--color-white);
}

.top__header__hamburger {
  position: absolute;
  top: 2.24rem;
  right: 1.4rem;
  z-index: var(--z-index-header);
  display: flex;
  flex-direction: column;
  row-gap: 0.6rem;
  cursor: pointer;
}

.top__header__hamburger__line {
  display: block;
  width: 2rem;
  height: 0.2rem;
  background-color: var(--color-white);
  transition: all 0.3s ease;
}

.top__header__hamburger.menu__open .top__header__hamburger__line:nth-child(1) {
  transform: translateY(0.8rem) rotate(-45deg);
}

.top__header__hamburger.menu__open .top__header__hamburger__line:nth-child(2) {
  opacity: 0;
}

.top__header__hamburger.menu__open .top__header__hamburger__line:nth-child(3) {
  transform: translateY(-0.8rem) rotate(45deg);
}

.top__content {
  text-align: center;
}

.top__heading {
  font-family: var(--font-noto-serif-jp);
  font-size: 3.4rem;
  line-height: 1.5;
  color: var(--color-white);
  text-align: left;
}

.top__button {
  position: absolute;
  bottom: 3rem;
  left: 50%;
  transform: translate(-50%);
}

.top__circle__button {
  position: relative;
  width: 5rem;
  height: 5rem;
  cursor: pointer;
  transform: rotateX(-180deg);
}

.top__circle__border--blue {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 2;
  display: block;
  width: 100%;
  height: 100%;
  visibility: hidden;
  fill: none;
  stroke: var(--color-blue-light);
  stroke-dasharray: 270;
  stroke-dashoffset: 270;
  stroke-width: 2.1px;
  transition: visibility 0s 1.3s;
  animation: circle-out 1.3s cubic-bezier(0.21, 0.61, 0.35, 1);
}

.top__circle__border {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 0;
  display: block;
  width: 100%;
  height: 100%;
  border: 0.04px solid var(--color-white);
  border-radius: 50%;
}

@media (any-hover: hover) {
  .top__circle__button:hover .top__circle__border--blue {
    visibility: inherit;
    transition: none;
    animation: circle-in 1.3s cubic-bezier(0.21, 0.61, 0.35, 1) forwards;
  }

  .top__circle__button:hover .top__arrow {
    animation: slide-down-up 0.4s ease-in-out forwards;
  }
}

@keyframes circle-out {
  0% {
    stroke-dashoffset: 0;
    transform: rotate(270deg);
  }

  100% {
    stroke-dashoffset: -270;
    transform: rotate(540deg);
  }
}

@keyframes circle-in {
  0% {
    stroke-dashoffset: -270;
    transform: rotate(540deg);
  }

  100% {
    stroke-dashoffset: 0;
    transform: rotate(270deg);
  }
}

@keyframes slide-down-up {
  0% {
    transform: translate(-50%, 0);
  }

  30% {
    transform: translate(-50%, -100%);
  }

  30.1% {
    transform: translate(-50%, 200%);
  }

  100% {
    transform: translate(-50%, -50%);
  }
}

.top__circle__icon {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 1.1rem;
  height: 1.1rem;
  overflow: hidden;
  text-align: center;
  transform: translate(-50%, -50%);
}

.top__arrow {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.top__about {
  min-height: calc(var(--vh, 1vh) * 100);
  padding: 3rem 2rem 5rem;
  font-weight: 500;
  color: var(--color-white);
}

.top__about__heading {
  display: flex;
  align-items: center;
}

.top__about__rectangle {
  width: 1.8rem;
  height: 0.28rem;
  background-color: var(--color-white);
}

.top__about__tag {
  margin-left: 0.4rem;
  font-size: 1rem;
}

.top__about__title {
  margin-top: 2rem;
  font-size: 3.4rem;
  font-weight: 700;
}

.top__about__text {
  padding-left: 1rem;
}

.top__about__wrap {
  margin-top: 2rem;
}

.top__about__char {
  position: relative;
  display: inline-block;
  font-size: 1.4rem;
  line-height: 1.6;
}

.top__about__company {
  margin-top: 3rem;
  font-size: 1.4rem;
  line-height: 1.6;
  opacity: 0;
}

.top__about__link {
  position: relative;
  width: fit-content;
  margin: 3rem 0 0 1rem;
  opacity: 0;
}

.top__about__button {
  position: relative;
  display: inline-block;
  width: 14rem;
  padding: 1.2rem 3rem;
  font-family: Koruri, sans-serif;
  font-size: 1.2rem;
  color: var(--color-black-dark);
  text-align: center;
  background-color: var(--color-white);
  border: 0.1rem solid var(--color-white);
  transition:
    background-color 0.3s ease,
    color 0.3s ease;
}

.top__service {
  padding: 6rem 2rem 0;
  font-weight: 300;
  color: var(--color-black-dark);
  background-color: var(--color-white);
}

.top__service__heading {
  display: flex;
  align-items: center;
  font-weight: 300;
}

.top__service__rectangle {
  width: 1.8rem;
  height: 0.28rem;
  background: radial-gradient(
    circle at left,
    var(--color-deepblue-light),
    var(--color-blue-light)
  );
}

.top__service__tag {
  margin-left: 0.4rem;
  font-size: 1rem;
  font-weight: 500;
}

.top__service__title {
  margin-top: 2rem;
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 3.4rem;
  font-weight: 700;
  color: var(--color-black-dark);
}

.top__service__box {
  margin-top: 4rem;
}

.top__service__box__title {
  display: flex;
  align-items: center;
}

.top__service__circle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3.5rem;
  height: 3.5rem;
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--color-white);
  background-color: var(--color-deepblue-light);
  border-radius: 50%;
}

.top__service__company {
  margin-left: 1rem;
  font-size: 2rem;
  font-weight: 500;
  color: var(--color-black-light);
  vertical-align: baseline;
}

.top__service__description {
  margin-top: 4rem;
  font-size: 1.4rem;
  font-weight: 300;
  line-height: 1.6;
  color: var(--color-black-light);
}

.top__service__link {
  position: relative;
  width: 14rem;
  margin-top: 3rem;
}

.top__service__button {
  position: relative;
  display: inline-block;
  width: 14rem;
  padding: 1.2rem 3rem;
  font-family: var(--font-koruri);
  font-size: 1.2rem;
  color: var(--color-deepblue-light);
  text-align: center;
  border: 0.1rem solid var(--color-deepblue-light);
  transition:
    background-color 0.3s ease,
    color 0.3s ease;
}

.arrow-right-blue {
  position: absolute;
  top: 50%;
  left: 1rem;
  z-index: 5;
  width: 1rem;
  height: 0.5rem;
  transition: filter 0.3s ease;
  transform: translateY(-50%);
}

.arrow-black {
  position: absolute;
  top: 50%;
  left: 1rem;
  z-index: 5;
  width: 1rem;
  height: 0.5rem;
  transition: filter 0.3s ease;
  transform: translateY(-50%);
}

.top__service__photo {
  margin-top: 4rem;
}

.top__news {
  padding: 6rem 2rem 1rem;
  font-family: var(--font-koruri);
  background-color: var(--color-white);
}

.top__news__heading {
  display: flex;
  align-items: center;
  font-weight: 300;
}

.top__news__rectangle {
  width: 1.8rem;
  height: 0.28rem;
  background: radial-gradient(
    circle at left,
    var(--color-deepblue-light),
    var(--color-blue-light)
  );
}

.top__news__tag {
  margin-left: 0.4rem;
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 1rem;
  font-weight: 500;
  color: var(--color-black-dark);
}

.top__news__title {
  margin-top: 2rem;
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 3.4rem;
  font-weight: 700;
  color: var(--color-black-dark);
}

.top__news__box {
  display: flex;
  flex-direction: column-reverse;
  justify-content: space-between;
}

.top__news__link {
  position: relative;
  height: fit-content;
  margin-top: 5rem;
}

.no-hover-effect {
  transition: opacity 0.3s;
}

.no-hover-effect:hover {
  opacity: 1;
}

.top__news__button {
  position: relative;
  display: inline-block;
  width: 14rem;
  padding: 1.2rem 3rem;
  font-size: 1.2rem;
  color: var(--color-deepblue-light);
  text-align: center;
  border: 0.1rem solid var(--color-deepblue-light);
}

.top__news__articles {
  width: 32rem;
  margin: 0 auto;
}

.top__news__article__box {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 2rem 1rem 0;
}

.top__news__article__heading {
  padding-top: 1.2rem;
  padding-bottom: 1.2rem;
}

.top__news__articles__heading--detail {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 30rem;
}

.top__news__article__arrow-right-blue {
  width: 1.5rem;
  height: 1.5rem;
}

.top__news__article__title {
  font-size: 1rem;
  color: var(--color-gray-thin-dark);
}

.top__news__article__description {
  margin-top: 1.8rem;
  margin-left: 0.2rem;
  font-size: 1.05rem;
  line-height: 1.5;
  color: var(--color-black-light);
}

.top__news__article__description::after {
  display: inline-block;
  width: 0.6rem;
  height: 0.6rem;
  vertical-align: text-top;
  content: '';
  background: url('/public/images/square-arrow.svg');
  transform: translateX(-0.8rem);
}

.top__news__circle__arrow {
  display: none;
}

.top__news__underline {
  color: var(--color-gray-light);
}

@media screen and (min-width: 640px) {
  .top__service__box {
    width: 54rem;
    margin-left: 4rem;
  }

  .top__news__box {
    margin-left: 4rem;
  }

  .top__news__articles {
    width: 54rem;
  }

  .top__news__articles__heading--detail {
    width: 52rem;
  }

  .top__news__article__description {
    width: 45rem;
  }
}

@media screen and (min-width: 768px) {
  .top__header {
    justify-content: center;
  }

  .top__header__lists {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 5rem 0;
  }

  .top__header__list {
    margin: 0 4rem;
    font-size: 1.5rem;
    font-weight: 500;
    color: var(--color-white);
  }

  .top__header__lists-sp {
    display: none;
  }

  .top__header__hamburger {
    display: none;
  }

  .top__heading {
    font-size: 5.5rem;
    line-height: 1.3;
    text-align: center;
  }

  .top__circle__button {
    width: 6rem;
    height: 6rem;
  }

  .top__circle__icon {
    width: 1.4rem;
    height: 1.4rem;
  }

  .top__about {
    padding: 9rem 4rem 5.5rem;
  }

  .top__about__rectangle {
    width: 2rem;
    height: 0.3rem;
  }

  .top__about__tag {
    margin-left: 0.5rem;
    font-size: 1.4rem;
  }

  .top__about__title {
    margin-top: 2rem;
    font-size: 4.5rem;
  }

  .top__about__text {
    padding-left: 2rem;
  }

  .top__about__wrap {
    margin-top: 3rem;
  }

  .top__about__char {
    font-size: 1.5rem;
    line-height: 1.7;
  }

  .top__about__company {
    margin-top: 4rem;
    font-size: 2rem;
  }

  .top__about__link {
    margin: 4rem 0 0 2rem;
  }

  .top__about__button {
    width: 15.5rem;
    padding: 1.5rem 3.5rem;
    font-size: 1.6rem;
    transition:
      color 0.3s,
      background-color 0.3s;
  }

  .top__service {
    padding: 9rem 4rem 0;
  }

  .top__service__rectangle {
    width: 2rem;
    height: 0.3rem;
  }

  .top__service__tag {
    margin-left: 0.5rem;
    font-size: 1.4rem;
  }

  .top__service__title {
    margin-top: 2rem;
    font-size: 4.5rem;
  }

  .top__service__box {
    width: 45rem;
    margin: 5rem 0 0 auto;
  }

  .top__service__circle {
    width: 4.5rem;
    height: 4.5rem;
    font-size: 2rem;
  }

  .top__service__company {
    margin-left: 1.4rem;
    font-size: 2.5rem;
  }

  .top__service__description {
    margin-top: 2.5rem;
    margin-left: 5.6rem;
    font-size: 1.5rem;
    line-height: 1.7;
  }

  .top__service__link {
    width: 15.5rem;
    margin-top: 3.4rem;
    margin-left: 5.6rem;
  }

  .arrow-right-blue {
    left: 1.2rem;
    width: 1.3rem;
    height: 0.7rem;
    transition: stroke 0.3s;
  }

  .arrow-black {
    left: 1.2rem;
    width: 1.3rem;
    height: 0.7rem;
    transition: stroke 0.3s;
  }

  .top__service__link:hover .arrow-right-blue .cls-1 {
    stroke: var(--color-white);
  }

  .top__service__link:hover .arrow-right-blue {
    animation: slide-in-out 0.5s ease-in-out;
  }

  .top__about__link:hover .arrow-black {
    animation: slide-in-out 0.5s ease-in-out;
  }

  .top__service__button {
    width: 15.5rem;
    padding: 1.5rem 3.5rem;
    font-size: 1.6rem;
    transition:
      color 0.3s,
      background-color 0.3s;
  }

  .top__service__button:hover {
    color: var(--color-white);
    background-color: var(--color-deepblue-light);
  }

  .top__service__photo {
    margin-top: 5rem;
  }

  .top__news {
    padding: 9rem 4rem 4rem;
  }

  .top__news__rectangle {
    width: 2rem;
    height: 0.3rem;
  }

  .top__news__tag {
    margin-left: 0.5rem;
    font-size: 1.4rem;
  }

  .top__news__title {
    margin-top: 2rem;
    font-size: 4.5rem;
  }

  .top__news__box {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    margin-left: 0;
  }

  .top__news__link {
    margin-top: 55rem;
  }

  .top__news__button {
    width: 15.5rem;
    padding: 1.5rem 3.5rem;
    font-size: 1.6rem;
    border: 0.1rem solid var(--color-deepblue-light);
    transition:
      color 0.3s,
      background-color 0.3s;
  }

  .top__news__button:hover {
    color: var(--color-white);
    background-color: var(--color-deepblue-light);
  }

  .top__news__link:hover .arrow-right-blue .cls-1 {
    stroke: var(--color-white);
  }

  .top__news__link:hover .arrow-right-blue {
    animation: slide-in-out 0.4s ease-in-out;
  }

  @keyframes slide-in-out {
    0% {
      opacity: 0;
      transform: translate(-2rem, -50%);
    }

    50% {
      opacity: 1;
      transform: translate(0, -50%);
    }

    100% {
      opacity: 1;
      transform: translate(0, -50%);
    }
  }

  .top__news__articles {
    width: 45rem;
    margin: 0;
  }

  .top__news__articles__heading--detail {
    width: 35rem;
  }

  .top__news__article__box {
    padding: 0 1.2rem;
  }

  .top__news__article__heading {
    padding-top: 4rem;
    padding-bottom: 1rem;
  }

  .top__news__article__arrow-right-blue {
    display: none;
  }

  .news__heading__first {
    padding-top: 0;
  }

  .top__news__article__title {
    font-size: 1.4rem;
  }

  .top__news__article__description {
    width: 35rem;
    margin-top: 1rem;
    margin-left: 0.4rem;
    font-size: 1.45rem;
    line-height: 1.6;
  }

  .top__news__circle {
    position: relative;
    display: inline-block;
    width: 2.75rem;
    height: 2.75rem;
    background-color: var(--color-deepblue-light);
    border-radius: 50%;
    transition: transform 0.3s ease;
  }

  .top__news__circle__arrow {
    position: absolute;
    top: 50%;
    left: 50%;
    display: inline-block;
    width: 1rem;
    height: 1rem;
    text-align: center;
    transform: translate(-50%, -50%);
  }

  .top__news__article__box:not(:hover) .top__news__circle {
    transform: scale(calc(1 / 6));
  }

  .top__news__square--arrow {
    transform: translate(-0.8rem, -1.2rem);
  }
}

@media screen and (min-width: 1024px) {
  .top__service__box {
    width: 70rem;
  }

  .top__news__link {
    margin-top: 44rem;
  }

  .top__news__articles {
    width: 70rem;
  }

  .top__news__articles__heading--detail {
    width: 60rem;
  }

  .top__news__article__description {
    width: 60rem;
  }

  .top__service__photo {
    position: relative;
    width: 60rem;
    height: 16.85rem;
    margin: 5.8rem 0 0 6.15rem;
    overflow: hidden;
  }

  .top__service__parallax__img {
    position: absolute;
    top: 10%;
    left: 50%;
    width: 100%;
    height: auto;
    object-fit: cover;
    transform: translateX(-50%);
    will-change: transform;
  }
}

@media screen and (min-width: 1440px) {
  .top__header__lists {
    padding: 5rem 0;
  }

  .top__header__list {
    margin: 0 5.4rem;
    font-size: 1.5rem;
  }

  .top__heading {
    font-size: 6.75rem;
  }

  .top__circle__button {
    width: 7.1rem;
    height: 7.1rem;
  }

  .top__circle__icon {
    width: 1.7rem;
    height: 1.7rem;
  }

  .top__about {
    padding: 8.7rem 9rem 8.25rem;
  }

  .top__about__rectangle {
    width: 2.25rem;
    height: 0.37rem;
  }

  .top__about__tag {
    margin-left: 0.7rem;
    font-size: 1.12rem;
  }

  .top__about__title {
    margin-top: 2.6rem;
    font-size: 4.9rem;
  }

  .top__about__text {
    padding-left: 2.85rem;
  }

  .top__about__wrap {
    margin-top: 2.58rem;
  }

  .top__about__char {
    font-size: 1.5rem;
    line-height: 1.88;
  }

  .top__about__company {
    margin-top: 4rem;
    font-size: 1.87rem;
  }

  .top__about__link {
    margin: 4rem 0 0 2.85rem;
  }

  .top__about__button {
    width: 18.7rem;
    padding: 1.67rem 5rem;
    font-size: 1.44rem;
  }

  .top__service {
    padding: 11.2rem 9rem 0;
  }

  .top__service__rectangle {
    width: 2.25rem;
    height: 0.37rem;
  }

  .top__service__tag {
    margin-left: 0.7rem;
    font-size: 1.12rem;
  }

  .top__service__title {
    margin-top: 2.6rem;
    font-size: 4.9rem;
  }

  .top__service__box {
    width: 90rem;
    margin: 4rem 0 0 auto;
  }

  .top__service__circle {
    width: 4.5rem;
    height: 4.5rem;
    font-size: 1.8rem;
  }

  .top__service__company {
    margin-left: 1.65rem;
    font-size: 3rem;
  }

  .top__service__description {
    margin-top: 3.41rem;
    margin-left: 6.15rem;
    font-size: 1.5rem;
    font-weight: 300;
    line-height: 1.83;
    color: var(--color-black-light);
  }

  .top__service__link {
    width: 18.7rem;
    margin-top: 3.41rem;
    margin-left: 6.15rem;
  }

  .arrow-right-blue {
    left: 1.37rem;
    width: 1.32rem;
    height: 0.75rem;
  }

  .arrow-black {
    left: 1.37rem;
    width: 1.32rem;
    height: 0.75rem;
  }

  .top__service__button {
    width: 18.7rem;
    padding: 1.67rem 5rem;
    font-size: 1.44rem;
  }

  .top__service__photo {
    margin: 5.8rem 0 0 5.6rem;
  }

  .top__service__parallax__img {
    top: 0;
  }

  .top__news {
    padding: 11.2rem 9rem 4rem;
    font-family: var(--font-koruri);
    background-color: var(--color-white);
  }

  .top__news__rectangle {
    width: 2.25rem;
    height: 0.37rem;
  }

  .top__news__tag {
    margin-left: 0.7rem;
    font-size: 1.12rem;
  }

  .top__news__title {
    margin-top: 2.6rem;
    font-size: 4.9rem;
  }

  .top__news__link {
    margin-top: 40rem;
  }

  .top__news__button {
    width: 18.7rem;
    padding: 1.67rem 5rem;
    font-size: 1.44rem;
  }

  .top__news__articles {
    width: 90rem;
  }

  .top__news__article__box {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 1.6rem;
  }

  .top__news__article__heading {
    padding-top: 3.15rem;
    padding-bottom: 1.26rem;
  }

  .news__heading__first {
    padding-top: 0;
  }

  .top__news__article__title {
    font-size: 1.12rem;
  }

  .top__news__article__description {
    width: 70rem;
    margin-top: 1.41rem;
    margin-left: 0.5rem;
    font-size: 1.2rem;
    line-height: 1.91;
  }

  .top__news__article__description::after {
    width: 0.7rem;
    height: 0.7rem;
  }

  .top__news__circle {
    width: 3.12rem;
    height: 3.12rem;
    transition: transform 0.3s ease;
  }

  .top__news__circle__arrow {
    width: 1.2rem;
    height: 1.2rem;
  }

  .top__news__square--arrow {
    width: 0.7rem;
    height: 0.7rem;
  }
}
