@charset "UTF-8";
body *{font-family: "Quicksand", sans-serif;}

#Container{
    width: 100%;
    max-width: 767px;
    margin: 0 auto;
}

/*ローディング*/
.loader {
  position: fixed;
  inset: 0;
  z-index: 9999; 
  background-color: #fff; 
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: center;
  transition: opacity 0.8s ease, visibility 0.8s ease;
}

.loader.is-loaded {
  opacity: 0;
  visibility: hidden;
}

.loader-picture{
    width: 100px;
    height: 100px;
    margin-bottom: 20px;
    animation: rotateAnimation 5s linear infinite;
}

@keyframes rotateAnimation {
  0% {
    transform: rotate(0deg);
  }
 
  40% {
    transform: rotate(-20deg);
  }
  
  50%, 100% {
    transform: rotate(360deg);
  }
}

.loader-text {
  color: #232323;
  font-size: 1.2rem;
  display: flex; 
  justify-content: center; 
}

.loader-text span {
  display: inline-block;
  opacity: 0;
  animation: waveLetter 1.5s infinite ease-in-out;
}

/*ローディングテキスト時差*/
.loader-text span:nth-child(1) { animation-delay: 0.1s; }
.loader-text span:nth-child(2) { animation-delay: 0.2s; }
.loader-text span:nth-child(3) { animation-delay: 0.3s; }
.loader-text span:nth-child(4) { animation-delay: 0.4s; }
.loader-text span:nth-child(5) { animation-delay: 0.5s; }
.loader-text span:nth-child(6) { animation-delay: 0.6s; }
.loader-text span:nth-child(7) { animation-delay: 0.7s; }
.loader-text span:nth-child(8) { animation-delay: 0.8s; }
.loader-text span:nth-child(9) { animation-delay: 0.9s; }
.loader-text span:nth-child(10) { animation-delay: 1.0s; }

@keyframes waveLetter {
  0%, 100% {
    opacity: 0.3;
    transform: translateY(0);
  }
  50% {
    opacity: 1;
    transform: translateY(-5px); /* 真ん中で少し上に浮き上がる */
  }
}

/*ローディング終了*/

.hamburger-menu{
    display: none;
}

main {
    width: 100%;
    position: relative;
}

.main_inner{
    padding: 20px ;
    padding-bottom: 0;
}

h1 img{margin-bottom: 5vh;}

figure{
    background-color: black;
    display:block;
    position: relative;
    overflow: hidden;
}

figure img{
    opacity: 0.9;
    display: block;
    transition: transform 0.3s ease;
/*追加*/
    width: 100%;
    height: 100%;
    object-fit: cover;
}

figure img:hover{
    transform: scale(1.05);
}

.text h2{
    font-size: clamp(40px, 6.19vw + 16.8px, 96px);
    color: #fff;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
    text-shadow: 0px 4px 4px #83838340;
}

.contents_card{
    width: 100%;
    /*max-width: 767px;*/
}

.card{
    border-radius: 8px;
    overflow: hidden;
    opacity: 0;
    transform: scale(0.9);
    transition: opacity 0.5s ease, transform 0.5s cubic-bezier(0.18, 0.89, 0.32, 1.28);
}

.card:nth-child(1) {
    transition-delay: 0s;
}
.card:nth-child(2) {
    transition-delay: 0.5s;
}
.card:nth-child(3) {
    transition-delay: 1s;
}

.contents_card.active .card {
    opacity: 1;
    transform: scale(1);
}

.grid-layout {
    display: grid;
    /*grid-template-columns: 1fr;*/
    grid-template-rows: auto;
    gap: 50px;
    list-style: none;
    padding: 0;
    margin: 0 auto;
    margin-bottom: 50px;
  }
.large-card {
    grid-row: auto; /* 縦つなぎを解除 */
  }

.card, .card a, .card figure {
    height: 100%;
}

footer{
    height: 50px;
    text-align: center;
    line-height: 50px;
}

footer p{
    font-size: 16px;
}

@media screen and (min-width: 768px){
    #Container{
        max-width: 1024px;
    }

    .main_inner{
        padding: 0;
        padding: 3vw 5vw 0;
    }

    h1 img{
        /*margin-bottom: 5vh;*/
        max-width: 335px;
    }
    /*li{
        max-width: 520px;
    }*/
    .grid-layout{
        grid-template-columns: 1fr 1fr;
        /*比率*/
        grid-template-rows: 1fr 1fr;
        gap:40px;
    }
    .large-card {
        grid-row: 1 / 3;
    }
    
    .text h2 {
        /* 中央寄せを解除 */
        top: auto;
        left: auto;
        transform: none; 

        /* 右下に配置 */
        right: 10px;  /* 右端からの距離（お好みで調整） */
        bottom: 15px; /* 下端からの距離（お好みで調整） */
        
        /* テキストを右揃えに（2行になった時用） */
        text-align: right;
    }
}

@media screen and (min-width: 1025px){
    #Container{
        max-width: 1920px;
    }
    
    .main_inner{
        /*max-width: 1080px;*/
        padding: 30px 10vw 0;
    }
}

@media screen and (min-width: 1120px){
    /*.main_inner{
        padding: 0;
        padding-top: 50px;
    }*/
    
    h1 img{
        margin-bottom: 34px;
    }
}