@charset "UTF-8";

/*=============================================
 * HOME
*=============================================*/
.btn-scroll {
   width: 12px;
   cursor: pointer;
   transition: all 0.3s;
   position: relative;
   text-align: center;
}

.btn-scroll dd {
   background-color: #ccc;
   width: 1px;
   height: 180px;
   margin: 10px auto 0;
   position: relative;
   overflow: hidden;
}

.btn-scroll dd:after {
   content: '';
   width: 100%;
   height: 100%;
   background-color: #008570;
   position: absolute;
   top: 0;
   left: 0;
   animation: sdl01 2s infinite;
}

.btn-scroll:hover {
   opacity: 0.7;
}

@keyframes sdl01 {
   0% {
      transform: translateY(-100%);
   }

   100% {
      transform: translateY(100%);
   }
}

/* -- -- */
#mv {
   width: 100%;
   height: 100vh;
   position: relative;
   overflow: hidden;
   line-height: 1.5;
}

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

#mv .photo:after {
   content: '';
   width: 100%;
   height: 100%;
   background: url("../img/index/mv-mask.webp") no-repeat center/cover;
   position: absolute;
   top: 0;
   left: 0;
   opacity: 0.7;
   mix-blend-mode: soft-light;
}

#mv .photo video {
   display: block;
   width: 100%;
   height: 100%;
   object-fit: cover;
}

#mv h2 {
   width: 465px;
   position: absolute;
   top: 50%;
   left: 50%;
   transform: translate(-50%, -50%);
}

#mv .mv-btn {
   width: 150px;
   position: absolute;
   right: 30px;
   bottom: 40px;
}

#mv .mv-btn a {
   display: grid;
   align-items: center;
   justify-content: center;
}

#mv .mv-btn a span {
   grid-area: 1/1;
   margin: auto;
}

#mv .mv-btn a .circle {
   display: block;
}

#mv .mv-btn a .circle img {
   animation: rotate360 8s linear infinite;
}

#mv .mv-btn a .icon {
   display: block;
   width: 33px;
   position: relative;
}

#mv .mv-btn a .icon:before {
   content: '';
   width: 89px;
   height: 89px;
   background: #D7D6CE;
   position: absolute;
   top: 50%;
   left: 50%;
   transform: translate(-50%, -50%) scale(0.8);
   opacity: 0;
   transition: all 0.3s;
   border-radius: 50%;
}

#mv .mv-btn a .icon img {
   position: relative;
}

#mv .mv-btn a:hover {
   opacity: 1;
}

#mv .mv-btn a:hover .circle img {
   animation-play-state: paused;
}

#mv .mv-btn a:hover .icon:before {
   transform: translate(-50%, -50%) scale(1);
   opacity: 1;
}

#mv .feed {
   width: 546px;
   color: #fff;
   border-right: 1px solid #fff;
   border-left: 1px solid #fff;
   position: absolute;
   bottom: 90px;
   left: 30px;
   padding: 0 12px;
   box-sizing: border-box;
}

#mv .feed ul {
   display: grid;
   grid-template-columns: auto 1fr;
   gap: 20px;
   padding-top: 5px;
}

#mv .feed ul .ttl a {
   -webkit-box-orient: vertical;
   -webkit-line-clamp: 1;
   display: -webkit-box;
   overflow: hidden;
}

#mv nav {
   display: flex;
   align-items: center;
   width: calc(50% + 500px);
   height: 70px;
   box-sizing: border-box;
   background-color: #fff;
   padding: 0 30px;
   position: absolute;
   bottom: 0;
   left: 0;
}

#mv nav .logo {
   display: flex;
   align-items: flex-end;
   gap: 20px;
   flex: 1 0 0;
}

#mv nav .logo a {
   display: block;
   max-width: 167px;
}

#mv nav .logo span {
   font-weight: 500;
   font-size: 15px;
}

#mv nav .nav-list {
   display: flex;
   align-items: center;
   gap: 40px;
   font-weight: 700;
}

#mv nav .nav-list a {
   border-bottom: 1px solid;
}

#mv nav .nav-list a:not(:hover, .current) {
   border-bottom-color: transparent;
}

@keyframes rotate360 {
   from {
      transform: rotate(0deg);
   }

   to {
      transform: rotate(360deg);
   }
}

@media screen and (max-width: 1440px) {
   #mv nav {
      width: auto;
      right: 210px;
      padding: 0 20px;
   }

   #mv nav .nav-list {
      gap: 20px;
   }
}

@media screen and (max-width: 1200px) {
   #mv {
      height: calc(100vh - 70px);
   }

   #mv .feed {
      bottom: 30px;
   }

   #mv nav {
      display: none;
   }
}

@media screen and (max-width: 1023px) {
   #mv .feed {
      width: 500px;
   }
}

@media screen and (max-width: 767px) {
   #mv h2 {
      width: 90%;
   }

   #mv .mv-btn {
      width: 100px;
      right: 10px;
      bottom: 10px;
   }

   #mv .mv-btn a .icon {
      width: 24px;
   }

   #mv .mv-btn a .icon:before {
      width: 50px;
      height: 50px;
   }

   #mv .feed {
      width: auto;
      right: 130px;
      bottom: 20px;
      left: 20px;
   }

   #mv .feed ul {
      grid-template-columns: 1fr;
      gap: 10px;
   }

   #mv .feed ul .ttl a {
      -webkit-line-clamp: 2;
   }
}

