/* =============================================
* opening
* ============================================= */
.opening-pc {
   display: flex;
   justify-content: center;
   align-items: center;
   background-color: #fff;
   width: 100%;
   height: 100vh;
   position: fixed;
   top: 0;
   left: 0;
   z-index: 102;
}

.opening-pc .logo {
   width: 346px;
   opacity: 0;
}

.opening-sp {
   display: none;
   background-color: #fff;
   width: 100%;
   height: 100vh;
   position: fixed;
   top: 0;
   left: 0;
   z-index: 102;
}

.opening-sp [class*='step-'] {
   width: 100%;
   height: 100%;
   position: absolute;
   top: 50%;
   left: 50%;
   transform: translate(-50%, -50%);
}

.opening-sp [class*='step-'] .logo {
   position: absolute;
   top: 50%;
   left: 50%;
   transform: translate(-50%, -50%);
}

.opening-sp .step-1 {
   width: 9px;
   height: 30px;
   background: linear-gradient(to top, #F5A629 0%, #F5A629 33.33%, #E8737C 33.33%, #E8737C 66.66%, #5FA6C1 66.66%, #5FA6C1 100%);
}

.opening-sp .step-1 .logo {
   width: 207px;
}

.opening-sp .step-2 {
   opacity: 0;
}

.opening-sp .step-2 .logo {
   width: 230px;
}

.opening-pc video,
.opening-sp video {
   display: block;
   width: 100%;
   height: 100%;
   position: absolute;
   top: 0;
   left: 0;
   object-fit: cover;
}

@media screen and (max-width: 767px) {
   .opening-pc {
      display: none;
   }

   .opening-sp {
      display: block;
   }
}

/* =============================================
* HOME
* ============================================= */
#mv {
   width: 100%;
   height: 100vh;
   position: relative;
}

#mv video {
   width: 100%;
   height: 100%;
   position: absolute;
   top: 0;
   left: 0;
   object-fit: cover;
}

#mv h2 {
   font-family: "Zen Kaku Gothic New", sans-serif;
   font-weight: 400;
   font-size: 21px;
   letter-spacing: 0.1em;
   line-height: 43px;
   position: absolute;
   right: 10.42vw;
   bottom: 5.21vw;
   left: 10.42vw;
	color:#fff;
   z-index: 1;
   text-shadow: 0 3px 6px rgba(0, 0, 0, 0.16);
}

#mv .slider {
   width: 100%;
   height: 100%;
   position: absolute;
   top: 0;
   left: 0;
}

#mv .slider .slick-track,
#mv .slider .slick-list,
#mv .slider .slick-slide {
   width: 100%;
   height: 100%;
}

@media screen and (max-width: 767px) {
   #mv {
      height: auto;
   }

   #mv:before {
      content: '';
      width: 6px;
      height: 150vw;
      background: linear-gradient(to top, #F5A629 0%, #F5A629 33.33%, #E8737C 33.33%, #E8737C 66.66%, #5FA6C1 66.66%, #5FA6C1 100%);
      position: absolute;
      top: -15vw;
      left: 50vw;
      transform: rotate(-45deg);
      z-index: 1;
   }

   #mv video {
      height: 60vw;
      position: static;
   }

   #mv .slider {
      height: 60vw;
      position: relative;
      top: auto;
      left: auto;
   }

   #mv h2 {
      font-size: 18px;
      line-height: 34px;
      padding: 35px 20px 45px 45px;
      position: relative;
      right: auto;
      bottom: auto;
      left: auto;
	   color:#000;
      z-index: 1;
   }
}

/* -- -- */
#about {
   position: relative;
}

#about .row {
   display: flex;
   align-items: center;
   gap: 135px;
   padding: 110px 10.42vw 80px;
   position: relative;
   z-index: 1;
}

#works .row{
   padding: 120px 10.42vw 40px;	
}

#about .row .logo {
   width: 32%;
   max-width: 478px;
}

#about .row .txt {
   font-size: 18px;
   line-height: 21px;
}

#about .row .txt p+p {
   padding-top: 21px;
}

#about .slider {
   z-index: 1;
}

#about .slider figure {
   margin-right: 35px;
}

#about .slider figure img {
   max-width: inherit;
   height: 400px;
}

@media screen and (max-width: 1023px) {
   #about .row {
      gap: 50px;
   }

   #about .row .logo {
      width: 50%;
   }
}

