/* style.css */
*,*::before,*::after{
  box-sizing:border-box
}
html,body{
  height:100%
}
body{
  margin:0;
  line-height:1.6;
  font-family:system-ui,-apple-system,Segoe UI,Roboto,Inter,Helvetica,Arial,sans-serif;
  color:#fcfcfc;
  text-shadow: 1px 1px 1px #333333;
  background:#ffffff;
  overflow-x:hidden
}
a{
  text-decoration:none;
  color:inherit
}

/* 背景（空のイメージ） */
body::before{
content:"";
position:fixed;
inset:0;
background:url('../img/sky.jpg') top/cover no-repeat;
z-index:-2;
background-attachment: fixed;
}
 
body::after{
content:"";
position:fixed;
inset:0;
background:#13131366;
z-index:-1;
}

.sp{
  display: none;
}
@media screen and (max-width: 767px){
  .pc{
    display: none;  
  }
  .sp{
    display: block;
  }
}
.center{
  text-align: center;
}

.container{
  width:100%;
  max-width:84rem;
  margin:auto;
  padding:20px 24px 60px
}



header{
  position:fixed;
  width:100%;
  top:0;
  backdrop-filter:blur(8px);
  background:rgba(0,0,0,0.5);
  z-index:100
}
header .inner{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:16px 5%
}

@media screen and (max-width: 767px){
  header .inner{padding:16px 10px}
}

.logo{
  font-weight:bold;
  letter-spacing:0.1em
}
nav ul{
  display:flex;
  gap:20px;
  list-style:none;
  margin:0;
  padding:0
}

/* PCナビ */
nav ul {
  display: flex;
  gap: 20px;
  list-style: none;
  margin: 0;
  padding: 0;
}

/* ハンバーガー初期状態 */
.hamburger {
  display: none;
  flex-direction: column;
  justify-content: space-between;
  width: 28px;
  height: 18px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
  z-index: 200;
}
.hamburger span {
  display: block;
  height: 2px;
  width: 100%;
  background: #fff;
  border-radius: 2px;
  transition: 0.5s;
}

/* SP時のスタイル */
@media screen and (max-width: 767px) {
  nav {
    position: fixed;
    top: 0;
    right: -100%;
    width: 70%;
    height: 100vh;
    background: rgba(0,0,0,0.9);
    transition: right 0.7s ease;
    padding-top: 80px;
  }
  nav ul {
    flex-direction: column;
    align-items: center;
    gap: 30px;
  }
  .hamburger {
    display: flex;
  }
  nav.open {
    right: 0;
  }
  /* ハンバーガー開閉時のアニメーション */
  .hamburger.active span:nth-child(1) {
  width: 30px;
   transform: rotate(45deg) translateY(8px);
  }
  .hamburger.active span:nth-child(2) {
    opacity: 0;
  }
  .hamburger.active span:nth-child(3) {
    width: 30px;
    transform: rotate(-45deg) translateY(-8px);
  }
  .hamburger.active{
    height: 13px;
  }
  }


/* hero */
.hero{
  opacity: 0;
  transform:translateX(-100px);  /* 左からスライドイン */
  transition: opacity 0.5s ease;
  padding:120px 0 40px;
  text-align:center
  
}
.hero.active {
  opacity: 1;
  animation: slideInOvershoot 2.5s ease forwards;
}


@media screen and (max-width: 767px) {
.hero{
  padding:120px 0 5px;
  text-align:center
}  
}


/* 中央を少し通り過ぎてから戻る動き */
@keyframes slideInOvershoot {
  0% {
    transform: translateX(-100px);
  }
  70% {
    transform: translateX(100px); /* 中央を少し通り過ぎる */
  }
  100% {
    transform: translateX(0); /* 中央に戻る */
  }
}
/* tuiki */






.title{
  font-size:clamp(32px,6vw,64px);
  font-weight:800;
  margin-bottom:16px
}
.subtitle{
  font-size:clamp(18px,2vw,22px);
  margin:0 auto;
  opacity: 0.9;
}

/*タイトルのスライドイン*/
.slidein{
  animation: slidein 0.8s ;
}

@keyframes slidein{
  /*slideinの変化*/
  from {
    margin-left: -100%;
  }
  to {
    margin-left: 0; /* 右へ移動して見えるように */
  }
}
/* タイトル下のスライドイン */
.slidein_2{
  animation: slidein 1s ;
}

@keyframes slidein{
 
  from {
    margin-left: -100%;
  }
  to {
    margin-left: 0; 
  }
}


section{
  padding:80px 0
}
.section-title{
  font-size:clamp(18px,2vw,20px);
  letter-spacing:0.3em;
  opacity:0.9;
  margin-bottom:20px;
  text-align:center
}


/* Works 2カラム */
.grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:20px;
  padding: 50px;
  
}
@media screen and (max-width: 767px) {
  .grid{
  padding: 0px; 
}

}

/* projectページ */
.project_contents{
  display: flex;
  flex-direction: column;
  width: 70%;
  height: auto;
  margin: 0 auto;
}

.project_contents_lp{
  display: flex;
  flex-direction: column;
  width: 100%;
  height: auto;
  margin: 0 auto;
}
@media screen and (max-width: 767px) {
 .project_contents{
  width: 100%;
}
}


.card{
  background:rgba(0, 0, 0, 0.7);
  border:1px solid rgba(255,255,255,0.1);
  border-radius:16px;
  overflow:hidden;
  backdrop-filter:blur(6px);
  transition:transform .2s;
 
}
.card:hover{
  transform:translateY(-10px)
}
.card.scroll-up.is-show:hover {
  transform: translateY(-10px);
}