/* -- --*/
#about {
   position: relative;
   padding: 150px 0 50px;
}

#about:before {
   content: '';
   width: 100%;
   height: 0;
   padding-top: 9.375%;
   background: url("../img/index/about-deco.webp") no-repeat center bottom/100% auto, url("../img/common/bg-1.webp") repeat center top/700px auto;
   position: absolute;
   bottom: 0;
   left: 0;
}

#about .wrap {
   display: flex;
   justify-content: flex-end;
   gap: 60px;
   max-width: 100%;
}

#about .col {
   width: 620px;
   padding: 90px 0;
}

#about h3 {
   padding-top: 40px;
}

#about .txt {
   padding-top: 50px;
}

#about .button {
   padding-top: 60px;
}

#about .photo {
   width: 50%;
   padding: 0 80px;
   box-sizing: border-box;
}

@media screen and (max-width: 1440px) {
   #about .wrap {
      gap: 40px;
   }

   #about .col {
      width: 530px;
   }

   #about .photo {
      padding: 0 40px;
   }
}

@media screen and (max-width: 1200px) {
   #about .col {
      width: 440px;
   }
}

@media screen and (max-width: 1023px) {
   #about .wrap {
      flex-direction: column;
      gap: 80px;
      max-width: 720px;
   }

   #about .col {
      width: 100%;
      padding: 0;
   }

   #about .photo {
      width: 100%;
      padding: 0;
   }
}

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

   #about .wrap {
      gap: 50px;
   }

   #about h3,
   #about .txt {
      padding-top: 20px;
   }

   #about .button {
      padding-top: 30px;
   }
}

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

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

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

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

   #works .works-list {
      display: block;
      padding-top: 20px;
      font-size: 14px;
   }

   #works .works-list .slick-list {
      margin: 0 -5px;
   }

   #works .works-list .col {
      margin: 0 5px;
   }

   #works .works-list .slick-arrow {
      position: absolute;
      top: 36vw;
      z-index: 1;
   }

   #works .works-list .slick-prev {
      left: -18px;
   }

   #works .works-list .slick-next {
      right: -18px;
   }

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

/* -- --*/
#top-parallax {
   background-image: url("../img/index/top-parallax.webp");
   min-height: 940px;
   position: relative;
}

#top-parallax:after {
   content: '';
   width: 100%;
   height: 0;
   padding-top: 9.375%;
   background: url("../img/index/parallax-deco.webp") no-repeat center top/100% auto;
   position: absolute;
   bottom: -1px;
   left: 0;
}

@media screen and (max-width: 767px) {
   #top-parallax {
      min-height: 80vw;
   }
}

/* -- --*/
#service {
   padding: 60px 0 120px;
}

#service .txt {
   line-height: 2;
   padding-top: 40px;
}

#service .box {
   display: grid;
   grid-template-columns: repeat(3, 1fr);
   gap: 110px;
   padding-top: 50px;
}

#service .box h3 {
   font-weight: 500;
   font-size: 17px;
   line-height: 2;
   padding-top: 10px;
}

#service .button {
   padding-top: 70px;
}

@media screen and (max-width: 1200px) {
   #service .box {
      gap: 50px;
   }
}

@media screen and (max-width: 1023px) {
   #service .box {
      gap: 20px;
   }

   #service .box h3 {
      font-size: 16px;
   }
}

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

   #service .txt {
      padding-top: 20px;
   }

   #service .box {
      grid-template-columns: 1fr;
      gap: 30px;
      padding-top: 30px;
   }

   #service .button {
      padding-top: 30px;
   }
}

/* -- --*/
#news {
   padding: 200px 0;
}

#news .wrap {
   display: grid;
   grid-template-columns: 400px 1fr;
}

#news .button {
   position: absolute;
   top: 150px;
   left: 0;
}

@media screen and (max-width: 1023px) {
   #news .wrap {
      grid-template-columns: 280px 1fr;
   }
}

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

   #news .wrap {
      grid-template-columns: 1fr;
      gap: 30px;
   }

   #news .button {
      position: static;
      text-align: center;
   }
}

/* -- --*/
#recruit {
   background: url("../img/index/recruit-bg-img.webp") no-repeat center top/cover;
   color: #fff;
   padding: 270px 0;
}

#recruit h2 {
   color: #fff;
}

#recruit .txt {
   line-height: 24px;
   padding-top: 40px;
}

#recruit .button {
   padding-top: 60px;
}

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

   #recruit .txt,
   #recruit .button {
      padding-top: 20px;
   }

   #recruit .button {
      text-align: left;
   }
}

/* -- --*/
#company {
   padding: 120px 0;
}

#company .wrap {
   display: flex;
   justify-content: flex-end;
   align-items: center;
   gap: 60px;
   max-width: 100%;
}

#company .col {
   width: 620px;
   padding: 50px 0;
}

#company .logo {
   max-width: 167px;
   padding-top: 40px;
}

#company .txt {
   padding-top: 50px;
}

#company .button {
   padding-top: 60px;
}

#company .photo {
   width: 50%;
   padding: 0 80px;
   box-sizing: border-box;
}

