/*
Theme Name: waiwa-shinsaibashi-wptheme
Author: 7ok-works
Version: 1.0
*/
@charset "utf-8";

:root{
  --waiwagrey:#707070;
}

body{
  font-size: 18px;
  color: var(--waiwagrey);
  font-family: Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif;
}

a{
  text-decoration: none;
  color: var(--waiwagrey);
}
ul,li{
  list-style: none;
}
h2{
  display: inline-block;
  font-size: 3rem;
  font-weight: normal;
  padding-left:10%;
  border-bottom: #707070 solid 1px;
}

.sectionTitle{
  opacity: 0;
  transform: translateX(-50px);
  transition: opacity 1s ease-out, transform 1s ease-out;
}
.sectionTitle.is-animated{
  opacity: 1;
  transform: translateX(0);
}

h3{
  font-size: 1.5rem;
}
section:not(:first-child){
  margin:300px 0;
}

/* ----- header ----- */
main,header{
  background-color: #f5f4f2;
  width: 85vw;
  overflow: hidden;
}

header{
  height: 100px;
  padding: 1rem 3rem ;
  position: relative;
  z-index: 2;
}

.sitelogo img{
  width: 230px;
}

.hg-menu{
  display: none;
}

/* ----- fv ----- */
#fv{
  display: flex;
  height: calc(100vh - 100px);
}

.scrolldown {
  width: 10%;
  height: 100%;
  position: relative;
}

.scrollbar-text {
  display: inline-block;
  position: absolute;
  bottom: 0;
  padding: 10px 10px 110px;
  color: var(--waiwagrey);
  font-size: 14px;
  font-family: serif;
  line-height: 1;
  letter-spacing: 0.2em;
  writing-mode: vertical-lr;
  left: 50%;
  transform: translateX(-50%);
}

.scrollbar {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: 1px;
}

.scrollbar::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 1px;
  height: 100px;
  background:linear-gradient(#707070, transparent);;
}

.scrollbar::before {
  content: "";
  position: absolute;
  bottom: 0;
  left: -4px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background:var(--waiwagrey);
  animation: circlemove 3s ease-in-out infinite,
    cirlemovehide 3s ease-out infinite;
}

@keyframes circlemove {
  0% {
    bottom: 95px;
  }
  100% {
    bottom: 0px;
  }
}

@keyframes cirlemovehide {
  0% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  80% {
    opacity: 0.9;
  }
  100% {
    opacity: 0;
  }
}
.slideimage{
  width: 90%;
  height: 100%;
}

.topswiper,
.topswiper  .swiper-wrapper,
.topswiper  .swiper-slide {
  height: 100%; 
}
.topswiper{
  position: relative;
}

.topswiper .slide-image-wrapper {
  overflow: hidden; 
  width: 100%;
  height: 100%;
  border-radius: 90px 0 0 0;
}

.topswiper .slide-image-wrapper img {
  width: 103%; 
  height: 103%;
  object-fit:cover;
  object-position: left top;
  transform: translateX(0); 
  transition: transform 5s linear; 
  transition-delay: 0.5s;
}

.topswiper .swiper-slide-active .slide-image-wrapper img {
  transform: translateX(-3%); 
}

/* ----- about ----- */
.contentsWrap{
  display: flex;
  margin-top: 2.5rem;
}

.contentsWrap img{
  width: 55%;
}

.animeImg{
  opacity: 0;
  transform: translateX(-50px);
  transition: opacity 1s ease-out, transform 1s ease-out;;
  transition-delay: .5s;
}
.animeImg.is-animated{
  opacity: 1;
  transform: translateX(0);
}

.textWrap{
  width: 35%;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding:0 2rem;
}
#about .text{
  transform:translate( 0 -2.5rem);
}
.textanime{
  opacity: 0;
  transition: opacity 1.5s ease-out;
}
.textanime.is-animated{
  opacity: 1;
}

.contentsText{
  margin-top: 2rem;
  font-size: 1rem;
  line-height: 2rem;
}
.readmore{
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 0 0 0 auto;
  width: 300px;
  height: 3rem;
  border: #707070 solid 1px;
  border-radius: 1.5rem;
  transition: all 0.3s ease-in-out;
}
.readmore:hover{
  background-color: var(--waiwagrey);
  color:#fff;
}


.arrow1{
  position: relative;
  display: inline-block;
  width: 50px;
  height: 1px;
  margin-top: 9.9px;
  border-radius: 9999px;
  background-color: #707070;
  margin-left: 2rem;
  transition: translate 0.5s ease-in-out;
}

