body{
    color: #fff;
}
section{
    position: relative;
}


/*******************/
  /* ローディング画面 */
 
.wrap_loading {
  z-index:0;
}
.loading-overlay {
            position: fixed;
            bottom: 0;
            left: 0;
            width: 100%;
            height: 100%;
            z-index: 100;
            pointer-events: none;
        }

.overlay__path {
            fill:#8293D8;
        }
.view--2 {
            width: 100%;
            opacity: 0;
            visibility: hidden;
            z-index: 0;
            transition: all 0.3s ease;
          position:relative
        }

.view--2.view--open {
            opacity: 1;
            visibility: visible;
        }

.loading {
            z-index: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            flex-direction: column;
          position:absolute;
          top:0;
          left:0;
            width: 100%;
          height: 100vh;
          background-color: #ceceef;
          position: fixed;
        }


.loading img {
    width: 120px;
    margin-bottom: 20px;
  }

  /* プログレスバー */
  .progress-wrapper {
    width:200px;
    height: 2px;
    background: #eee;
    border-radius: 3px;
    overflow: hidden;
    margin-bottom: 10px;
  }
  .progress-bar {
    height: 100%;
    width: 0;
    background: #738cff;
    transition: width 0.1s;
  }

  .percentage {
    font-size: 22px;
    font-weight: bold;
    color: #fff;
    font-family: serif;
  }
.percentage span{
      font-size: 14px;
      margin-left: 5px;
    }
/***************

▼kv

***************/
section.kv{
    width: 100%;
    min-height: 100vh;
    background-color: #bac2eb;
    overflow: hidden;
    background-image: url(../img/kv.webp);
    background-size: cover;
    background-position: center;
    position: relative;
    background-repeat: no-repeat;
}
section.kv p{
    position: absolute;
    writing-mode:vertical-rl;
    font-size: 3.5rem;
    letter-spacing: 3px;
    top:50%;
    transform: translateY(-50%);
    height: 100%;
    font-family: serif;
    font-weight: normal;
    text-shadow:
    0 0 5px  #949ad8,
    0 0 10px #949ad8,
    0 0 20px #4356bd,
    0 0 40px #4356bd;
    z-index: 5;
}
section.kv p:nth-child(1){
    right: 15%;
}
section.kv p:nth-child(2){
    left: 15%;
}
ruby rt{
  font-size: 1.3rem;
  margin-left: 2px;
}
section.kv:before{
    width: 95%;
    height: 95%;
    border:solid #FFF 1px;
    position: absolute;
    left: 50%;
    top:50%;
    z-index: 1;
    content:"";
    transform: translate(-50%, -50%);
    border-radius: 50px;
}
section.kv:after{
    width: 100%;
    height: 80%;
    position: absolute;
    left: 50%;
    top:50%;
    z-index: 0;
    content:"";
    transform: translate(-50%, -50%);
    background-image: url(../img/kv-window.webp);
    background-repeat: no-repeat;
    background-size: contain;
    background-position: center;
}
section.kv .moon{
    width: 110px;
    height:auto;
    position: absolute;
    left: 3%;
    top:30%;
    animation: fuwa ease-in-out infinite;
    animation-duration: 10s;
}
.wrap_kv_benzen span {
  position: absolute;
  bottom: 60px;
  width: 80px;
  height: 80px;
  background-size: contain;
  background-repeat: no-repeat;
  animation: rotate linear infinite;
  opacity: 1;
}