@media screen and (max-width: 1440px) {
   #company .wrap {
      gap: 40px;
   }

   #company .col {
      width: 530px;
   }

   #company .photo {
      padding: 0 40px;
   }
}

@media screen and (max-width: 1200px) {
   #company .col {
      width: 440px;
   }
}

@media screen and (max-width: 1023px) {
   #company .wrap {
      flex-direction: column;
      gap: 80px;
      max-width: 720px;
   }

   #company .col {
      width: 100%;
      padding: 0;
   }

   #company .photo {
      width: 100%;
      padding: 0;
   }
}

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

   #company .wrap {
      gap: 50px;
   }

   #company .logo,
   #company .txt {
      padding-top: 20px;
   }

   #company .button {
      padding-top: 30px;
   }
}

/*=============================================
 * 事業内容
*=============================================*/
#lead {
   padding-bottom: 80px;
}

#lead .txt {
   padding-top: 50px;
}

#lead .list-btn {
   display: flex;
   align-items: center;
   gap: 20px;
   font-weight: 700;
   line-height: 1.5;
   padding-top: 80px;
}

#lead .list-btn li+li {
   border-left: 1px solid #333;
   padding-left: 20px;
}

#lead .list-btn a {
   display: inline-flex;
   align-items: center;
   gap: 10px;
}

#lead .list-btn a:after {
   content: '';
   width: 20px;
   height: 20px;
   background: url("../img/common/arrow-circle-down.webp") no-repeat center top/cover;
   display: block;
}

@media screen and (max-width: 767px) {
   #lead .txt {
      padding-top: 30px;
   }

   #lead .list-btn {
      flex-wrap: wrap;
      gap: 10px;
      padding-top: 30px;
   }

   #lead .list-btn li+li {
      padding-left: 10px;
   }

   #lead .list-btn a {
      gap: 10px;
   }
}

.service-item .row-1 {
   display: grid;
   justify-content: center;
   align-items: center;
   position: relative;
   color: #fff;
}

.service-item .row-1 figure,
.service-item .row-1 .wrap {
   grid-area: 1/1;
}

.service-item .row-1 .no {
   padding-bottom: 5px;
}

.service-item .row-2 {
   padding: 80px 0 100px;
}

.service-item .row-2 .wrap {
   max-width: calc(50% + 680px);
   margin-right: 0;
   padding-right: 80px;
}

.service-item .row-2 .box {
   display: grid;
   grid-template-columns: 620px 1fr;
   gap: 140px;
}

.service-item .row-2 .box .col {
   padding-top: 30px;
}

.service-item .row-2 .box h4 {
   padding-top: 20px;
}

.service-item .row-2 .box .txt {
   padding-top: 50px;
}

.service-item .row-2 .box .button {
   padding-top: 60px;
}

.service-item .row-2 .box .content {
   display: flex;
   flex-direction: column;
   gap: 20px;
   background-color: #D7D6CE;
   margin-top: 30px;
   padding: 30px 40px;
   line-height: 1.5;
}

.service-item .row-2 .box .content h5 {
   max-width: max-content;
   border-bottom: 2px solid #707070;
   padding-bottom: 5px;
   font-weight: 700;
}

.service-item .row-2 .box .content .list {
   font-size: 15px;
   line-height: 2;
}

.service-item .row-2 .box .content .list li {
   text-indent: -16px;
   padding-left: 16px;
}

.service-item .row-2 .box .content .tag {
   max-width: max-content;
   background-color: #E8E8E3;
   border-radius: 4px;
   font-size: 14px;
   padding: 5px 14px;
}

.service-item .row-2 .box .note {
   font-size: 14px;
   line-height: 20px;
   color: #707070;
   padding-top: 10px;
}

.service-item .row-2 hr {
   border-bottom-color: #707070;
   margin: 50px 0;
}

@media screen and (max-width: 1440px) {
   .service-item .row-2 .wrap {
      max-width: calc(50% + 570px);
      padding-right: 40px;
   }

   .service-item .row-2 .box {
      grid-template-columns: repeat(2, 1fr);
      gap: 70px;
   }
}

@media screen and (max-width: 1200px) {
   .service-item .row-2 .wrap {
      max-width: calc(50% + 480px);
   }
}

@media screen and (max-width: 1023px) {
   .service-item .row-2 .wrap {
      max-width: 100%;
      padding: 0 20px;
   }

   .service-item .row-2 .box {
      grid-template-columns: 1fr;
   }

   .service-item .row-2 .box .col {
      padding-top: 0;
   }
}

@media screen and (max-width: 767px) {
   .service-item .row-1 figure {
      height: 56.25vw;
   }

   .service-item .row-2 {
      padding: 50px 0;
   }

   .service-item .row-2 .wrap {
      max-width: 100%;
   }

   .service-item .row-2 .box {
      gap: 40px;
   }

   .service-item .row-2 .box .txt {
      padding-top: 20px;
   }

   .service-item .row-2 .box .content {
      margin-top: 20px;
      padding: 30px 20px;
   }

   .service-item .row-2 .box .content .list li {
      text-indent: -14px;
      padding-left: 14px;
   }

   .service-item .row-2 .box .button {
      padding-top: 30px;
   }

   #vacation-rental h2 .eg {
      font-size: 24px;
   }
}

