.loading_view {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  display: block;
  width: 100%;
  height: 100%;
  background-color: #F2F2F2;
  pointer-events: none;
  z-index: 110;
}
.loading_view .logo {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  display: block;
  margin: auto;
  width: 48rem;
  width: fit-content;
  height: 6.1rem;
}
.loading_view .logo:before {
  content: "";
  position: absolute;
  left: 0rem;
  bottom: 0.3rem;
  bottom: 0.2rem;
  display: block;
  margin: auto;
  width: 1.3rem;
  height: 6.1rem;
  height: 5.9rem;
  height: 61rem;
  transform: skewX(-30deg) translate3d(0, -60lvh, 0px);
  transform-origin: bottom;
  transition: transform 0.4s 0.6s ease-in-out, height 0.6s 1s ease-in-out;
  background-color: #101010;
}
.loading_view .logo svg {
  position: relative;
  margin: auto;
  max-height: 6.1rem;
  overflow: hidden;
  z-index: 1;
}
.loading_view .logo svg path {
  transform: translate3d(0, 110%, 0px);
  transition: transform 0.6s 1.3s ease-in-out;
}
.loading_view .logo svg path:nth-of-type(1) {
  transition-delay: 1.62s;
}
.loading_view .logo svg path:nth-of-type(2) {
  transition-delay: 1.64s;
}
.loading_view .logo svg path:nth-of-type(3) {
  transition-delay: 1.66s;
}
.loading_view .logo svg path:nth-of-type(4) {
  transition-delay: 1.68s;
}
.loading_view .logo svg path:nth-of-type(5) {
  transition-delay: 1.7s;
}
.loading_view .logo svg path:nth-of-type(6) {
  transition-delay: 1.72s;
}
.loading_view .logo svg path:nth-of-type(7) {
  transition-delay: 1.74s;
}
.loading_view .logo svg path:nth-of-type(8) {
  transition-delay: 1.76s;
}
.loading_view .logo svg path:nth-of-type(9) {
  transition-delay: 1.78s;
}
.loading_view .logo svg path:nth-of-type(10) {
  transition-delay: 1.8s;
}
.loading_view .logo svg path:nth-of-type(11) {
  transition-delay: 1.82s;
}
.loading_view .logo svg path:nth-of-type(12) {
  transition-delay: 1.84s;
}
.loading_view .logo svg path:nth-of-type(13) {
  transition-delay: 1.86s;
}
.loading_view .logo svg path:nth-of-type(14) {
  transition-delay: 1.88s;
}
.loading_view .logo svg path:nth-of-type(15) {
  transition-delay: 1.9s;
}
.loading_view.animation {
  animation: loading_animation 0.6s 4s ease forwards;
}
.loading_view.animation .logo {
  animation: logo_animation 0.6s 4s ease forwards;
}
.loading_view.animation .logo:before {
  height: 6.1rem;
  height: 5.9rem;
  transform: skewX(-30deg) translate3d(0, 0lvh, 0px);
}
.loading_view.animation .logo svg {
  opacity: 1;
}
.loading_view.animation .logo svg path {
  transform: translate3d(0, 0%, 0px);
}
@keyframes line_animation {
  0% {
    height: 61rem;
    transform: skewX(-30deg) translate3d(0, -60lvh, 0px);
  }
  35% {
    height: 61rem;
    transform: skewX(-30deg) translate3d(0, 0lvh, 0px);
  }
  60% {
    height: 61rem;
    transform: skewX(-30deg) translate3d(0, 0lvh, 0px);
  }
  99% {
    height: 6.1rem;
    height: 5.9rem;
    transform: skewX(-30deg) translate3d(0, 0lvh, 0px);
    opacity: 1;
  }
  100% {
    height: 6.1rem;
    height: 5.9rem;
    transform: skewX(-30deg) translate3d(0, 0lvh, 0px);
    opacity: 0;
  }
}
@keyframes logo_animation {
  0% {
    opacity: 1;
    transform: translate3d(0, 0, 0px);
  }
  100% {
    opacity: 0;
  }
}
@keyframes loading_animation {
  0% {
    opacity: 1;
    visibility: visible;
    z-index: 110;
  }
  99% {
    visibility: visible;
    z-index: 110;
  }
  100% {
    opacity: 0;
    visibility: hidden;
    z-index: -1;
  }
}
.loading_view.loaded {
  display: none;
  z-index: -1;
}
@media only screen and (max-width: 860px) {
  .loading_view .logo {
    width: 30rem;
    width: fit-content;
    height: 4.1rem;
  }
  .loading_view .logo:before {
    bottom: 0.2rem;
    bottom: 0.1rem;
    width: 0.8rem;
    height: 61rem;
  }
  .loading_view .logo svg {
    height: 4.1rem;
  }
  .loading_view.animation .logo:before {
    height: 4.1rem;
    height: 4rem;
  }
  .loading_view.animation .logo svg {
    opacity: 1;
  }
}

