html, body {
  overflow-x: hidden;
}

/* ベースフォント・文字色 */
body{
  font-family: "Zen Kurenaido", sans-serif;
  font-weight: 400;
  font-style: normal;
  color: #262956;
}
.menu-header{
  font-family: "Cabin Sketch", sans-serif;
  font-weight: 700;
  font-style: normal;
  color: #555670;
  font-size: 2em;
}
.menu-list{
  font-family: "Cabin Sketch", sans-serif;
  font-weight: 400;
  font-style: normal;
  color: #4e4f69;
  font-size: 2.3em;
}
.hamburger-menu{
  font-size: 1.7rem;
}

/* 各項目の間の余白 */
section{
  padding: 50px 0;
}
@media screen and (max-width:768px){
  section{
    padding: 20px;
  }
}
/* アクセシビリティ　見た目には表示しないがスクリーンリーダーには読ませる */
.visually-hidden{
  position:absolute;
  left:-9999px;
}

/* リンク、ホバー */
a{
  transition: opacity 0.3s;
}
a:hover{
  opacity: 0.7;
}

/* ボタン */
.btn{
  display: inline-block;
  padding: 12px 32px;
}

/* レイアウト基本幅 */
.inner{
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 20px;
}


/* ハンバーガーメニュー */
.hamburger{
  width: 40px;
  height: 40px;
  background: none;
  border: none;
  cursor: pointer;
  position: fixed;
  top: 20px;
  right: 20px;
  z-index: 10000;
}
.hamburger span{
  display: block;
  width: 70%;
  height: 2px;
  background: #1d1032;
  position: absolute;
  left: 15%;
  border-radius: 3px;
  transition: transform 0.3s, opacity 0.3s;
}
.hamburger:hover span{
  opacity: 0.4;
}
@media (hover: none) {
  .hamburger:hover span{
    opacity: 1;
  }
  .menu-list a:hover{
    transform: none;
    opacity: 1;
  }
}

.hamburger span:nth-child(1){
  top: 10px;
}
.hamburger span:nth-child(2){
  top: 20px;
}
.hamburger span:nth-child(3){
  top: 30px;
}
.hamburger.active span:nth-child(1){
  transform: rotate(45deg) translate(7px,7px);
}
.hamburger.active span:nth-child(2){
  opacity: 0;
}
.hamburger.active span:nth-child(3){
  transform: rotate(-45deg) translate(7px,-7px);
}

.menu{
  position: fixed;
  inset: 0;
  opacity: 0;
  pointer-events: none;
  z-index: 100;
  transition: opacity .2s ease;

  overflow: hidden;
}

.menu.active{
  opacity: 1;
  pointer-events: auto;
}
.menu-bg{
  position: absolute;
  inset: 0;
  background: rgba(255,255,255,0.3);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  z-index: 0;
}
.menu-inner{
  position: relative;
  z-index: 1;
  transform: translateY(50px);
  opacity: 0;
  transition: .4s ease;

  max-width: 320px;
  margin: 0 auto;
  padding-top: 120px;
  text-align: center;
  min-height: 80vh;
}
.menu.active .menu-inner{
  transform: translateY(0);
  opacity: 1;
  transition: .8s cubic-bezier(.25,.8,.25,1);
  transition-delay: .6s;
}

.menu-list a{
  display: inline-block;
  transition: .3s ease;
}
.menu-list a:hover{
  transform: translateY(-4px) scale(1.05);
  opacity: .6;
}
.menu-list li{
  margin: 16px 0;
  text-align: center;
}

.menu-top{
  position: relative;
}

/* 左上アイコン */
.topicon{
  position: fixed;
  top: 20px;
  left: 20px;
  width: 100px;
  z-index: 5;
}

/* 右上の手（画面外から） */
.topgray{
  position: fixed;
  top: -3px;
  right: -20px;
  width: 100px;
  z-index: 5;
}

.menu-header{
  display:flex;
  justify-content:center;
  align-items:center;
  gap:10px;
  margin-bottom: 40px;
}
.menu-down{
  display:flex;
  flex-direction:column;
  align-items:center;
}
.paw{
  position: fixed;
}
.paw.left{
  left: -70px;
  top: 25%;
  width: 120px;
}
.paw.right{
  right: -40px;
  top: 30%;
  width: 100px;
}

.listpaw{
  position: fixed;
  width: 90px;
  z-index: 5;
}
.listpaw.left{
  left: -40px;
  top: 55%;
}
.listpaw.right{
  right: -40px;
  top: 60%;
}
.menu-cat{
  position:absolute;
  left:50%;
  transform:translateX(-50%);
  width:220px;
}


.paw,
.topgray,
.downwhite,
.downlightgray {
  max-width: 100vw;
}


/* gnav */
.header{
  position: relative;
}
/* gnav（SPは隠す） */
.gnav{
  position: fixed;
  top: 50%;
  left: 3%;
  transform: translateY(-50%);
  z-index: 10;
  display: none;
  font-weight: 500;
  letter-spacing: 0.1em;
}