#service__lead .wrap {
   display: grid;
   grid-template-columns: 620px 1fr;
   gap: 140px;
   max-width: calc(50% + 680px);
   margin-right: 0;
   padding-right: 80px;
}

#service__lead .col {
   padding: 40px 0;
}

#service__lead .txt {
   padding-top: 50px;
}

@media screen and (max-width: 1440px) {
   #service__lead .wrap {
      grid-template-columns: repeat(2, 1fr);
      gap: 70px;
      max-width: calc(50% + 570px);
      padding-right: 40px;
   }
}

@media screen and (max-width: 1200px) {
   #service__lead .wrap {
      max-width: calc(50% + 480px);
   }
}

@media screen and (max-width: 1023px) {
   #service__lead .wrap {
      grid-template-columns: 1fr;
      max-width: 100%;
      padding: 0 20px;
   }

   #service__lead .col {
      padding: 0;
   }
}

@media screen and (max-width: 767px) {
   #service__lead .wrap {
      gap: 30px;
   }

   #service__lead .txt {
      padding-top: 20px;
   }
}

.service__detail .tag {
   display: inline-block;
   background-color: #CCCABC;
   border-radius: 5px;
   padding: 5px 14px;
}

.service__detail h2 {
   padding-top: 20px;
}

.service__detail .desc {
   max-width: 1000px;
   padding-top: 50px;
}

.service__detail .box {
   display: grid;
   grid-template-columns: repeat(3, 1fr);
   gap: 50px;
   font-size: 15px;
   line-height: 1.5;
   padding-top: 35px;
}

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

.service__detail.bg-cl02 .tag {
   background-color: #E8E8E3;
}

@media screen and (max-width: 1023px) {
   .service__detail .box {
      gap: 30px;
   }
}

@media screen and (max-width: 767px) {
   .service__detail h2 {
      padding-top: 10px;
   }

   .service__detail .desc {
      padding-top: 20px;
   }

   .service__detail .box {
      grid-template-columns: 1fr;
      font-size: 14px;
      padding-top: 30px;
   }
}

#renovation-banner {
   color: #fff;
}

#renovation-banner .wrap {
   padding: 156px 30px;
}

#renovation-banner .txt {
   padding-top: 50px;
}

@media screen and (max-width: 767px) {
   #renovation-banner .wrap {
      padding: 75px 20px;
   }

   #renovation-banner .txt {
      text-align: justify;
      padding-top: 20px;
   }
}

/*=============================================
 * 会社情報
 *=============================================*/
#greeting .box {
   display: flex;
   gap: 140px;
   max-width: 1200px;
   margin: -105px auto 0;
}

#greeting .box .col {
   flex: 1 0 540px;
   padding-top: 145px;
}

#greeting .box .txt,
#greeting .box .name {
   padding-top: 50px;
}

#greeting .box .txt p:not(:last-child) {
   padding-bottom: 20px;
}

#greeting .box figure {
   width: 520px;
}

@media screen and (max-width: 1200px) {
   #greeting .box {
      gap: 70px;
   }

   #greeting .box .col {
      flex: 1 0 50%;
   }

   #greeting .box figure {
      width: 50%;
   }
}

@media screen and (max-width: 767px) {
   #greeting .box {
      flex-direction: column;
      gap: 40px;
      margin-top: 0;
   }

   #greeting .box .col {
      width: 100%;
      flex: inherit;
      padding-top: 30px;
   }

   #greeting .box .txt,
   #greeting .box .name {
      padding-top: 20px;
   }

   #greeting .box figure {
      width: 100%;
   }
}

#outline .tb-style {
   max-width: 1200px;
   margin: 0 auto;
   padding-top: 60px;
}

@media screen and (max-width: 767px) {
   #outline .tb-style {
      padding-top: 30px;
   }
}

#access .gmap {
   max-width: 1200px;
   height: 600px;
   margin: 60px auto 0;
}

#access .gmap iframe {
   display: block;
   width: 100%;
   height: 100%;
}

@media screen and (max-width: 767px) {
   #access .gmap {
      height: 300px;
      margin: 30px auto 0;
   }
}

/*=============================================
 * 資料
 *=============================================*/
#brochure {
   font-size: 15px;
   line-height: 2;
}

#brochure h3 {
   padding-top: 20px;
}

#brochure .txt {
   padding-top: 50px;
}

#brochure .photo {
   display: grid;
   grid-template-columns: repeat(2, 1fr);
   gap: 10px;
   padding-top: 60px;
}

#brochure .btn-download {
   padding-top: 40px;
}

#brochure .btn-download a {
   display: inline-flex;
   justify-content: center;
   align-items: center;
   gap: 10px;
   width: 320px;
   height: 40px;
   background-color: #fff;
   border-radius: 20px;
}

#brochure .btn-download a img {
   max-width: 18px;
}

#brochure .btn-download a[href="#"] {
   pointer-events: none;
}

#brochure .type {
   padding-top: 4px;
}

@media screen and (max-width: 767px) {
   #brochure {
      font-size: 14px;
   }

   #brochure h3 {
      padding-top: 10px;
   }

   #brochure .txt {
      padding-top: 20px;
   }

   #brochure .photo {
      grid-template-columns: 1fr;
      padding-top: 30px;
   }

   #brochure .btn-download {
      padding-top: 20px;
   }

   #brochure .btn-download a {
      width: 280px;
   }
}