.transition_view {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  display: block;
  width: 100%;
  height: 100%;
  background-color: #F2F2F2;
  transition: opacity 0.8s ease;
  pointer-events: none;
  z-index: 100;
}
.transition_view.enter {
  opacity: 0;
}
.transition_view.leave {
  opacity: 1;
}

.base_line {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  pointer-events: none;
  z-index: 0;
}
.base_line .line {
  display: block;
  width: 0.1rem;
  width: 1px;
  height: 100%;
  background-color: #E5E5E5;
}
.base_line .line:first-of-type, .base_line .line:last-of-type {
  width: 0;
  background-color: transparent;
}
.base_line.re {
  position: absolute;
}
.base_line.re .line {
  background-color: #252525;
}
@media only screen and (max-width: 860px) {
  .base_line .line:nth-of-type(n + 5) {
    display: none;
  }
}

.logo_link {
  position: fixed;
  top: 3rem;
  left: 2.4rem;
  width: 5rem;
  mix-blend-mode: difference;
  z-index: 11;
  overflow: hidden;
}
.logo_link svg {
  width: 24rem;
}
@media only screen and (max-width: 860px) {
  .logo_link {
    top: 2rem;
    left: 1.6rem;
    width: 4.4rem;
  }
  .logo_link svg {
    width: 20rem;
  }
}

.logo_text {
  position: absolute;
  top: 3rem;
  left: 2.4rem;
  width: 24rem;
  mix-blend-mode: difference;
  z-index: 11;
}
@media only screen and (max-width: 860px) {
  .logo_text {
    top: 2rem;
    left: 1.6rem;
    width: 20rem;
  }
}