.gnav ul{
  display: flex;
  flex-direction: column;
  gap: 50px;
}
.gnav a{
  writing-mode: vertical-rl; /* 縦書き */
  color: #0D2249;
  opacity: 1;
  display: inline-block;       /* transformを効かせるために必要 */
  transition: transform 0.3s ease;
}
.gnav a:hover{
  opacity: 1;
  transform: translateX(4px); /* 右に4pxジャンプ */
}
/* PCの時 */
@media screen and (min-width: 768px) {
.hamburger{
display: none;
}
.gnav{
display: block;
}
}

/* topに戻る */
#page-top{
  position: fixed;
  bottom: 50px;
  right: 50px;
  width: 35px;

  display: flex;
  flex-direction: column;
  align-items: center;

  text-decoration: none;

  opacity: 0;
  pointer-events: none;
  transition: 0.3s;
}
#page-top.active{
  opacity: 1;
  pointer-events: auto;
}
.top-text{
  font-size: 17px;
  margin-top: 2px;
}
.top-line{
  display: flex;
  width: 2px;
  height: 13px;
  background: #797979;
  margin-top: 4px;
  transition: 0.2s;
}
#page-top:hover .top-line{
  height: 18px;
}
.top-lines{
  display: flex;
  gap: 5px;
  margin-top: 2px;
}
/* sp用topに戻る */
@media screen and (max-width:768px){

  #page-top{
    transform: scale(0.7); /* 全体を70%に */
    right: 13px;          /* 右端に寄せる */
    bottom: 10px;
  }

}




/* works */
.works-list{
  padding: 50px 0;
}
.works{
  padding: 120px 0;
}
.works-list ul{
  display: flex;
  justify-content: center;
  gap: 80px;
  align-items: flex-start;
  max-width: 1000px;
  margin: 0 auto;
}
.works-list li{
  text-align: center;
}
.works-list img{
  width: 140px;
  height: auto;
  margin-bottom: 16px;
  transition: transform 0.3s ease;
}
.works-list p{
  font-size: 1.3rem;
  color: #434141;
  letter-spacing: 0.05em;
  transition: color 0.3s ease;
}
/* hover */
.works-list li:hover img{
  transform: translateY(-6px) scale(1.05);
}
.works-list li:hover p{
  color: #445776;
}

/* SPの時 */
@media screen and (max-width: 768px){
  .works{
    padding: 50px 0;
  }
  .works-list ul{
    display: flex;
    flex-wrap: wrap;
    gap: 15px;
    justify-content: space-between;
    max-width: 100%;
    padding: 0 10px;
  }
  .works-list li{
    width: 35%;
    margin-bottom: 20px;
  }
  .works-list p{
    font-size: 1.2em;
    transform: translateY(-18px);
  }
  .works h2{
    margin-bottom: 10px;
  }
  .tooltip{
    display: none;
  }
  .tooltip-img{
    display: none;
  }

  
/* contact */
  .contact-mail a {
    font-size: 1.4em;
  }


/* 問い合わせボタン */
  .contact-btn{
    padding: 10px 24px;
    font-size: 1.2rem;
    border-radius: 999px;
    letter-spacing: 0.05em;
    box-shadow:
      0 6px 0 rgba(106, 122, 147, 0.4),
      0 8px 18px rgba(0,0,0,0.18);
    background: rgba(111,127,153,0.85); /* 少し透け */
    backdrop-filter: blur(4px);
  }
  .contact-btn:active{
  transform: translateY(-11px);
  box-shadow:
    0 3px 0 rgba(106,122,147,0.35),
    0 5px 10px rgba(0,0,0,0.15);
  }

/* footer */
  footer small{
    font-size: 0.4em;
    top: 95%
  }
}

/* 見出し下線 */
.section-title{
  position:relative;
  padding-bottom:2px;
}
.section-title::after{     /* 最初は縮める */
  content:"";
  position:absolute;
  left:-10px;
  bottom:0;

  height:1.5px;
  opacity:0.8;
  background:#4e4f69;

  transform:scaleX(0);
  transform-origin:left;

  transition:transform 1.2s ease;
}
.about-title::after{
width:160px;
}
.skills-title::after{
width:170px;
}
.contact-title::after{
width:210px;
}
.section-title.show::after{     /* 表示で伸ばす */
  transform:scaleX(1);
}
.works-title::after{
display:none;
}
/* worksだけ飛行機雲 */
.cloud-line{
  width:220px;
  margin-top:10px;
}
.cloud-path{
  stroke-dasharray:300;
  stroke-dashoffset:300;
  transition:stroke-dashoffset 3.5s cubic-bezier(.3,.1,.3,1);
  opacity: 0.7;
}
/* 見出し表示で線描く */
.works-title.show .cloud-path{
  stroke-dashoffset:0;
}
/* 飛行機 */
.plane{
  opacity:0;
}
.works-title.show .plane{
  opacity:1;
}
@keyframes planeFloat{
  0%,100%{
    transform:translateY(0);
  }
  50%{
    transform:translateY(-3px);
  }
}