@media screen and (max-width: 767px) {
   #about:before {
      content: '';
      width: 6px;
      height: 150vw;
      background: linear-gradient(to top, #F5A629 0%, #F5A629 33.33%, #E8737C 33.33%, #E8737C 66.66%, #5FA6C1 66.66%, #5FA6C1 100%);
      position: absolute;
      top: -40vw;
      right: 48vw;
      transform: rotate(45deg);
   }

   #about .row {
      display: none;
   }
	
	#works .row{
	   padding: 20px 0 0px 0;	
	}

   #about .slider {
      z-index: -1;
   }

   #about .slider figure {
      margin-right: 18px;
   }

   #about .slider figure img {
      height: 195px;
   }
}

/* -- -- */
#concept .row {
   background: url("../img/top/concept-bg.jpg") no-repeat center/cover;
   padding: 210px 0 230px;
}

#concept .box {
   max-width: 850px;
   margin: 0 auto;
   position: relative;
   z-index: 1;
}

#concept h2 {
   font-weight: 400;
   font-size: 27px;
   letter-spacing: 0.1em;
   line-height: 39px;
}

#concept .txt {
   font-size: 17px;
   line-height: 24px;
   padding-top: 48px;
}

.video {
   width: 100%;
   max-width: 795px;
   margin: 0 auto 0;
   padding-top: 443px;
   position: relative;
	z-index:2;
}

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

@media screen and (max-width: 767px) {
   #concept .row {
      padding: 75px 20px 80px;
   }

   #concept .box {
      text-align: justify;
   }

   #concept h2 {
      font-size: 16px;
      line-height: 27px;
   }

   #concept .txt {
      font-size: 13px;
      line-height: 24px;
      padding-top: 35px;
   }

   .video {
      margin-top: 50px;
      padding-top: 56.25%;
   }

   #concept .photo-full {
      position: relative;
   }

   #concept .photo-full:after {
      content: '';
      width: 6px;
      height: 150vw;
      background: linear-gradient(to top, #F5A629 0%, #F5A629 33.33%, #E8737C 33.33%, #E8737C 66.66%, #5FA6C1 66.66%, #5FA6C1 100%);
      position: absolute;
      top: 0;
      left: 48vw;
      transform: rotate(-45deg);
   }
}

/* -- -- */
#case {
   padding: 100px 0 0;
}

#case h2 small {
   position: relative;
}

#case h2 small:before {
   content: '';
   width: 100%;
   height: 8px;
   background: linear-gradient(to right, #F5A629 0%, #F5A629 33.33%, #E8737C 33.33%, #E8737C 66.66%, #5FA6C1 66.66%, #5FA6C1 100%);
   position: absolute;
   top: 0;
   left: 0;
}

#case .row {
   position: relative;
   margin-top: 110px;
   padding: 0 115px;
}

#case .row+.row {
   margin-top: 150px;
}

#case .row .slider {
   width: 100%;
   height: 100%;
   position: absolute;
   top: 0;
   left: 0;
}

#case .row .slider .slick-list,
#case .row .slider .slick-track {
   width: 100%;
   height: 100%;
}

#case .row .slider figure {
   height: 100%;
}

#case .row .slider .slick-arrow {
   width: 39px;
   height: 89px;
   position: absolute;
   top: 50%;
   transform: translateY(-50%);
}

#case .row .slider .slick-prev {
   background: url("../img/top/slider-prev.png") no-repeat center top/cover;
   left: 12px;
}

#case .row .slider .slick-next {
   background: url("../img/top/slider-next.png") no-repeat center top/cover;
   right: 12px;
}

#case .row .box {
   display: flex;
   flex-direction: column;
   justify-content: center;
   width: 455px;
   min-height: 688px;
   background-color: rgba(255, 255, 255, 0.9);
   box-sizing: border-box;
   padding: 40px 40px;
   position: relative;
   z-index: 1;
}

#case .row .box h3 {
   font-weight: 400;
   font-size: 24px;
   letter-spacing: 0.1em;
   line-height: 34px;
}

#case .row .box h3 span {
   display: block;
   font-weight: 400;
   font-size: 18px;
   line-height: 24px;
   padding-bottom: 12px;
}

#case .row .box .txt {
   letter-spacing: 0.07em;
   padding-top: 35px;
}

#case .row .box.right {
   margin-left: auto;
}

#case .photo-full {
   padding-top: 190px;
}

@media screen and (max-width: 1023px) {
   #case .row {
      padding: 0;
   }

   #case .row .slider {
      position: relative;
   }

   #case .row .box {
      width: 100%;
      min-height: inherit;
   }
}