/*=============================================
 * 採用情報
 *=============================================*/
#recruit__lead {
   padding-bottom: 60px;
}

#recruit__lead h2 {
   padding-top: 20px;
}

#recruit__lead .txt {
   font-size: 15px;
   line-height: 1.5;
   padding-top: 50px;
}

@media screen and (max-width: 767px) {
   #recruit__lead {
      padding-bottom: 40px;
   }

   #recruit__lead h2 {
      padding-top: 10px;
   }

   #recruit__lead .txt {
      font-size: 14px;
      padding-top: 30px;
   }
}

#recruitment .tb-style {
   max-width: 1200px;
   margin: 0 auto;
   padding-top: 60px;
}

@media screen and (max-width: 767px) {
   #recruitment .tb-style {
      padding-top: 30px;
   }
}

/*=============================================
 * お問い合わせ
 *=============================================*/
.mailform {
   font-size: 15px;
   line-height: 1.5;
}

.mailform .tel-wrap {
   padding: 0 50px;
}

.mailform .tel-wrap .txt {
   padding-top: 40px;
}

.mailform .tel-wrap .tel {
   font-size: 32px;
   padding-top: 20px;
}

.mailform .tel-wrap .time {
   padding-top: 10px;
}

.mailform hr {
   border-bottom: 3px dotted #333;
   margin: 50px 0;
}

.mailform .form-wrap {
   padding: 0 50px;
}

.mailform .form-wrap .txt {
   padding: 40px 0 10px;
}

.mailform .form-row {
   margin-top: 10px;
   padding: 20px 30px;
}

.mailform .form-row .caption {
   display: flex;
   align-items: center;
   gap: 6px;
}

.mailform .form-row .caption span {
   width: 46px;
   height: 24px;
   background-color: #0E0E0E;
   color: #fff;
   font-size: 12px;
   line-height: 2;
   text-align: center;
   border-radius: 20px;
}

.mailform .form-row .caption span.non {
   background-color: #fff;
   color: #0E0E0E;
}

.mailform .form-row .input {
   padding-top: 10px;
}

.mailform .form-pp {
   height: 300px;
   background-color: #fff;
   border: 1px solid #D9D9D9;
   box-sizing: border-box;
   margin: 40px 30px 0;
   padding: 20px 40px;
   overflow-y: auto;
}

.mailform .form-pp p:not(:last-child) {
   padding-bottom: 20px;
}

.mailform .form-pp-check {
   padding-top: 30px;
}

.mailform .form-pp-check .wpcf7-checkbox {
   justify-content: center;
   align-items: center;
}

.mailform .form-submit {
   display: flex;
   justify-content: center;
   align-items: center;
   gap: 10px 20px;
   padding-top: 60px;
}

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

.mailform .form-submit p {
   display: inline-flex;
   justify-content: space-between;
   align-items: center;
   width: 240px;
   box-sizing: border-box;
   position: relative;
   transition: all 0.3s linear;
   font-weight: 700;
   letter-spacing: 0.1em;
   padding: 0 10px 15px;
}

.mailform .form-submit p:before {
   content: '';
   width: 100%;
   height: 0;
   border-top: 1px dashed #707070;
   position: absolute;
   bottom: 0;
   left: 0;
}

.mailform .form-submit p:after {
   content: '';
   height: 3px;
   background-color: #707070;
   position: absolute;
   right: calc(100% - 40px);
   bottom: -1px;
   left: 0;
   -webkit-transition-property: right;
   transition-property: right;
   -webkit-transition-duration: 0.3s;
   transition-duration: 0.3s;
   -webkit-transition-timing-function: ease-out;
   transition-timing-function: ease-out;
}

.mailform .form-submit p i {
   background: url("../img/common/arrow-right.webp") no-repeat center top/cover;
   width: 16px;
   height: 16px;
   -webkit-transition-duration: 0.3s;
   transition-duration: 0.3s;
   -webkit-transition-timing-function: ease-out;
   transition-timing-function: ease-out;
}

.mailform .form-submit p .wpcf7-spinner {
   display: none;
}

.mailform .form-submit p:hover {
   opacity: 1;
}

.mailform .form-submit p:hover:after {
   right: 0;
}

.mailform .form-submit p:hover i {
   transform: translateX(10px);
}

.mailform .form-submit .btn-back:after {
   right: 0;
   left: calc(100% - 40px);
   -webkit-transition-property: left;
   transition-property: left;
}

.mailform .form-submit .btn-back i {
   transform: rotate(180deg);
}

.mailform .form-submit .btn-back:hover:after {
   left: 0;
}

.mailform .form-submit .btn-back:hover i {
   transform: rotate(180deg) translateX(10px);
}

.mailform.thanks {
   text-align: center;
}

.mailform.thanks .txt p:not(:last-child) {
   padding-bottom: 30px;
}

.mailform.thanks .button {
   padding-top: 50px;
}