.arrow1::before {
  content: "";
  position: absolute;
  top: calc(50% - 0.5px);
  right: 0;
  width: 15px;
  height: 1px;
  border-radius: 9999px;
  background-color: #707070;
  transform: rotate(45deg);
  transform-origin: calc(100% - 0.5px) 50%;
}
.readmore:hover .arrow1{
  background-color: #fff;
  translate: 20px 0;
}
.readmore:hover .arrow1:before{
  background-color: #fff;
}

/* ----- rooms ----- */
#rooms .contentsWrap{
  flex-direction: row-reverse;
}
#rooms .textWrap{
  padding: 0 2rem 0 0;
  min-height: 500px;
}
#rooms img{
  translate:0 -2.5rem;
  object-fit: contain;
  object-position: top;
  opacity: 0;
  transform: translateX(50px);
  transition: opacity 1s ease-out, transform 1s ease-out;;
  transition-delay: 0.5s;
}
#rooms .animeImg.is-animated{
  opacity: 1;
  transform: translateX(0);
}

#rooms .readmore{
  translate:0 -2.5rem;
}

/* ----- location ----- */

#location h3,#location p{
  width: 80%;
  margin: 2rem auto;
}
/* ----- SNS&Contact ----- */
#sns_contact{
  display: flex;
}
.sns,.contact{
  width: 50%;
  padding-right: 2.5rem;
}
.sns h2,.contact h2{
  padding-left: 20%;
}
.sns h3,.sns p,.contact h3,.contact p{
  margin-left: 20%;
}
.sns h3,.contact h3{
  margin-top: 2.5rem;
}

.img-wrap{
  margin-left: 20%;
  margin-top: 2.5rem;
  height: 70%;
  max-height: 700px;
  overflow: hidden;
  position: relative;
}
.img-wrap a{
  display: block;
  height: 100%;
}

.img-wrap a::before{
  position: absolute;
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  background-color:rgba(0, 0, 0, 0.374) ;
  z-index: 2;
}
.sns .img-wrap a::before{
  background-image: url(img/sns_icon.svg);
  background-position: center;
  background-size: 50%;
  opacity: 0.5;
  transition: all 0.3s ease-in-out;
}
.contact .img-wrap a::before{
  background-image: url(img/contact_icon.svg);
  background-position: center;
  background-size: 60%;
  opacity: 0.5;
  transition: all 0.3s ease-in-out;
}
.img-wrap a:hover:before{
  opacity: 1;
}


.sns a img,
.contact a img{
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.arrow2{
  position: absolute;
  display: inline-block;
  width: 50px;
  height: 2px;
  bottom: 2rem;
  right: 3rem;
  margin-top: 9.9px;
  border-radius: 9999px;
  background-color: #fff;
  margin-left: 2rem;
  transition: translate 0.5s ease-in-out;
  z-index: 10;
}

.arrow2::before {
  content: "";
  position: absolute;
  top: calc(50% - 0.5px);
  right: 0;
  width: 15px;
  height: 2px;
  border-radius: 9999px;
  background-color: #fff;
  transform: rotate(45deg);
  transform-origin: calc(100% - 0.5px) 50%;
}
.img-wrap a:hover .arrow2{
  translate: 20px 0;
}


/* ----- booking ----- */
#booking h3,#booking p{
  width: 80%;
  margin: 2rem auto;
}
#booking a{
  display: inline-block;
  position: relative;
  width: 100%;
  height: 500px;
}
#booking a::before{
  content: "";
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  background-color:rgba(0, 0, 0, 0.374) ;
  z-index: 2;
  opacity: 0.7;
  transition: opacity .3s ease-in-out;
}
.reserve{
  position: absolute;
  font-size: 2rem;
  letter-spacing: 1rem;
  color: #fff;
  z-index: 2;
  top: 50%;
  left: 50%;
  transform: translate(-50%,-50%);
}

#booking a img{
  position: absolute;
  width: 100%;
  height: 500px;
  object-fit: cover;
}
#booking a:hover .arrow2{
  translate: 20px 0;
}
#booking a:hover::before{
  opacity: 1;
}


/* ----- footer ----- */
footer{
  width: 85%;
  height: 200px;
  background-color: #f5f4f2;
}
.footerwrap{
  width: 100%;
  height: 200px;
  background-color: var(--waiwagrey);
  border-radius: 100px 0 0 0;
  display: flex;
  justify-content: center;
  align-items: center;
}
.footerwrap a{
  width: 150px;
}

