@charset "UTF-8";
/* ©SCHNEID 
Kazumi Nishibayashi */
/* ------------------------------
	メニュー
------------------------------ */
body.fixed {
 overflow: hidden;
}
#top-head {
 position: absolute;
 right: 0;
 z-index: 10;
 top: -120px;
 margin-top: 120px;
}
.nav .link {
 font-weight: 600;
 line-height: 1em;
 text-decoration: none;
 text-align: center;
 white-space: nowrap;
 color: #00afdd;
}
.nav .link:hover {
 opacity: 1;
}
.nav .menu-item {
 width: 100%;
 display: inline-flex;
 -webkit-box-align: center;
 -ms-flex-align: center;
 align-items: center;
 justify-content: flex-end;
 position: relative;
}
#top-head .nav-wrap {
 left: 0;
 top: 0;
 display: none;
 width: 100%;
 height: 100%;
 justify-content: flex-end;
 background: transparent; /* 初期背景色を透明に */
 transition: background 5s ease-in-out; /* 背景色の変化を1秒かけてアニメーション */
}
#top-head .nav-wrap.open {
 display: -webkit-box;
 display: -ms-flexbox;
 display: -webkit-flex;
 display: flex;
 background: rgba(255, 255, 255, .6);
 -webkit-backdrop-filter: blur(8px);
 backdrop-filter: blur(8px)
}
#top-head .nav-wrap.close {
 display: none;
}
#top-head .nav-wrap.open .nav-wrap-inner {
 animation-name: fadeRightAnime;
 animation-duration: 0.5s;
 background: #fff;
 border-radius: 0 0 0 30vh;
 animation-fill-mode: forwards;
 opacity: 0;
 width: 75%;
 max-width: 400px;
 min-height: 600px;
 padding: 70px 30px 50px;
}
@keyframes fadeRightAnime {
 from {
  opacity: 0;
  transform: translateX(100px); /* 右から開始 */
 }
 to {
  opacity: 1;
  transform: translateX(0);
 }
}
/*--------固定化されたときのCSS-----------*/
#top-head.fixed {
 position: fixed;
 top: 0;
 margin-top: 0;
 transition: top 0.6s ease;
 -webkit-transition: top 0.6s ease;
 -moz-transition: top 0.6s ease;
}
.nav-wrap-inner .nav {
 font-size: 2rem;
 display: flex;
 flex-direction: column;
 flex-wrap: wrap;
 margin-bottom: 4rem;
}
.header {
 justify-content: space-between;
 -webkit-box-align: center;
 -ms-flex-align: center;
 align-items: center;
 width: 100%;
}
#top-head.open .nav-wrap {
 position: fixed;
 overflow-x: hidden;
 overflow-y: auto;
}
#top-head .nav-wrap-inner {
 display: flex;
 justify-content: center;
 -webkit-box-align: flex-end;
 -ms-flex-align: flex-end;
 align-items: flex-end;
 flex-direction: column;
 transition: all 1000ms;
}
.nav-button {
 z-index: 1001;
 position: absolute;
 right: 12px;
 top: 12px;
 width: 100px;
 height: 100px;
 background: url("../images/menu-bg.svg") no-repeat center top;
 background-size: auto 95%;
 display: flex;
 justify-content: center;
 align-items: center;
 cursor: pointer;
 transition: transform 1.2s cubic-bezier(0.3, 0.7, 0.4, 1);
}
.nav-button.active {
 background: url("../images/menu-close-bg.svg") no-repeat center top;
 background-size: auto 95%;
}
.nav-button:hover {
 animation: rotateBack 1.2s ease-in-out forwards; /* キーフレームアニメーションを適用 */
}
@keyframes rotateBack {
 0% {
  transform: rotate(0deg);
 }
 50% {
  transform: rotate(400deg); /* 少し回転し過ぎる */
 }
 100% {
  transform: rotate(360deg); /* 元に戻る */
 }
}
.nav-button::after {
 content: "MENU";
 font-size: 1.6rem;
 line-height: 1em;
 padding-top: 3px;
 white-space: nowrap;
 color: #fff;
}
.nav-button.active::after {
 content: "CLOSE";
}
#top-head:not(.fixed) .nav-button {
 display: none;
}
@media screen and (min-width: 1025px) {
 #top-head:not(.fixed) .nav-wrap {
  display: flex;
  padding-right: 30px;
  opacity: 0; /* 初期状態は非表示 */
  transition: opacity 1s ease-in-out 1s; /* 1秒かけてフェードイン */
 }
 #top-head:not(.fixed) .nav-wrap.fade-in.active {
  opacity: 1; /* activeクラスが付与されたら表示 */
 }
 #top-head:not(.fixed) .nav-wrap-inner {
  position: relative;
  top: 10vh;
  padding-top: 240px;
 }
 .nav-wrap-inner .nav {
  margin-bottom: 6vh;
  font-size: clamp(1.6rem, 1.5vw, 2.2rem);
 }
}
@media screen and (min-width: 1240px) {
 #top-head:not(.fixed) .nav-wrap {
  padding-right: 42px;
 }
}
@media screen and (min-width: 813px) {
 .nav-button {
  right: 20px;
  top: 20px;
 }
 #top-head .nav-wrap.open .nav-wrap-inner {
  padding-right: 50px;
 }
}
@media screen and (max-width: 812px) {
 .nav-button {
  width: 60px;
  height: 60px;
  right: 10px;
  top: 10px;
 }
 .nav-button::after {
  font-size: 1.1rem;
 }
}
.wave-text {
 display: inline-flex;
 padding: 14.5px 0;
}
.wave-text span {
 display: inline-block;
 transition: transform 0.3s ease-in-out;
}
.wave-text:hover span {
 animation-name: wave;
 animation-duration: .3s;
 animation-direction: alternate;
 animation-iteration-count: 2;
 transition: transform 0.3s ease-in-out;
}
.wave-text span:nth-child(even) {
 animation-delay: .1s;
}
.wave-text span:nth-child(odd) {
 animation-delay: .2s;
}
@keyframes wave {
 100% {
  transform: translate3d(0, -10px, 0);
 }
}