@media screen and (max-width: 767px) {
   .mailform {
      font-size: 14px;
   }

   .mailform .tel-wrap {
      padding: 0;
   }

   .mailform .tel-wrap .txt {
      padding-top: 20px;
   }

   .mailform .form-wrap {
      padding: 0;
   }

   .mailform .form-wrap .txt {
      padding-top: 20px;
   }

   .mailform .form-row {
      padding: 10px;
   }

   .mailform .form-pp {
      margin: 30px 10px 0;
      padding: 20px;
   }

   .mailform .form-submit {
      padding-top: 40px;
   }

   .mailform.thanks .txt {
      text-align: left;
   }

   .mailform.thanks .txt p:not(:last-child) {
      padding-bottom: 20px;
   }

   .mailform.thanks .button {
      padding-top: 30px;
   }
}

/*=============================================
 * 新着情報
 *=============================================*/
.pt-news .wrap {
   display: flex;
   justify-content: space-between;
   align-items: flex-start;
   gap: 30px;
}

.pt-news .sidebar {
   display: flex;
   flex-direction: column;
   gap: 15px;
   width: 120px;
   font-size: 14px;
   line-height: 1.5;
   position: sticky;
   top: 100px;
}

.pt-news .sidebar a {
   display: inline-flex;
   align-items: center;
   gap: 5px;
}

.pt-news .sidebar a:before {
   content: '';
   width: 14px;
   height: 0;
   border-top: 1px solid #0E0E0E;
   opacity: 0;
   transition: all 0.3s;
}

.pt-news .sidebar a.current:before,
.pt-news .sidebar a:hover:before {
   opacity: 1;
}

.pt-news .col {
   width: calc(100% - 150px);
   max-width: 960px;
}

@media screen and (max-width: 767px) {
   .pt-news .wrap {
      flex-direction: column;
   }

   .pt-news .sidebar {
      width: 100%;
      flex-direction: row;
      flex-wrap: wrap;
      gap: 15px 0;
      position: relative;
      top: 0;
   }

   .pt-news .sidebar a {
      width: 50%;
   }

   .pt-news .col {
      width: 100%;
   }
}

/*=============================================
 * Post Detail
 *=============================================*/
.pt-detail {
   line-height: 1.5;
}

.pt-detail-time {
   display: block;
   color: #707070;
   font-weight: 500;
   font-size: 16px;
}

.pt-detail-cate {
   display: flex;
   flex-wrap: wrap;
   gap: 10px;
   font-size: 13px;
   padding-top: 5px;
}

.pt-detail-cate a {
   border-bottom: 1px solid transparent;
}

.pt-detail-cate a:hover {
   border-bottom-color: #0E0E0E;
   opacity: 1;
}

.pt-detail-title {
   padding-top: 20px;
}

.pt-detail-content {
   line-height: 42px;
   padding-top: 50px;
}

.pt-detail-content h2,
.pt-detail-content h3,
.pt-detail-content h4,
.pt-detail-content h5,
.pt-detail-content h6 {
   font-family: "Zen Old Mincho", serif;
   font-weight: 500;
   line-height: 1.5;
   letter-spacing: 0.1em;
   margin: 50px 0 20px;
}

.pt-detail-content h2 {
   background-color: #CCCABC;
   font-size: 25px;
   border-radius: 10px;
   padding: 10px 20px;
}

.pt-detail-content h3 {
   font-size: 22px;
   border-left: 5px solid;
   padding-left: 15px;
}

.pt-detail-content h4 {
   font-size: 20px;
   border-bottom: 1px solid;
   padding-bottom: 10px;
}

.pt-detail-content h1:first-child,
.pt-detail-content h2:first-child,
.pt-detail-content h3:first-child,
.pt-detail-content h4:first-child,
.pt-detail-content h5:first-child,
.pt-detail-content h6:first-child {
   margin-top: 0;
}

.pt-detail-content h2+h3,
.pt-detail-content h2+h4,
.pt-detail-content h3+h4 {
   margin-top: 0;
}

.pt-detail-content mark {
   background-color: #FFF6A8;
   color: #333;
}

.pt-detail-content strong {
   font-weight: 700;
}

.pt-detail-content p img {
   display: inline-block;
   vertical-align: top;
   margin-right: 10px;
}

.pt-detail-content p img.aligncenter {
   display: block;
   margin: 0 auto;
}

.pt-detail-content p img.alignright {
   display: block;
   margin-left: auto;
}

.pt-detail-content p img:last-child {
   margin-right: 0;
}

.pt-detail-nav {
   display: grid;
   grid-template-columns: 35px auto 35px;
   justify-content: center;
   align-items: center;
   gap: 20px;
   text-align: center;
   padding-top: 60px;
}

.pt-detail-nav a {
   border-bottom: 1px solid transparent;
}

.pt-detail-nav a:hover {
   border-bottom-color: #333;
}

.pt-detail-nav .back {
   border-right: 1px solid;
   border-left: 1px solid;
   padding: 0 20px;
}

.pt-detail #ez-toc-container {
   min-width: 480px;
   max-width: 100%;
   background-color: #fff;
   border: 2px solid #3182CE;
   border-top: 0;
   margin: 0;
   padding: 0;
   border-radius: 20px;
   overflow: hidden;
}

.pt-detail #ez-toc-container .ez-toc-title-container {
   background-color: #3182CE;
   color: #fff;
   font-weight: 500;
   font-size: 20px;
   letter-spacing: 0;
   line-height: 30px;
   text-align: center;
   position: relative;
   padding: 13px 20px 12px;
   box-sizing: border-box;
}