@media screen and (max-width: 767px) {
   #case {
      padding: 70px 0 0;
   }

   #case h2 small:before {
      height: 5px;
      top: 6px;
   }

   #case .row {
      margin-top: 35px;
   }

   #case .row+.row {
      margin-top: 55px;
   }

   #case .row .deco-1 {
      content: '';
      width: 6px;
      height: 150vw;
      background: linear-gradient(to top, #F5A629 0%, #F5A629 33.33%, #E8737C 33.33%, #E8737C 66.66%, #5FA6C1 66.66%, #5FA6C1 100%);
      position: absolute;
      top: 70vw;
      right: 48vw;
      transform: rotate(45deg);
   }

   #case .row .deco-2 {
      content: '';
      width: 6px;
      height: 150vw;
      background: linear-gradient(to top, #F5A629 0%, #F5A629 33.33%, #E8737C 33.33%, #E8737C 66.66%, #5FA6C1 66.66%, #5FA6C1 100%);
      position: absolute;
      top: 64vw;
      left: 48vw;
      transform: rotate(-45deg);
   }

   #case .row .deco-3 {
      content: '';
      width: 6px;
      height: 150vw;
      background: linear-gradient(to top, #F5A629 0%, #F5A629 33.33%, #E8737C 33.33%, #E8737C 66.66%, #5FA6C1 66.66%, #5FA6C1 100%);
      position: absolute;
      top: 50vw;
      right: 48vw;
      transform: rotate(45deg);
   }

   #case .row .slider figure {
      height: 107.7vw;
   }

   #case .row .slider .slick-arrow {
      width: 23px;
      height: 53px;
   }

   #case .row .slider .slick-prev {
      left: 10px;
   }

   #case .row .slider .slick-next {
      right: 10px;
   }

   #case .row .box {
      width: auto;
      margin: 15px 10px 0;
      padding: 10px 10px;
   }

   #case .row .box h3 {
      font-size: 16px;
      line-height: 27px;
   }

   #case .row .box h3 span {
      font-size: 16px;
      line-height: 27px;
      padding-bottom: 12px;
   }

   #case .row .box .txt {
      padding-top: 30px;
   }

   #case .photo-full {
      padding-top: 55px;
   }
}

/* -- -- */
#works {
   padding: 125px 0 160px;
}

#works h2 {
   padding-bottom: 10px;
}

#works h3 {
   font-weight: 400;
   font-size: 22px;
   letter-spacing: 0.1em;
   line-height: 30px;
   padding-top: 26px;
   position: relative;
   text-align: center;
}

#works h3:before {
   content: '';
   width: 100%;
   height: 8px;
   background: linear-gradient(to right, #F5A629 0%, #F5A629 33.33%, #E8737C 33.33%, #E8737C 66.66%, #5FA6C1 66.66%, #5FA6C1 100%);
   position: absolute;
   top: 0;
   left: 0;
}

#works .box {
   display: grid;
   grid-template-columns: repeat(3, 1fr);
   gap: 48px;
   padding: 120px 6.41vw 0;
   position: relative;
   z-index: 1;
}

#works .box h4 {
   letter-spacing: 0.03em;
   padding-top: 40px;
}

#works .box .txt {
   letter-spacing: 0.07em;
   padding-top: 15px;
}

#works .button {
   padding-top: 105px;
}

#works .gallery {
   padding: 175px 6.41vw 0;
}

#works .gallery .photo_pc {
   display: flex;
   justify-content: space-between;
   flex-wrap: wrap;
   gap: 30px;
}

#works .gallery .photo_pc li {
   width: calc(25% - 23px);
}

#works .gallery .photo_pc li:nth-child(1),
#works .gallery .photo_pc li:nth-child(2) {
   width: calc(50% - 15px);
}

#works .gallery .photo_sp {
   display: none;
}

@media screen and (max-width: 1023px) {
   #works .box {
      gap: 30px;
      padding: 120px 3.2vw 0;
   }
}

