@charset "utf=8";
/*
Theme Name: HOSHIKAGE
Author: hoshikage
Description: hoshikage official site
Version: 1.0
*/

*,
*::before,
*::after {
  box-sizing: border-box;
}

html, body {
  height: 100%;
  margin: 0;
  padding: 0;
}


body {
  display: table;
  width: 100%;
  font-family: "Zen Maru Gothic", sans-serif, sans-serif;
}

h1, h2, h3 {
  margin: 0;
}

img {
  vertical-align: bottom;
  margin: 0;
}

ol, ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

a {
  color: inherit;
  text-decoration: none;
  margin: 0;
  cursor: crosshair;
}

p {
  padding: 0;
  margin: 0;
}

.allcontents {
  overflow-wrap: break-word;
  word-wrap: break-word;
  
  color: #f5f5f5;
}
.allcontents::before{
  content: "";
  width: 100vw;
  height: 100dvh;
  background: url(img/bg.jpg) #597594 no-repeat center;
  background-size: cover;
  display: block;
  position: fixed;
  top: 0;
  left: 0;
  z-index: -3;
}

.loading {
  width: 100vw;
  height: 100dvh;
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  align-items: center;
  justify-content: center;
  animation: loading 6s forwards;
  background: #121B3A;
  background: radial-gradient(circle,rgba(18, 27, 58, 1) 72%, rgba(29, 47, 117, 1) 84%, rgba(21, 78, 177, 1) 93%, rgba(138, 170, 191, 1) 100%);
}

@keyframes loading {
  90% {
    opacity: 1;
  }

  100% {
    opacity: 0;
    pointer-events: none;
  }
}


@keyframes fadein{
  0%{
    opacity: 0;
  }
  80%{
    opacity: 0;
  }

  100%{
    opacity: 1;
  }
}

@keyframes loop {
  0%{
    transform: translateY(100%);
  }
  100%{
    transform: translateY(-100%);
  }
}

@keyframes rotate {
  0%{
    transform: rotate(0deg);
  }
  100%{
    transform: rotate(360deg);
  }
}
@keyframes fadeinout{
  0%{
    opacity: 0;
  }
  60%{
    opacity: 0;
  }

  90%{
    opacity: 1;
  }

  100%{
    opacity: 0;
  }
}
@keyframes onoff{

  99% {
    visibility: hidden; /* アニメーション中は表示状態を維持 */
  }
  100% {
    visibility:  visible; /* 完了時に非表示（カーソルも反応しない）*/
  }
}

.top {
  width: 100vw;
  height: 100dvh;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  position: relative;
  z-index: 0;
}


.top p {
  font-size: 24px;
}

.top p:not(:first-child) {
  margin-top: 2em;
}
.top .intro-1{
  animation: fadeinout 14s forwards;
}
.top .intro-2{
  animation: fadeinout 16s forwards;
}
.top .intro-3{
  animation: fadeinout 18s forwards;
}
.top-image {
  position: absolute;
  display: flex;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  animation: fadein 23s;
}

.container {
  position: fixed; /* Safari用 */
  display: flex;
  /* border: 1px dotted #f5f5f5; */
  justify-content: center;
  box-sizing: border-box;
  margin: auto;
  inset: 0;
  animation: fadein 8s forwards ease-in-out;
  z-index: 1;
  overflow: hidden;
  -ms-overflow-style: none;
  scrollbar-width: none;
}

.container::before{
    content: "";
    width: calc(100vw - 64px);
    height: calc(100dvh - 64px);
    background: url(img/scene-000.gif) no-repeat center;
    background-size: cover;
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: -8;
    border: 1px dotted #f5f5f5;
    /* box-shadow: #183a9f 4px 4px; */
}

nav {
  position: fixed;
  top: 16px;
  left: 0;
  right: 0;
  z-index: 2;
  animation: onoff 23s ease, fadein 23s ease;
}

nav ul {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  font-size: 16px;
  font-weight: 900;
  color: #f5f5f5;
  font-family: "futura-pt-bold", sans-serif;
}

nav p.button {
  background: #183a9f;
  display: flex;
  color: inherit;
  letter-spacing: 0.1em;
  border: 1px solid #f5f5f5;
  border-radius: 24px;
  padding: 6px 16px;
  box-shadow: #183a9f 4px 4px;
}