.pt-detail #ez-toc-container .ez-toc-title {
   display: flex;
   justify-content: center;
   align-items: center;
   gap: 2px;
   color: #fff;
   font-size: inherit;
   position: relative;
}

.pt-detail #ez-toc-container .ez-toc-title:before {
   content: '';
   width: 16px;
   height: 11px;
   background: url("../img/common/toc-icon.png") no-repeat center top/100% auto;
   display: block;
   position: relative;
   top: 2px;
}

.pt-detail #ez-toc-container .ez-toc-title-toggle {
   display: block;
   width: 100%;
   height: 100%;
   position: absolute;
   top: 0;
   left: 0;
}

.pt-detail #ez-toc-container .ez-toc-title-toggle a {
   width: 100%;
   height: 100%;
   padding: 0;
   margin: 0;
   opacity: 0;
}

.pt-detail #ez-toc-container nav {
   font-size: 16px;
   line-height: 24px;
}

.pt-detail #ez-toc-container nav>ul {
   padding: 40px 50px 60px;
}

.pt-detail #ez-toc-container nav a {
   color: inherit;
   font-size: inherit;
}

.pt-detail #ez-toc-container nav a:before {
   color: #25271F;
   margin-right: 5px;
}

.pt-detail #ez-toc-container nav ul,
.pt-detail #ez-toc-container nav li {
   font-size: inherit;
   line-height: inherit;
}

.pt-detail #ez-toc-container nav .ez-toc-list li+li {
   padding-top: 20px;
}

.pt-detail #ez-toc-container nav .ez-toc-list>li>a {
   font-weight: 700;
   color: inherit;
   position: relative;
   padding-left: 0;
}

.pt-detail #ez-toc-container nav .ez-toc-list>li>a:after {
   content: '';
   border-width: 6px 0 6px 8px;
   border-color: transparent transparent transparent #000;
   border-style: solid;
   position: absolute;
   top: 6px;
   left: 0;
   display: none;
}

.pt-detail #ez-toc-container nav .ez-toc-list>li>ul {
   padding-top: 10px;
}

.pt-detail #ez-toc-container nav .ez-toc-list>li>ul a {
   font-weight: 500;
   color: inherit;
}

.pt-detail #ez-toc-container nav .ez-toc-list>li>ul a:before {
   content: counter(item) ". ";
}

@media screen and (max-width: 1023px) {
   .pt-detail #ez-toc-container {
      width: 100%;
      min-width: 100%;
   }

   .pt-detail-content p img {
      display: block;
      margin: 0 auto 15px;
   }

   .pt-detail-content p img:last-child {
      margin: 0 auto;
   }
}

@media screen and (max-width: 767px) {
   .pt-detail-content h2 {
      font-size: 20px;
   }

   .pt-detail-content h3 {
      font-size: 20px;
   }

   .pt-detail-content h4 {
      font-size: 18px;
   }

   .pt-detail-content p img {
      display: block;
      margin: 0 auto 15px;
   }

   .pt-detail-content p img.alignright {
      margin: 0 auto 15px;
   }

   .pt-detail-content p img:last-child {
      margin: 0 auto !important;
   }

   .pt-detail-nav {
      padding-top: 40px;
   }

   .pt-detail #ez-toc-container {
      min-width: 100%;
   }

   .pt-detail #ez-toc-container nav>ul {
      padding: 40px 30px;
   }

   .pt-detail #ez-toc-container nav a:before {
      margin-right: 5px;
   }

   .pt-detail #ez-toc-container nav .ez-toc-list>li>a {
      padding-left: 12px;
   }

   .pt-detail #ez-toc-container nav .ez-toc-list>li>a:after {
      top: 4px;
   }

   .pt-detail #ez-toc-container nav .ez-toc-list>li>ul {
      margin-left: 28px;
   }
}

.pt-detail-gallery {
   display: flex;
   flex-direction: column;
   align-items: center;
   gap: 10px;
   padding-top: 50px;
}

.pt-detail-gallery .main {
   width: 100%;
}

.pt-detail-gallery .main .swiper-slide {
   width: 100%;
   padding-top: 66.6%;
   position: relative;
}

.pt-detail-gallery .main .swiper-slide img {
   display: block;
   max-height: 100%;
   position: absolute;
   top: 50%;
   left: 50%;
   transform: translate(-50%, -50%);
   opacity: 0;
   transition: all 0.3s;
}

.pt-detail-gallery .main .swiper-slide-active img {
   opacity: 1;
}

.pt-detail-gallery .nav {
   width: 100%;
   position: relative;
   padding: 0 40px;
   box-sizing: border-box;
}

.pt-detail-gallery .nav .swiper-slide {
   padding-top: 20%;
   position: relative;
   transition: all 0.3s;
   cursor: pointer;
}

.pt-detail-gallery .nav .swiper-slide:after {
   content: '';
   width: 100%;
   height: 100%;
   background-color: rgba(0, 0, 0, 0.7);
   position: absolute;
   top: 0;
   left: 0;
   opacity: 0;
   transition: all 0.2s;
}

.pt-detail-gallery .nav .swiper-slide img {
   width: 100%;
   height: 100%;
   max-width: inherit;
   object-fit: cover;
   position: absolute;
   top: 0;
   left: 0;
}