.thumb{
  aspect-ratio:8/5;
  display:flex;
  align-items:center;
  justify-content:center;
  /* background:rgba(0, 0, 0, 0.7) */
}
.thumb_pc{
  aspect-ratio:8/5;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction: column;
  padding-top: 20px;
  background:rgba(0, 0, 0, 0.7)
  
}

.thumb_sp{
  display: none;
}
@media(max-width:768px){
.thumb{
  aspect-ratio:auto;
}
.thumb img{
  margin: 5%;
}
.thumb_sp{
  aspect-ratio:auto;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction: column;
  padding-top: 15px;
  background:rgba(0, 0, 0, 0.7)
}
.thumb_pc{
 display: none;

}
}

.works_01{
  margin-top: 20px;
  height: 130%;
  border-radius: 14px;
}
.works_02{
  height: 70%;
}
.works_03{
  width: 90%;
  padding: 20px 0px;
}
.works_04{
  width: 50%;
  padding: 20px 0px;
}
@media(max-width:768px){
  .works_04{
  width: 80%;
  padding: 20px 0px 30px;
}
}

.card-body{
  padding:20px 10%
}
@media(max-width:768px){
.card-body{
  padding:16px 
 }
}

.project_card{
  background:rgba(0,0,0,0.6);
  border:1px solid rgba(255,255,255,0.1);
  border-radius:16px 16px 0 0;
  overflow:hidden;
  backdrop-filter:blur(6px);
  transition:transform .2s;
  z-index: 1; 
}
.project_card-body{
   padding: 26px 16px 16px 16px;
    background-color: #8d898957;
    position: relative;
    top: 0px;
    z-index: 0;
    border-radius: 0 0 16px 16px;
    line-height: 1.7;
}
.project_card-body h3{
  font-size: 18px;
  border-bottom: solid 1px #fcfcfc;
  line-height: 2;
}
.project_card-body table{
  margin-top: 5px;

}
.project_card-body th{
  font-weight: normal;
  width: 6rem;
}
.project_card-body td{
  padding: 0 5px; 
}
.card-body h3{
  font-size: 18px;
  margin:0 0 6px
}
.meta{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin-top:8px
}
.meta_about{
  display:flex;
  justify-content: center;
  gap:8px;
  margin-top:15px
}
@media(max-width:768px){
.meta_about{
 flex-wrap: wrap;
 }
}
.tag{
  font-size:14px;
  padding:3px 8px;
  border:1px solid rgba(255,255,255,0.2);
  border-radius:999px
}
.meta_about span.tag{
  font-size: 16px;
}
@media(max-width:768px){
  .grid{
    grid-template-columns:1fr
  }
}

/* ロードで表示*/
.load-fade {
  opacity: 0;
  visibility: hidden;
  transition: all 1s;
}
.load-fade.is-show {
  opacity: 1;
  visibility: visible;
}

/* 追記 スクロールで下から表示*/
.scroll-up {
  opacity: 0; 
  visibility: hidden;
  transform: translateY(50px);
  transition: all 1s;
}
.scroll-up.is-show {
  opacity: 1;
  visibility: visible;
  transform: translateY(0px);
}

.self_introduction {
  display:flex;
  justify-content: center;
  /* grid-template-columns:repeat(2,1fr);
  gap: 24px; */
  padding: 50px;
}
.self_introduction p{
  text-align: center;
  font-size: 18px;
}

.photo{
   aspect-ratio:8/5;
   width: 20rem;
}
.photo img{
  width: 60%;
  border-radius: 14px;
}

.skill h3{
  margin-top: 20px;
  margin-bottom: -8px;
}

/* contact */
#contact p{
  font-size: 18px;
    text-align: center;
}
#contact a:hover{
  opacity: 0.8;
}
.contact{
  display: flex;
  justify-content: center;
  flex-direction: column;
}
.contact a{
  text-align: center;
}
.contact a img{
  margin-top: 10px;
  width: 20px;
  filter: drop-shadow(1px 1px 1px #222222);
}

/* Footer */
footer{
  background:rgba(0,0,0,0.7);
  border-top:1px solid rgba(255,255,255,0.1);
  margin-top:50px;
  color:#ccc
}
.footer-inner{
  display:flex;
  justify-content:space-between;
  flex-wrap:wrap;
  padding:40px 4%
}
@media screen and (max-width: 767px){
  .footer-inner{
    padding:40px 10px
  }
}
.footer-left .logo{
  font-size:18px;
  margin-bottom:8px
}
.footer-left .desc{
  font-size:14px;
  color:#aaa;
  max-width:300px
}
.footer-right{
  display:flex;
  flex-direction:column;
  gap:16px;
  align-items:flex-end
}
.footer-nav{
  list-style:none;
  display:flex;
  gap:20px;
  margin:0;
  padding:0
}
.footer-nav a{
  opacity:.8
}
.footer-nav a:hover{
  opacity:1
}
.social a{
  margin-left:12px;opacity:.8
}
.social a:hover{
  opacity:1
}
.copyright{
  text-align:center;
  padding:20px 0;
  font-size:13px;
  /* border-top:1px solid rgba(255,255,255,0.1); */
  color:#aaaaaa
}

.re_top{
display: flex;
    justify-content: flex-end;
    width: 100%;
    max-width: 1120px;
    margin: auto;
    padding: 20px 0;
}
@media screen and (max-width: 767px){
  .re_top{ padding: 20px 10px;}  
}

.re_top a::before{
  content: url('../img/ue_icon.png');
  display: inline-block;
  width: 20px;
  height: 20px;
  position: relative;
  top: 2px;
  filter: drop-shadow(1px 1px 1px #222222);
}