.footerwrap a img{
  width: 150px;
}

/* ----- side menu ----- */
.sidebar{
  background-color: #ffffff;
  position: fixed;
  top: 0;
  bottom: 0;
  right: 0;
  width: 15vw;
  box-shadow: -4px 0 8px rgba(0, 0, 0, 0.2);
  z-index: 10;
  padding: 100px 1rem 0 0;
}

.sidemenu{
  text-align: right;
  height: 100%;
  overflow-y: scroll;
  display:flex;
  flex-direction: column;
  justify-content: space-between;
  padding-bottom: 1rem;
}

.lang-switcher {
    width: 100%; 
    height: 200px;
}

.lang-display {
    position: relative;
    text-align: center;
    width: 80%;
    padding: 0.3rem 15px;
    border: 1px solid #ccc;
    border-radius: 20px;
    background-color: #f5f4f2;
    cursor: pointer;
    font-size: 0.9rem;    
    border-bottom-left-radius: 20px;
    border-bottom-right-radius: 20px;
    z-index: 2;
    margin: 1rem 0 0 auto;
    transition: all 0.3s ease;
}
.arrow{
  position: absolute;
  right: 1rem;
}

.lang-options {
    list-style: none;
    margin: 0 0 0 auto;
    padding: 0;
    width: 80%;
    max-height: 0; 
    overflow: hidden; 
    opacity: 0;
    border: 1px solid #ccc;
    border-top: none;
    border-bottom-left-radius: 20px;
    border-bottom-right-radius: 20px;
    transform: translateY(-1px); 
    text-align: center;
    transition: max-height 0.5s ease-in-out,
                opacity 0.3s ease 0.2s,
                border 0.5s ease-in-out;
}
.arrow{
  transition: all 0.3s;
}

.lang-switcher.is-open #current-lang-display {
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    border-bottom-color: #f5f4f2; 
}
.lang-switcher.is-open .arrow{
  transform: rotate(180deg);
}


.lang-switcher.is-open .lang-options {
    max-height: 300px; 
    opacity: 1;
}

.lang-options li a {
    display: block;
    font-size: 1rem;
    padding: 10px 15px;
    color:var(--waiwagrey);
}
.lang-options li a:hover {
    background-color: #f0f0f0;
}
.lang-options li a.active {
    display: none; 
}