.pt-detail-gallery .nav .swiper-slide-thumb-active:after {
   opacity: 1;
}

.pt-detail-gallery .nav .swiper-slide:hover {
   opacity: 0.7;
}

.pt-detail-gallery .nav .swiper-button-prev,
.pt-detail-gallery .nav .swiper-button-next {
   width: 30px;
   height: 100%;
   background-size: 60% auto;
   position: absolute;
   top: 0;
   margin: 0;
}

.pt-detail-gallery .nav .swiper-button-prev {
   left: 0;
}

.pt-detail-gallery .nav .swiper-button-next {
   right: 0;
}

@media screen and (max-width: 767px) {
   .pt-detail-gallery .nav {
      padding: 0 30px;
   }
   .pt-detail-gallery .nav .swiper-slide {
      padding-top: 40%;
   }
}

/*=============================================
 * Works
 *=============================================*/
.sidebar-works {
   display: flex;
   flex-wrap: wrap;
   gap: 60px;
   padding-bottom: 54px;
}

.sidebar-works hr {
   width: 0;
   height: auto;
   border-bottom: 0;
   border-left: 3px dotted #707070;
}

.sidebar-works dl {
   line-height: 1.5;
}

.sidebar-works dl dt {
   display: inline-block;
   font-weight: 700;
   letter-spacing: 0.1em;
   border-bottom: 1px solid;
   padding-bottom: 5px;
}

.sidebar-works dl dd {
   display: grid;
   grid-template-rows: repeat(5, 1fr);
   grid-auto-flow: column;
   gap: 15px 50px;
   font-size: 14px;
   padding-top: 20px;
}

.sidebar-works dl dd a {
   display: inline-flex;
   align-items: center;
   gap: 5px;
}

.sidebar-works dl dd a:before {
   content: '';
   width: 14px;
   height: 0;
   border-top: 1px solid #0E0E0E;
   opacity: 0;
   transition: all 0.3s;
}

.sidebar-works dl dd a.current:before,
.sidebar-works dl dd a:hover:before,
.sidebar-works dl dd a.child:before {
   opacity: 1;
}

@media screen and (max-width: 767px) {
   .sidebar-works {
      flex-direction: column;
      flex-wrap: nowrap;
      gap: 30px;
      padding-bottom: 40px;
   }

   .sidebar-works hr {
      width: 100%;
      border-bottom: 3px dotted #707070;
      border-left: 0;
   }
}

.pt-works-detail {
   line-height: 1.5;
}

.pt-works-detail .thumbnail {
   margin-bottom: -30px;
}

.pt-works-detail .box {
   width: 100%;
   max-width: 1200px;
   background: #D7D6CE;
   border: 2px solid #fff;
   border-radius: 10px;
   box-sizing: border-box;
   margin: 0 auto;
   padding: 40px 100px;
}

.pt-works-detail .box time {
   display: inline-block;
   border-bottom: 1px solid #707070;
   padding-bottom: 5px;
}

.pt-works-detail .box h1 {
   letter-spacing: 0.1em;
   padding-top: 20px;
}

.pt-works-detail .box .cate {
   padding: 20px 0;
   border-bottom: 1px solid #707070;
}

.pt-works-detail .box .cate a {
   display: inline-block;
}

.pt-works-detail .box .cate span {
   margin-left: 5px;
}

.pt-works-detail .box .cate span:last-child {
   display: none;
}

.pt-works-detail .box .txt-info {
   display: grid;
   grid-template-columns: repeat(2, 1fr);
   gap: 15px 40px;
   padding-top: 20px;
   font-size: 15px;
   line-height: 2;
}

.pt-works-detail .box .txt-info dl {
   display: grid;
   grid-template-columns: 115px 1fr;
}

.pt-works-detail .box .txt-info dl+dl {
   padding-top: 15px;
}

.pt-works-detail .box .txt-info dl dt {
   position: relative;
   padding-right: 15px;
}

.pt-works-detail .box .txt-info dl dt:after {
   content: '│';
   position: absolute;
   top: 0;
   right: 0;
}

.pt-works-detail .gallery {
   display: grid;
   grid-template-columns: repeat(4, 1fr);
   gap: 20px 10px;
   padding-top: 80px;
}

.pt-works-detail .gallery figure span {
   display: block;
   width: 100%;
   padding-top: 100%;
   position: relative;
}

.pt-works-detail .gallery figure span img {
   position: absolute;
   top: 0;
   left: 0;
}

.pt-works-detail .gallery figcaption {
   font-size: 15px;
   padding-top: 10px;
}

@media screen and (max-width: 1200px) {
   .pt-works-detail .box {
      padding: 40px;
   }
}

@media screen and (max-width: 767px) {
   .pt-works-detail .thumbnail {
      margin-bottom: -20px;
   }

   .pt-works-detail .box {
      padding: 20px 20px;
   }

   .pt-works-detail .box .txt-info {
      grid-template-columns: 1fr;
      gap: 15px;
      font-size: 14px;
   }

   .pt-works-detail .box .txt-info dl {
      grid-template-columns: 80px 1fr;
   }

   .pt-works-detail .gallery {
      grid-template-columns: repeat(2, 1fr);
      gap: 20px 10px;
      font-size: 14px;
      padding-top: 40px;
   }
}