@media screen and (max-width: 767px) {
   #works {
      padding: 65px 0 0;
   }

   #works h2 {
      padding-bottom: 8px;
   }

   #works h2 small {
      padding-top: 0;
   }

   #works h3 {
      font-size: 13px;
      line-height: 24px;
      padding-top: 15px;
   }

   #works h3:before {
      height: 5px;
   }

   #works .box {
      grid-template-columns: 1fr;
      gap: 60px;
      padding: 35px 20px 0;
   }

   #works .box h4,
   #works .box .txt {
      font-size: 16px;
      line-height: 24px;
   }

   #works .box h4 {
      padding-top: 15px;
   }

   #works .box .txt {
      padding-top: 10px;
   }

   #works .button {
      padding-top: 40px;
   }

   #works .gallery {
      padding: 75px 0 0;
   }

   #works .gallery .photo_pc {
      display: none;
   }

   #works .gallery .photo_sp {
      display: block;
   }
}

/* -- -- */
#contact {
   background-color: #F6F6F6;
   padding: 90px 0 130px;
   position: relative;
   z-index: 1;
}

#contact h2 {
   font-size: 28px;
   line-height: 38px;
}

#contact h2 small {
   font-size: 18px;
}

#contact .form-wrap .inner {
   width: 90%;
   max-width: 1345px;
   margin: 0 auto;
   padding: 0;
   box-sizing: border-box;
   position: relative;
}

#contact .form-row {
   padding-bottom: 35px;
}

#contact .required {
   display: block;
   width: 70px;
   background-color: #D54244;
   color: #fff;
   font-weight: 500;
   font-size: 16px;
   letter-spacing: 0.04em;
   line-height: 32px;
   text-align: center;
   border-radius: 4px;
}

#contact .caption {
   display: flex;
   flex-wrap: wrap;
   gap: 15px;
   font-weight: 500;
   font-size: 18px;
   letter-spacing: 0.04em;
   line-height: 32px;
}

#contact .input {
   padding-top: 10px;
}

#contact .row-1 {
   padding: 125px 0 20px;
}

#contact .row-1 .inner {
   display: flex;
   flex-wrap: wrap;
   gap: 0 110px;
}

#contact .row-1 .col {
   width: calc(50% - 55px);
}

#contact .row-1 .col:last-child {
   width: 100%;
   padding-top: 5px;
}

#contact .row-2 {
   background-color: #fff;
   padding: 50px 0 90px;
}

#contact .row-2 .inner {
   display: flex;
   flex-wrap: wrap;
   gap: 0 110px;
}

#contact .row-2 h3 {
   width: 100%;
   padding-bottom: 70px;
}

#contact .row-2 .col {
   width: calc(50% - 55px);
}

#contact .row-2 .caption {
   font-size: 18px;
}

#contact .form-pp {
   padding-top: 50px;
}

#contact .form-pp .checkbox-pp {
   display: flex;
   justify-content: center;
   align-items: flex-start;
   gap: 10px;
   padding-top: 35px;
}

#contact .form-pp .txt {
   font-weight: 500;
   font-size: 18px;
   letter-spacing: 0.07em;
   line-height: 32px;
   padding-top: 70px;
}

#contact .form-btn {
   padding-top: 50px;
}

#contact .form-btn .inner {
   display: flex;
   justify-content: center;
   flex-wrap: wrap;
   gap: 20px;
}

#contact .form-btn p {
   display: flex;
   justify-content: center;
   align-items: center;
   width: 620px;
   height: 88px;
   background-color: #000;
   color: #fff;
   font-weight: 400;
   font-size: 28px;
   letter-spacing: 0.1em;
   line-height: 37px;
   border-radius: 16px;
   position: relative;
   cursor: pointer;
   transition: all 0.3s;
}

#contact .form-btn p:after {
   content: '';
   border-width: 15px 0 15px 20px;
   border-color: transparent transparent transparent #fff;
   border-style: solid;
   margin-left: 30px;
}

#contact .form-btn p input,
#contact .form-btn p a {
   display: block;
   width: 100%;
   height: 100%;
   position: absolute;
   top: 0;
   left: 0;
   opacity: 0;
   cursor: pointer;
}

#contact .form-btn p:hover {
   background-color: #707070;
}

#contact .form-btn .btn-prev {
   flex-direction: row-reverse;
   background-color: #ccc;
}

#contact .form-btn .btn-prev:after {
   border-width: 15px 20px 15px 0;
   border-color: transparent #fff transparent transparent;
   margin-right: 30px;
   margin-left: 0;
}

#contact .wpcf7-spinner {
   display: none !important;
}

@media screen and (max-width: 1200px) {

   #contact .row-1 .inner,
   #contact .row-2 .inner {
      gap: 50px;
   }

   #contact .row-1 .col,
   #contact .row-2 .col {
      width: calc(50% - 25px);
   }

   #contact .row-2 .caption {
      font-size: 20px;
   }
}