/* 各spanのスタート位置と画像をランダムに設定 */
.wrap_kv_benzen span:nth-child(1) {
  left: 4%; animation-duration: 10s;
  background-image: url(../img/benzen1.svg);
  
}
.wrap_kv_benzen span:nth-child(2) {
  left: 20%; bottom:50%;
  animation-duration: 14s;
  background-image: url(../img/benzen2.svg);
  width: 100px;
  height: 100px;
}
.wrap_kv_benzen span:nth-child(3) {
  right: 6%;bottom: 40%; animation-duration: 12s;
  background-image: url(../img/benzen3.svg);
  width: 120px;
  height: 120px;
}
@keyframes rotate {
  0% {
    transform:  rotate(0deg);
    
  }
  50% {
    transform:  rotate(180deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

@keyframes fuwa {
  0% {
    transform: translateY(0) ;
  }
  50% {
    transform: translateY(50px) ;
  }
  100% {
    transform: translateY(0px) ;
  }
}
@keyframes fuwareverse {
  0% {
    transform: translateY(0) ;
  }
  50% {
    transform: translateY(-50px) ;
  }
  100% {
    transform: translateY(0px) ;
  }
}
section.kv .wrap_tetora{
    width: 100%;
    height: 90%;
    position: absolute;
    left: 0%;
    top:10%;
    z-index: 1;
    content:"";
    background-image: url(../img/tetora.webp);
    background-repeat: no-repeat;
    background-size: contain;
    background-position: center;
}

section.kv .wrap_tetora .object{
    position: absolute;
    z-index: 1;
    content:"";
    background-image: url();
    background-repeat: no-repeat;
    background-size: contain;
    background-position: center;
}
section.kv .wrap_tetora .object:nth-child(1){
    width: 130px;
    height: 130px;
    right: 60%;
    top:17%;
    background-image: url(../img/kv-object1.webp);
    animation: fuwa ease-in-out infinite;
    animation-duration: 12s;
}

section.kv .wrap_tetora .object:nth-child(2){
    width: 110px;
    height: 130px;
    right: 35%;
    top:10%;
    background-image: url(../img/kv-object2.webp);
    animation: fuwareverse ease-in-out infinite;
    animation-duration: 15s;
}

section.kv .wrap_tetora .object:nth-child(3){
    width: 180px;
    height: 130px;
    right: 55%;
    bottom:10%;
    background-image: url(../img/kv-object3.webp);
    animation: fuwareverse ease-in-out infinite;
    animation-duration: 17s;
}

section.kv .wrap_tetora .object:nth-child(4){
    width: 130px;
    height: 130px;
    right: 35%;
    bottom:5%;
    background-image: url(../img/kv-object4.webp);
    animation: fuwa ease-in-out infinite;
    animation-duration: 12s;
    animation-delay: 2s;
}
section.kv .wrap_tetora .object:nth-child(5){
    width: 110px;
    height: 130px;
    right: 30%;
    bottom:34%;
    background-image: url(../img/kv-object5.webp);
    animation: fuwa ease-in-out infinite;
    animation-duration: 8s;
    animation-delay: .5s;
    
}

@media screen and (max-width: 768px){
  section.kv p{
    font-size: 3rem;
    text-shadow:
    0 0 5px  #949ad8,
    0 0 10px #949ad8,
    0 0 20px #4356bd,
    0 0 40px #4356bd,
    0 0 5px  #949ad8,
    0 0 10px #949ad8,
    0 0 20px #4356bd,
    0 0 40px #4356bd,
    0 0 5px  #949ad8,
    0 0 10px #949ad8,
    0 0 20px #4356bd,
    0 0 40px #4356bd;
    z-index: 5;
}
section.kv .wrap_tetora .object:nth-child(1){
    right: 80%;
    top:5%;
}

section.kv .wrap_tetora .object:nth-child(2){
    width: 90px;
    height: 110px;
    right: 0%;
    top:5%;
}

section.kv .wrap_tetora .object:nth-child(3){
    width: 150px;
    height: 110px;
    right: 55%;
    bottom:15%;
}

section.kv .wrap_tetora .object:nth-child(4){
    width: 100px;
    height: 100px;
    right: 0%;
    bottom:15%;
}
section.kv .wrap_tetora .object:nth-child(5){
    width: 90px;
    height: 110px;
    right: 10%;
    bottom:34%;
}
section.kv p:nth-child(1){
    right: 5%;
}
section.kv p:nth-child(2){
    left: 5%;
}
	
section.kv .moon{
    width: 90px;
    top:10%;
}
}
section.kv video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover; 
  pointer-events: none;
  mix-blend-mode: screen;
  z-index: 1;
  filter:brightness(150%)
}
@keyframes fadeIn {
  to { opacity: 1; }
}

@keyframes zoomIn {
    0% {
        transform: scale(1.1);
    }
    100% {
        transform: scale(1);
    }
}
/*kv-animation-step/*************************************/
/* 共通初期状態 */
.kv .wrap_tetora,
.kv p {
  opacity: 0;
}

.kv.active .wrap_tetora {
  animation: fadeIn 1s 0.5s forwards;
}

.kv.active p:nth-of-type(1),
.kv.active p:nth-of-type(2) {
  filter: blur(5px);
  animation: blurFade 1s forwards;
}

.kv.active p:nth-of-type(1) {
  animation-delay: 1s; 
}
.kv.active p:nth-of-type(2) {
  animation-delay: 1.5s; 
}

/* keyframes */
@keyframes fadeIn {
  0% { opacity: 0; transform: translateY(-20px); }
  100% { opacity: 1; transform: translateY(0px); }
}

@keyframes blurFade {
  0% { opacity: 0; filter: blur(10px); }
  100% { opacity: 1; filter: blur(0); }
}


/***************

▼karte

***************/
section.karte{
  background-color: #c9d2eb;
  background-image: linear-gradient(90deg, #e5e9f5 1px, transparent 1px), linear-gradient(#e5e9f5 1px, transparent 1px);
  background-position: 10px 10px;
  background-size: 21px 21px;
}
section.karte .wrap_object{
    background-image: url(../img/kv-object1.webp);
    width: clamp(100px, 25vw, 150px);
    height: clamp(100px, 25vw, 150px);
    left: 5%;
    bottom: 20%;
    
}

section.karte .wrap_object_star{
    background-image: url(../img/svg/obj-star.svg);
    width: clamp(100px, 25vw, 150px);
    height: clamp(200px, 25vw, 250px);
    right: 0%;
    top: -2%;
    position: absolute;
    z-index: 1;
    background-size: contain;
    background-repeat: no-repeat;
}
section.karte .wrap_object_star-left{
    background-image: url(../img/svg/obj-star.svg);
    width: clamp(100px, 25vw, 150px);
    height: clamp(100px, 25vw, 150px);
    left: 3%;
    bottom: 7%;
    position: absolute;
    z-index: 1;
    background-size: contain;
    background-repeat: no-repeat;
}
section.karte .wrap_ttl img{
  max-width: clamp(120px, 20vw, 150px);
}
section.karte .wrap_ttl h2{
  color:#314679
}
section.karte .content{
  background-color: #fff;
  margin: 0 auto;
  background-image: url(../img/index_karte-frame1.webp), url(../img/index_karte-frame2.webp), url(../img/index_karte-frame3.webp), url(../img/index_karte-frame4.webp);
  background-position: top left,top right, bottom right,bottom left;
  background-repeat: no-repeat;
  padding: 50px;
  position: relative;
}
section.karte .content .flex{
  display: flex; 
  gap:10px;
}
section.karte .content:after{
  content: "";
  border:solid 2px #8496DB;
  height: calc(100% - 5px);
  width: calc(100% - 5px);
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  
}
section.karte table {
      border-collapse: collapse;
      width: 100%;
      font-size: 14px;
      color: #000;
    }
section.karte th,
section.karte td {
      border: 1px solid #556a9d;
      padding: 8px 10px;
      vertical-align: middle;
}
section.karte th {
      background: #f9f9f9;
      text-align: center;
      width: 25%;
      font-weight: normal;
}
section.karte .ttl{
      background-color: #b7b2de;
      padding: 30px 10px;
      color: #fff;
      font-weight: bold;background-color:hsla(243,40%,77%,1);
background-image:
radial-gradient(at 0% 39%, hsla(283,40%,91%,1) 0px, transparent 50%),
radial-gradient(at 13% 83%, hsla(207,39%,93%,1) 0px, transparent 50%),
radial-gradient(at 64% 0%, hsla(271,63%,81%,1) 0px, transparent 50%),
radial-gradient(at 96% 35%, hsla(219,67%,79%,1) 0px, transparent 50%),
radial-gradient(at 98% 5%, hsla(241,67%,75%,1) 0px, transparent 50%);
    }
section.karte .ruby{
      font-size: 11px;
    }
section.karte .dot{
      border-bottom:dotted 2px #556a9d;
      padding: 0 10px;
    }
section.karte .name{
      padding: 20px 5px;
    }
section.karte td {
      background: #fff;
      text-align: left;
}
section.karte .gender {
      text-align: center;
}
section.karte .gender .active {
      position:relative;
    }
section.karte .gender .active:after{
      content:"";
      position: absolute;
      left: 50%;
      top: 50%;
      background-image: url(../img/index_karte-circle.webp);
      width: 30px;
      height: 30px;
      transform: translate(-50%, -50%);
      background-size: contain;
}
  
@media screen and (max-width:900px){

section.karte .content{
  background-size: 80px;
}
section.karte .content{
  flex-direction: column;
  gap:0px;
  padding: 30px;
}

section.karte th {
      width: 30%;
}
}

@media screen and (max-width: 768px){
  section.karte .wrap_object{
    left: 5%;
    bottom: 20%;
    left: 0%;
    bottom: 10%;
}
}
/***************

▼news

***************/

section.news{
    background-color: #b5c5f0;
    padding-bottom: 30%;   
    position: relative;
    z-index: 0;
}

section.news .wrap_news{
  margin-bottom: clamp(50px, 5vw, 6vw);
}

section.news .wrap_ttl h2{
  color:#fff
}
section.news .wrap_object{
    background-image: url(../img/object-cp.webp);
    width: clamp(90px, 22vw, 130px);
    height: clamp(90px, 22vw, 130px);
    right: 30%;
    top: -10%;
}

section.news .bg2{
    background-image: url(../img/kv-object5.webp);
    left: 5%;
    top:unset;
    bottom: 15%;
    width: clamp(90px, 25vw, 180px);
    height: clamp(90px, 25vw, 180px);
}
section.news:before{
    background-image: url(../img/bg-orora.webp);
    background-position: bottom;
    background-size: cover;
    background-repeat: no-repeat;
    position: relative;
    position: absolute;
    content: "";
    width: 100%;
    height: 100%;
    left: 0;
    top:0;
    z-index: -1;
    filter: brightness(1);
    opacity: .4;

}section.news:after{
    background-image: url(../img/bg-objectset.webp),url(../img/svg/wave.svg);
    background-position: center,bottom;
    background-size:contain, contain;
    background-repeat: no-repeat;
    position: absolute;
    background-repeat: no-repeat;
    content: "";
    width: 100%;
    height: 100%;
    left: 0;
    top:0;
    z-index: -1;
}
@media screen and (max-width: 768px){
  
section.news .wrap_object{
    right: 0%;
    top: -5%;
}

section.news .bg2{
    left: 0%;
    top:unset;
    bottom: 10%;
}
}
/****************/

/***************

▼gallery

***************/
section.gallery{
    z-index: 0;
    background-color: #edf4fe;
}
section.gallery .padding-inner{
  padding-top: 0;
}
section.gallery .wrap_gallery{
  display: flex;
  gap:20px;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  margin-bottom: clamp(50px, 5vw, 6vw);
}
section.gallery .wrap_gallery .box{
min-height: 100px;
  aspect-ratio: 3 / 2;
  display: block;
  width: calc(33% - 20px);
  position: relative;
}
section.gallery .wrap_gallery .box .wrap_img {
    width: 100%;
    height: 100%; 
    overflow: hidden; 
}

section.gallery .wrap_gallery .box .wrap_img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block; 
transition: ease .7s;
}

@media screen and (max-width: 768px){
    
section.gallery .wrap_gallery .box{
  width: 45%;
}

}
/***********/

/* 初期状態 */
.hamburger,
.nav-menu::before,
.nav-menu::after {
  opacity: 0;
  transform: translateY(-20px); /* ちょっと上から飛んでくる */
  transition: all 0.6s ease;
}

/* anim-ready クラスが付与されたら発火 */
body.anim-ready .hamburger,
body.anim-ready .nav-menu::before,
body.anim-ready .nav-menu::after {
  opacity: 1;
  transform: translateY(0);
}