header {
  position: fixed;
  top: 8rem;
  left: 2.4rem;
  mix-blend-mode: difference;
  z-index: 10;
}
header nav ul li a {
  color: #DCDCDC;
  transition: all 0.2s ease-in-out;
}
header nav ul li a span {
  color: inherit;
}
header nav ul li a:hover {
  transform: translate3d(0.4rem, 0px, 0px);
}
@media only screen and (max-width: 860px) {
  header {
    position: absolute;
    top: 6rem;
    left: 1.6rem;
  }
  header svg {
    opacity: 0;
    visibility: hidden;
  }
  header.menu_open {
    container-type: inline-size;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    mix-blend-mode: initial;
  }
  header.menu_open nav {
    margin-top: 20lvh;
    padding: 0 1rem;
  }
  header.menu_open nav ul {
    counter-reset: num;
  }
  header.menu_open nav ul li {
    position: relative;
    margin-bottom: 2.4rem;
    counter-increment: num;
  }
  header.menu_open nav ul li:before {
    position: absolute;
    top: 0;
    left: -0.6rem;
    display: block;
    margin: auto;
    width: 3.7rem;
    height: 2px;
    transform: rotate(-60deg);
    transform-origin: top right;
    background-color: #F2F2F2;
  }
  header.menu_open nav ul li a {
    position: relative;
    display: block;
    margin-left: auto;
    width: 100%;
    width: fit-content;
    font-size: 3.5rem;
    line-height: 1;
    text-align: right;
    opacity: 0;
    transform: translate3d(10%, 0px, 0px);
    transition: none;
    animation: menu_fade 0.4s ease forwards;
  }
  header.menu_open nav ul li a:before {
    position: absolute;
    top: 0;
    left: 0;
    left: -3rem;
    font-size: 1rem;
    color: #F2F2F2;
  }
  header.menu_open nav ul li a:after {
    position: absolute;
    top: 0;
    left: 4rem;
    right: 0;
    bottom: 0;
    display: block;
    margin: auto;
    width: calc(100% - 4.8rem);
    height: 1px;
    background-color: #F2F2F2;
  }
  header.menu_open nav ul li a span {
    position: relative;
    display: inline-block;
    font-size: 3.5rem;
    line-height: 1;
    color: #F2F2F2;
  }
  header.menu_open nav ul li a:hover {
    transform: translate3d(10%, 0px, 0px);
  }
  header.menu_open nav ul li:nth-of-type(1) a {
    animation-delay: 0.5s;
  }
  header.menu_open nav ul li:nth-of-type(2) a {
    animation-delay: 0.6s;
  }
  header.menu_open nav ul li:nth-of-type(3) a {
    animation-delay: 0.7s;
  }
  header.menu_open nav ul li:nth-of-type(4) a {
    animation-delay: 0.8s;
  }
  header.menu_open nav ul li:nth-of-type(5) a {
    animation-delay: 0.9s;
  }
  header.menu_open nav ul li:nth-of-type(6) a {
    animation-delay: 1s;
  }
  header.menu_open nav ul li:nth-of-type(7) a {
    animation-delay: 1.1s;
  }
  header.menu_open nav ul li:nth-of-type(8) a {
    animation-delay: 1.2s;
  }
  header.menu_open nav ul li:nth-of-type(9) a {
    animation-delay: 1.3s;
  }
  header.menu_open nav ul li:nth-of-type(10) a {
    animation-delay: 1.4s;
  }
  @keyframes menu_fade {
    0% {
      opacity: 0;
      transform: translate3d(10%, 0px, 0px);
    }
    100% {
      opacity: 1;
      transform: translate3d(0%, 0px, 0px);
    }
  }
  header.menu_open svg {
    position: absolute;
    left: 0;
    bottom: 0;
    width: 83.3333333333cqw;
    width: 35lvh;
    height: auto;
    opacity: 0.4;
    visibility: visible;
    transition: opacity 0.4s 0.4s ease;
  }
}

@media only screen and (max-width: 860px) {
  .menu_bg {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    height: 100%;
    background-color: #101010;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.2s ease, visibility 0s 0.2s linear;
    z-index: 10;
  }
  .menu_bg.menu_open {
    opacity: 1;
    visibility: visible;
    transition: opacity 0.2s 0.2s ease;
  }
}

@media only screen and (max-width: 860px) {
  .menu_button {
    position: fixed;
    top: 2rem;
    right: 1.6rem;
    display: inline-block;
    font-size: 1.5rem;
    color: #DCDCDC;
    mix-blend-mode: difference;
    z-index: 10;
  }
  .menu_button:before {
    content: "";
    display: inline-block;
    margin-right: 0.6rem;
    margin-bottom: 0.2rem;
    width: 0.6rem;
    height: 0.6rem;
    background-color: #DCDCDC;
    vertical-align: middle;
    border-radius: 50%;
  }
}

main {
  position: relative;
}
main .page_title {
  padding: 0 1rem;
  padding-top: 30rem;
  font-size: 8rem;
  line-height: 1.2;
  text-align: right;
  letter-spacing: 0;
}
main .margin {
  padding: 0 1rem;
}
@media only screen and (max-width: 860px) {
  main .page_title {
    padding-top: 20rem;
    font-size: 6rem;
  }
}