.sideNavi{
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.sideNavi li a {
  color: var(--waiwagrey); 
  display: inline-block; 
  position: relative;
}
.sideNavi li a::after {
  background-color:var(--waiwagrey);
  bottom: 0;
  content: "";
  height: 1px;
  left: 0;
  position: absolute;
  transform: scale(0, 1);
  transform-origin: right top;
  transition: transform .3s;
  width: 100%;
}
.sideNavi li a:hover::after {
  transform: scale(1, 1); 
}

.copyright{
  writing-mode: vertical-rl;
  white-space:nowrap;
}

/* ----- side menu active ----- */
.sideNavi li.is-active a::before{
  content: "▶";
  position: absolute;
  left: -20px;
  color: var(--waiwagrey);
  font-size: 0.7rem;
  line-height: 1.6rem;
}
.sideNavi li.is-active a::after{
  transform: scale(1,1);
}



/* ----- About Page ----- */
.page-header-wrap{
  position: relative;
}
.page-header{
  width: 95%;
  height: 400px;
  border-radius: 90px 0 0 0;
  margin: 0 0 0 auto;
  overflow: hidden;
  position: relative;
}
.page-header::before{
  content: "";
  width: 100%;
  height: 100%;
  position: absolute;
  z-index: 4;
  background-color: rgba(0, 0, 0, 0.2);
}
.page-header img{
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.page-header p{
  display: block;
  position: absolute;
  color: #fff;
  font-size: 4rem;
  text-shadow: 5px 5px 5px #707070;
  top: 50%;
  left: 4rem;
  transform: translateY(-50%);
  z-index: 5;
}
.pagesTitleText{
  width: 85%;
  margin-left: 10%;
  padding-top: 3rem;
}
.pagesTitleText h3{
  font-size: 2rem;
  margin-bottom: 3rem;
  line-height: 3.5rem;
}
.pagesTitleText p{
  font-size: 1.2rem;
  line-height: 2.5rem;
}

.aboutcontents{
  margin: 200px 0;
}
.aboutcontents .contentsWrap:not(:last-child){
  margin-bottom: 200px;
}
.aboutcontents .textWrap{
  width: 100%;
}
.aboutcontents .contentsText{
  font-size: 1.3rem;
  line-height: 4rem;
}

.aboutcontents .contentsWrap:nth-child(even){
  flex-direction: row-reverse;
}

.animeImg.right{
  transform: translateX(50px);
}
.animeImg.right.is-animated{
  transform: translateX(0);
}

/* ----- PrivacyPolicy Page ----- */
#privacypolicy{
  width: 85%;
  margin: 0 0 200px 10%;
}

.privacyText{
  padding: 3rem 0;
}
.privacyText h4{
  font-size: 1.5rem;
  padding-bottom: 1rem;
}
.privacyText p{
  padding-left: 1rem;
  line-height: 2rem;
}


.privacy-list {
  list-style: none;
  padding-left: 1rem;
}

.privacy-list li {
  counter-increment: num;
  margin-bottom: 5px;
}

.privacy-list li::before {
  content: "(" counter(num) ") ";
}

/* ----- SNS page ----- */

.sns-image-wrap{
  width: 90%;
  margin: 0 auto;
  overflow: hidden;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: 1fr;
  gap: 1rem;
  padding-bottom: 3rem;
}
.sns-image-wrap img{
  aspect-ratio: 1/1;
  background-color: #222;
  object-fit: cover;
  width: 100%;
}
.main_btn{
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 0 auto;
  width: 300px;
  height: 3rem;
  border: #707070 solid 1px;
  border-radius: 1.5rem;
  transition: all 0.3s ease-in-out;
}
.main_btn:hover{
  background-color: var(--waiwagrey);
  color: #fff;
}

.main_btn:hover .arrow1{
  background-color: #fff;
  translate: 20px 0;
}
.main_btn:hover .arrow1:before{
  background-color: #fff;
}

/* ----- Contact Page ----- */
.contact-form {
  width: 80%;
  max-width: 1000px;
  margin: 0 auto;
  font-family: sans-serif;
}

.form-group {
  margin-bottom: 20px;
}

label {
  display: block;
  font-weight: bold;
  margin-bottom: 5px;
}

.required {
  color: red;
  font-size: 0.8em;
  margin-left: 5px;
}

input[type="text"],
input[type="email"],
textarea {
  width: 100%;
  padding: 10px;
  border: 1px solid #ccc;
  border-radius: 4px;
  font-size: 1em;
  box-sizing: border-box;
}

textarea {
  resize: vertical;
}

/* ----- Rooms Page ----- */
.rooms_slider:not(:first-child){
  margin: 200px 0;
}
.roomscontents .contentTitle{
  padding: 5rem 20% 5rem 10%;
  font-weight: normal;
}
.floorMap img{
  width: 100%;
  padding-left: 10%;
  padding-right: 20%;
}

/* ----- Rooms swiper ----- */
.roomscontents{
  overflow: hidden;
}
.rooms-swiper1{
  padding-left: 10%;
  padding-right: 20%;
  overflow: visible;
}

.rooms-swiper1 .swiper-slide img{
  width: 100%;
  height: auto;
  border-radius: 30px;

}

.rooms-swiper1 .swiper-slide:last-child{
  padding-right: 25%;
}
.rooms-swiper1 .swiper-slide{
  opacity: 0.5;
  transition: opacity .2s ease-out, transform .2s ease-out;
  transform: scale(0.9);
}
.rooms-swiper1 .swiper-slide.swiper-slide-active{
  opacity: 1;
  transform: scale(1);
}
.rooms-swiper1 .swiper-button-prev,
.rooms-swiper1 .swiper-button-next{
  background-color: rgba(255, 255, 255, 0.437);
  width: 50px;
  height: 50px;
  border-radius: 25px;
}
.rooms-swiper1 .swiper-button-prev svg,
.rooms-swiper1 .swiper-button-next svg{
  width: 80%;
  height: 50%;
}

.rooms-swiper1 .swiper-button-prev{
  left: 12%;
}
.rooms-swiper1 .swiper-button-next{
  right: 22%;
}
.rooms-swiper1 .swiper-button-disabled{
  display: none;
}
.rooms-swiper1 .swiper-pagination{
  padding-left: 10%;
  padding-right: 20%;
  bottom: -1rem;
}
.rooms-swiper1 .swiper-pagination-bullet-active{
  background-color: #707070;
}
.caption {
  width: 100%;
  margin: 3rem 0;
  text-align: left;
  font-size: 1.1rem;
  opacity: 1;
  transition: opacity 0.4s ease;
  padding-left: 15%;
  padding-right: 25%;
}
.caption.hide {
  opacity: 0;
}
/* ----- 404 ----- */
.notfound{
  text-align: center;
  height: 80vh;
}
.notfound h1,.notfound p{
  padding: 5rem 0;
}


/* ----- レスポンシブ ----- */
@media screen and (max-width: 768px) {

main, header{
  width: 100vw;
}
header{
  padding: 1rem 1rem;
  z-index: unset;
}

.hg-menu{
  display: block;
  width: 50px;
  height: 50px;
  position: fixed;
  z-index: 100;
  top: 1rem ;
  right: 1rem;
  cursor: pointer;
}
.hg-btn{
  width: 50px;
  height: 50px;
  position: relative;
}

.hg-bar{
  display: block;
  content: "";
  background-color: #707070;
  width: 50px;
  height: 3px;
  border-radius: 1.5px;
  position: absolute;
  transition: transform 1s ease-in-out , width .5s ease-in-out;
}
.hg-btn .hg-bar:nth-of-type(1){
top: 15px;
  transform-origin: left top;

}
.hg-btn .hg-bar:nth-of-type(2){
width: 25px;
top: 25px;
right: 0;
}
.hg-menu.active .hg-bar:nth-of-type(1){
  transform: rotate(25deg);
  transform-origin: left top;
}
.hg-menu.active .hg-bar:nth-of-type(2){
  transform: rotate(-25deg) translateX(-2px);
  width: 50px;
}



.sidebar{
  width: 60vw;
  transform: translateX(105%);
  transition: transform .3s ease-in-out;
}
.sidebar.active{
  transform: translateX(0);
  transition: transform .3s ease-in-out;
}
#fv{
  flex-direction: column-reverse;
  align-items: center;
}

.scrollbar-text{
  writing-mode: unset;
}

.topswiper .slide-image-wrapper img {
  object-fit:cover;
  object-position: center;
}

.slideimage{
  width: 95%;
  height: 65vh;
  margin-left: auto;
}
section:not(:first-child){
  margin: 200px 0;
}

.contentsWrap{
  flex-direction: column;
}

.contentsWrap img{
  width: 90%;
}
.textWrap{
  width: 100%;
  min-height: 500px;
}
#about .text{
  transform: translate(0);
  padding: 2rem 0;
}
#rooms .contentsWrap{
  flex-direction: column;
}
#rooms img{
  translate:0 0;
  margin-left: auto; 
}
#rooms .textWrap{
  padding-left: 10%;
  padding-right: 2rem;
  padding-top: 2rem;
}
#sns_contact{
  flex-direction: column;
}
.sns, .contact{
  width: 100%;
  padding-right:2rem
}
.contact{
  margin-top: 200px;
}
.sns h2, .contact h2{
  padding-left: 10%;
}
.sns h3, .sns p, .contact h3, .contact p,
.img-wrap{
  margin-left: 10%;
}
footer{
  width: 100%;
}
.aboutcontents .contentsText{
  line-height: 3rem;
}
.aboutcontents .contentsWrap:nth-child(even) img{
  margin-left: auto;
}

.aboutcontents .contentsWrap:nth-child(even){
  flex-direction: column;
}
.aboutcontents .contentsWrap:not(:last-child){
  margin-bottom: 100px;
}
.page-header{
  height: 200px;
  border-radius: 45px 0 0 0 ;
}
.pagesTitleText{
  width: 90%;
  margin-left: 5%;
}
.pagesTitleText h3{
  font-size: 1.5rem;
  line-height: 2.5rem;
}
.sns-image-wrap{
  grid-template-columns:1fr 1fr;
}
.roomscontents h2{
  font-size: 2rem;
}
.roomscontents .contentTitle{
  font-size: 1.2rem;
  padding: 3rem 2rem ;
}

.rooms-swiper1 .swiper-button-prev{
  left: 2.5rem;
}
.rooms-swiper1 .swiper-button-next{
  right: calc(2rem + 0.5rem);
}
.rooms-swiper1,
.rooms-swiper1 .swiper-pagination,
.caption,
.floorMap img{
  padding-left: 2rem;
  padding-right: 2rem;
}
#privacypolicy{
  width: 100%;
  margin: 0;
  padding: 0 2rem;
}
.page-header p{
  font-size: 3rem;
  left: 2rem;
}

}