@media screen and (max-width: 1023px) {

   #contact .row-1 .inner,
   #contact .row-2 .inner {
      gap: 0;
   }

   #contact .row-1 .col,
   #contact .row-2 .col {
      width: 100%;
   }

   #contact .row-1 .col:last-child {
      padding-top: 0;
   }
}

@media screen and (max-width: 767px) {
   #contact {
      padding: 60px 0 105px;
   }

   #contact h2 {
      font-size: 16px;
      line-height: 27px;
   }

   #contact h2 small {
      font-size: 13px;
      line-height: 24px;
      padding-top: 10px;
   }

   #contact .form-wrap .inner {
      width: 100%;
      padding: 0 20px;
   }

   #contact .form-row {
      padding-bottom: 20px;
   }

   #contact .caption {
      align-items: center;
      font-size: 13px;
      line-height: 24px;
   }

   #contact .required {
      width: 37px;
      font-size: 11px;
      line-height: 18px;
   }

   #contact .row-1 {
      padding: 40px 0 0;
   }

   #contact .row-2 {
      background: transparent;
      padding: 30px 0 0;
   }

   #contact .row-2 h3 {
      font-size: 13px;
      line-height: 24px;
      padding-bottom: 30px;
   }

   #contact .row-2 .caption {
      font-size: 13px;
      line-height: 24px;
   }

   #contact .row-2 .col:last-child {
      border-bottom: 1px solid #707070;
      padding-bottom: 10px;
   }

   #contact .form-pp {
      padding-top: 15px;
   }

   #contact .form-pp h3 {
      font-size: 13px;
      line-height: 24px;
      text-align: left;
   }

   #contact .form-pp .checkbox-pp {
      justify-content: flex-start;
      padding-top: 15px;
   }

   #contact .form-pp .txt {
      font-size: 13px;
      line-height: 24px;
      padding-top: 20px;
      text-align: left;
   }

   #contact .form-btn {
      padding-top: 30px;
   }

   #contact .form-btn p {
      width: 100%;
      height: 47px;
      font-size: 16px;
      line-height: 27px;
   }

   #contact .form-btn p:after {
      border-width: 6px 0 6px 10px;
      margin-left: 12px;
   }

   #contact .form-btn .btn-prev:after {
      border-width: 6px 10px 6px 0;
      margin-right: 12px;
      margin-left: 0;
   }
}

#contact .result_txt {
   display: block;
   word-break: break-all;
   white-space: pre-wrap;
}

/* -- -- */
.thanks {
   text-align: center;
}

.thanks .txt {
   padding: 50px 20px 0;
}

.thanks .txt p+p {
   padding-top: 30px;
}

.thanks .button {
   text-align: center;
   padding-top: 50px;
}

@media screen and (max-width: 767px) {
   .thanks .form-wrap {
      text-align: left;
   }

   .thanks .txt {
      padding-top: 30px;
   }

   .thanks .txt p+p {
      padding-top: 20px;
   }

   .thanks .button {
      padding-top: 40px;
   }
}

/* -- -- */
.section-deco {
   display: flex;
   flex-direction: column;
   align-items: center;
   width: 100%;
   height: 551.2vw;
   position: absolute;
   top: 0;
   left: 0;
}

.section-deco [class*="border"] {
   width: 100%;
   position: relative;
}

.section-deco [class*="border"]:nth-child(odd) {
   height: 150vw;
}

.section-deco [class*="border"]:nth-child(odd):before {
   content: '';
   width: 18px;
   height: 200%;
   background: linear-gradient(to top, #F5A629 0%, #F5A629 33.33%, #E8737C 33.33%, #E8737C 66.66%, #5FA6C1 66.66%, #5FA6C1 100%);
   position: absolute;
   top: 50%;
   left: 50%;
   transform: translate(-50%, -50%) rotate(-45deg);
}

.section-deco [class*="border"]:nth-child(even) {
   height: 147vw;
}

.section-deco [class*="border"]:nth-child(even):before {
   content: '';
   width: 18px;
   height: 200%;
   background: linear-gradient(to top, #F5A629 0%, #F5A629 33.33%, #E8737C 33.33%, #E8737C 66.66%, #5FA6C1 66.66%, #5FA6C1 100%);
   position: absolute;
   top: 50%;
   left: 50%;
   transform: translate(-50%, -50%) rotate(45deg);
}

@media screen and (max-width: 767px) {
   .section-deco {
      display: none;
   }
}