footer {
  container-type: inline-size;
  position: relative;
  height: 100vh;
  background-color: #161616;
  z-index: 2;
}
footer .logo_text {
  width: 16rem;
}
footer .logo_text svg {
  margin-left: 2px;
}
footer .copy {
  position: absolute;
  top: 8rem;
  right: 2.4rem;
  flex-direction: row-reverse;
}
footer .copy p {
  margin-left: 1rem;
  width: 3.5rem;
  font-size: 3.5rem;
  line-height: 1.1;
  color: #ffffff;
}
footer .copy p .quotation {
  display: inline-block;
  font-size: 3.5rem;
  line-height: inherit;
  color: inherit;
}
footer .copy p .open {
  margin-top: -2rem;
}
footer .copy p .close {
  margin-bottom: -2rem;
}
footer .text {
  padding: 2.4rem;
  width: 100%;
}
footer .text .logo {
  position: relative;
  margin-bottom: 2.4rem;
  width: 100rem;
  width: 80rem;
  width: 66.6666666667cqw;
}
footer .text .logo .logo_line {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  display: block;
  width: 3.5rem;
  height: 16rem;
  transform: skewX(-30deg);
  transform-origin: bottom;
  overflow: hidden;
}
footer .text .logo .logo_line .line {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  display: block;
  margin: auto;
  width: 3.5rem;
  height: 16rem;
  transform-origin: bottom;
  background-color: #ffffff;
  border-radius: 0.2rem;
  animation: logo_line_animation 11s ease-in-out infinite forwards;
}
@keyframes logo_line_animation {
  0% {
    transform: translate3d(0, -100%, 0px);
  }
  2.5% {
    transform: translate3d(0, -100%, 0px);
  }
  5% {
    transform: translate3d(0, 0%, 0px);
  }
  95% {
    transform: translate3d(0, 0%, 0px);
  }
  97.5% {
    transform: translate3d(0, 100%, 0px);
  }
  100% {
    transform: translate3d(0, 100%, 0px);
  }
}
footer .text p, footer .text a, footer .text span {
  color: #ffffff;
}
footer .text .wrap {
  width: 50cqw;
}
footer .text .wrap a {
  display: block;
  margin-left: auto;
  width: 16.6666666667cqw;
}
@media only screen and (max-width: 860px) {
  footer .logo_text {
    width: 13.5rem;
  }
  footer .logo_text svg {
    margin-left: 2px;
  }
  footer .copy {
    top: 10rem;
    right: 1.6rem;
  }
  footer .copy p {
    margin-left: 0.8rem;
    width: 3rem;
    font-size: 3rem;
  }
  footer .copy p .quotation {
    font-size: 3rem;
  }
  footer .copy p .open {
    margin-top: -2rem;
  }
  footer .copy p .close {
    margin-bottom: -2rem;
  }
  footer .text {
    display: flex;
    flex-wrap: wrap;
    padding: 0;
    width: 100%;
    overflow: hidden;
  }
  footer .text .logo {
    margin-bottom: -0.4rem;
    width: 100rem;
    order: 1;
  }
  footer .text .logo .logo_line {
    margin: auto 0;
    width: 1.3rem;
    height: 6.6rem;
  }
  footer .text .logo .logo_line .line {
    margin: auto 0;
    width: 1.3rem;
    height: 6.6rem;
  }
  footer .text nav {
    display: none;
    margin-bottom: 3.5vh;
    padding-bottom: 3.5vh;
  }
  footer .text nav ul {
    display: block;
  }
  footer .text nav ul li {
    padding: 0 1.6rem;
    width: 33.3333333333cqw;
  }
  footer .text p, footer .text a, footer .text span {
    color: #ffffff;
  }
  footer .text p {
    margin-left: 1.6rem;
    margin-bottom: 3.5rem;
    margin-bottom: 3.5vh;
    font-size: 1.5rem;
  }
  footer .text span {
    display: block;
    margin-left: 1.6rem;
    margin-right: 1.6rem;
    margin-bottom: 8vh;
    width: 100%;
  }
  footer .text .wrap {
    width: 50cqw;
  }
  footer .text .wrap a {
    display: block;
    margin-left: auto;
    width: 16.6666666667cqw;
  }
}