nav p.button:hover {
  display: inline-block;
  color: #f5f5f5;
  background: #8798c9;
  transform: translate(4px, 4px);
  text-shadow: none;
}



.menu-mask{
  /* background: #183a9fa2; */
  width: 100vw;
  background-color: rgba(24,58,159,0.95);
  position: -webkit-fixed; /* Safari用 */
  position: fixed;
  inset: 0;
  overflow: auto;
  display: none;
}

.menu-profile {
  /* position: relative; */
  width: 60vw;
  /* max-width: 700px; */
  padding: 20px;
  border-radius: 4px;
  position: -webkit-fixed; /* Safari用 */
    position: fixed;
    left: 50%;
    top: 50%;
    transform: translateX(-50%) translateY(-50%);
    margin: 0 auto;
  text-align: center;
  font-weight: 900;
  letter-spacing: 0.1em;
}
.profile-area{
  margin-bottom: 32px;
}
.profile-area img{
  border-radius: 50%;
  background-color: #183a9f;
}
.profile-area h2{
  margin: 24px 0;
}

.menu-open{
  cursor: crosshair;
}
.induction{
  margin-top: 24px;
  padding-bottom: 8px;
  display: inline-block;
  border-bottom: 1px dotted #f5f5f5;
}
.news{
  position: -webkit-fixed; /* Safari用 */
  position: fixed;
  will-change: transform;
  top: 16px;
  left: 16px;
  z-index: 2;
  background: #183a9f;
  letter-spacing: 0.1em;
  border: 1px solid #f5f5f5;
  border-radius: 24px;
  padding: 16px 8px 9px;
  writing-mode: vertical-lr;
  
  animation: fadein 23s;
}






.loop-area{
  overflow: hidden;
  position: relative;
}
.loop{
  animation: loop 10s linear infinite;
  width: 100%;
}
.rotate{
  animation: rotate 10s linear infinite;
  transform-origin: center;
}
          /* .cercle{
            position: fixed;
            top: 12px;
            right: 12px;
            z-index: 2;
            width: 72px;
            height: 72px;
            border: 1px solid #f5f5f5;
            border-radius: 50%;
            background: #183a9f;
          } */
.icon{
  position: -webkit-fixed; /* Safari用 */
  position: fixed;
  display: flex;
  justify-content: center;
  align-items: center;
  top: 8px;
  right: 8px;
  z-index: 3;
  width: 64px;
  height: 64px;
  background: #183a9f;
  letter-spacing: 0.1em;
  border: 1px solid #f5f5f5;
  border-radius: 50%;
  
  animation: fadein 23s;
}
.icon img{
  border-radius: 50%;
  width: 100%;
  max-height: 200px;
  object-fit: contain;  
}
.icon:hover{
  background: #f5f5f5;
}
.icon img:hover{
  animation: bible 0.45s infinite;
}

.post-body img{
  border-radius: 16px;
  padding: 8px 0;
}

.tab-list{
  width: 85%;
  display: flex;
  justify-content: center;
  padding: 0 20px;
  color: #f5f5f5;
  font-weight: 900;
  gap: 8px;
}
.tab-list li{
    width: 40px;
    height: 40px;
    margin: 8px 0 0;
    padding: 3px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-size: 14px;
  transition: all 0.3s ease;
  background: #183a9f;
}

.category-list{
  display: none;
}
.category-list.active{
  display: grid;
}

/* 文字が震えるアニメーション */
    @keyframes bible {
      0% {
        translate: 0 0;
        rotate: 0deg;
      }
      20% {
        translate: 2px -2px;
        rotate: 2deg;
      }
      40% {
        translate: -2px 2px;
        rotate: -2deg;
      }
      60% {
        translate: 2px -1px;
        rotate: 1deg;
      }
      80% {
        translate: -1px 1px;
        rotate: -1deg;
      }
      100% {
        translate: 0 0;
        rotate: 0deg;
      }
    }

.master{
  position: -webkit-fixed; /* Safari用 */
  position: fixed;
  top: 50%;
  right: 72px;
  transform: translateY(-50%);
  z-index: 99;
  height:80vh;
  width: 30%;
  background: #f5f5f5ee;
  border-radius: 24px;
  display: none;
  flex-direction: column;
  box-sizing: border-box;
}

  .master-contents{
    overflow: scroll;
    scrollbar-width: none;
  }

.master-close {
    position: -webkit-fixed; /* Safari用 */
    position: fixed;
    width: 30px;
    height: 30px;
    top: 12px;
    right: 12px;
    background: #f5f5f5;
    border: none;
    border-radius: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 100;
}

.master-close::before,
.master-close::after {
    content: '';
    position: absolute;
    width: 15px;
    height: 5px;
    background-color: #183a9f;
    border-radius: 5px;
    transform-origin: center;
}

.master-close::before {
    transform: rotate(45deg);
}

.master-close::after {
    transform: rotate(-45deg);
}

.blog{
   background: #183a9f;
    padding: 8px 16px;
    margin: 12px 16px;
    min-width: 20px;
    color: #f5f5f5;
    overflow: scroll;
    scrollbar-width: none;
    box-sizing: border-box;
}
.blog p{
  margin-top: 8px;
  line-height: 1.2em;
}
.blog h3{
  display:inline-block;
}
.blog time{
  background: #f5f5f5;
  border-radius: 8px;
  padding: 0 8px 1px;
  color: #183a9f;
  font-weight: 900;
  font-size: 13px;
  text-align: right;
  display: inline-block;
}

.footer{
  position: -webkit-fixed; /* Safari用 */
  position: fixed;
  bottom: 16px;
  left: 0;
  right: 0;
  z-index: 1;
  background: #183a9f;
  letter-spacing: 0.1em;
  border: 1px solid #f5f5f5;
  border-radius: 24px;
  padding: 8px 16px 9px;
  margin: auto;
  width: fit-content;
  animation: fadein 23s;
}


.main-contents{
  width: 100vw;
  height: 100dvh;
}
#contents-list{
  width: 100vw;
  background-color: rgba(24, 58, 159, 0.95);
  position: -webkit-fixed;
  position: fixed;
  inset: 0;
  overflow: auto;
  display: none;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  letter-spacing: 0.1em;
}
#contents-list h1{
  font-size: 18px;
  margin: 24px 0;
}
ul.contents-list{
  width: calc(100vw - 64px);
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  /* place-items: center; */
  /* gap: 8px; */
  
}

ul.contents-list li{
  display: flex;
  align-items: center;
  justify-content: center;
  width: auto;
  min-height: 60px;
  background: #183a9f;
  border: 1px dotted #183a9f;
  overflow: hidden;
}

ul.contents-list li img{
  width: 100%;
  object-fit: cover;
  object-position: center;
  filter: brightness(0.7);
  opacity: .9;
}

ul.contents-list li .open img:hover{
  transition: filter 0.3s ease; 
  filter:none; 
}

.mask{
  /* background: #183a9fa2; */
  width: 100vw;
  background-color: rgba(24,58,159,0.7);
  position: -webkit-fixed; /* Safari用 */
  position: fixed;
  inset: 0;
  overflow: auto;
  display: none;
}

.modal {
  /* position: relative; */
  width: 60vw;
  /* max-width: 700px; */
  padding: 20px;
  border-radius: 4px;
    position: -webkit-fixed; /* Safari用 */
    position: fixed;
    left: 50%;
    top: 50%;
    transform: translateX(-50%) translateY(-50%);
    margin: 0 auto;
  text-align: center;
  font-weight: 900;
  letter-spacing: 0.1em;
}

img#popup{
  width: auto;
  height: calc(90dvh - 100px);
}
.caption{
 font-size: 16px;
 color: #f5f5f5;
 display: block;
 background: #183a9f;
 padding: 0 0 5px;
}

.close,
.story-close{
  cursor: crosshair;
  width: fit-content;
  color: #183a9f;
  background: #f5f5f5;
  border-radius: 4px;
  text-align: center;
  padding: 7px 8px 8px;
  margin: 24px auto;
}


/* Media queries */
@media screen and (max-width: 600px) {
  .master {
    width: 90%;
    right: 0;
    left: 50%;
    transform: translateY(-50%) translateX(-50%);
  }
  nav ul{
    font-size: 0.8em;
  }
  .top p {
  font-size: 1.3em;
}
  .top-image{
    width: 65%;
    object-fit: contain;
  }
  #contents-list{
    justify-content: flex-start;
  }
  .modal{
    width: 90vw;
  }
  img#popup{
  width: 100%;
  height: auto;
}
}
