@charset "UTF-8"; 
/* ===================== 共通設定 ===================== */ 
html, body { 
  height: 100%; 
  margin: 0; 
  font-family: "Hiragino Mincho ProN", "Yu Mincho", serif; 
  color: white;
   background: linear-gradient(to bottom, #000000, #001a33); 
   overflow-x: hidden; 
   scroll-behavior: smooth; font-size: 16px; 
   line-height: 1.8; 
  } 
   
  /* =====================
   ローディング画面
===================== */
.loading-screen {
  position: fixed;
  inset: 0;
  background: radial-gradient(circle at center, #001a33 0%, #000 100%);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 999;
  transition: opacity 2s ease, visibility 2s ease;
}

.loading-logo {
  width: 30%;
  opacity: 0;
  animation: epicLogo 5s ease forwards;
  filter: drop-shadow(0 0 3vw rgba(255, 255, 255, 0.7));
}

@keyframes epicLogo {
  0% { opacity: 0; transform: scale(0.5) rotate(10deg); }
  30% { opacity: 1; transform: scale(1.4); filter: drop-shadow(0 0 8vw); }
  60% { transform: scale(1.1); filter: drop-shadow(0 0 10vw white); }
  100% { opacity: 1; transform: scale(1); filter: drop-shadow(0 0 5vw rgba(255, 255, 255, 0.6)); }
}

.fade-out { opacity: 0; visibility: hidden; }
  
  
  
      
/* ===================== 背景 ===================== */ 
      
.haikei { 
        position: fixed; 
        top: 0;
         left: 0; 
         width: 100vw; 
         height: 100vh; 
         object-fit: cover; 
         opacity: 0.35; 
         z-index: 1; 
         pointer-events: none; 
         animation: floatBg 30s linear infinite alternate;
         } 
         
         @keyframes floatBg { 
          from { transform: scale(1) translateY(0); } to { transform: scale(1.05) translateY(-2%); } }


/* =====================
   ヘッダー
===================== */
.header {
  text-align: center;
  margin-top: 5%;
  position: relative;
  z-index: 10;
}

.header-logo {
  width: 30%;
  margin: 3% auto;
  display: block;
}

/* =====================
   メニュー
===================== */
.menu-icon {
  font-size: 2rem;
  cursor: pointer;
  color: white;
  position: absolute;
  right: 5%;
  top: 2%;
  z-index: 200;
}

.menu {
  position: fixed;
  top: 7%;
  right: -40%;
  background: rgba(0, 0, 0, 0.9);
  padding: 3%;
  transition: right 0.5s ease;
  text-align: right;
  border-left: 1px solid rgba(255, 255, 255, 0.2);
}

.menu a {
  display: block;
  margin: 2vh 0;
  font-size: 1.2rem;
  color: white;
  text-decoration: none;
  transition: color 0.3s ease, text-shadow 0.3s ease;
}

.menu a:hover {
  color: gold;
  text-shadow: 0 0 1vw gold;
}

.menu.open { right: 0; }

/* =====================
   メインコンテンツ
===================== */
.main-content {
  position: relative;
  z-index: 5;
  opacity: 0;
  transition: opacity 2s ease;
}

.main-content.fade-in { opacity: 1; }


.video-wrapper {
  margin-top: 2rem; /* 上のテキストとの余白 */
  text-align: center;
}

.video-wrapper video {
  width: 80%;       /* 横幅80％に調整 */
  max-width: 900px; /* 最大幅指定 */
  border-radius: 1vw; 
  box-shadow: 0 0 2vw rgba(255,255,255,0.2);
  display: inline-block;
}

/* =====================
   セクション
===================== */
section {
  padding: 10% 5%;
  text-align: center;
}

h1 { font-size: 2rem; font-weight: lighter; line-height: 1.6; }
h2 { font-size: 2.5rem; margin-bottom: 2%; }
h3 { font-size: 1.4rem; margin-top: 1rem; }
p  { font-size: 1rem; margin-top: 0.5rem; }

.em { font-size: 2.5rem; color: white; }

section p {
  max-width: 800px;
  margin: 0 auto;
  text-align: justify;
  word-break: keep-all;
  white-space: normal;
  line-height: 1.9;
}


  

/* =====================
   performer
===================== */

   
.performer-container {
  display: flex;
  justify-content: center;
  align-items: flex-start; 
  gap: 4%;
  flex-wrap: wrap;
  margin-top: 5%;
}

.Performer  {
  flex: 1 1 25%;
  min-width: 260px;
  max-width: 360px;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  padding: 2rem 1rem 2.5rem;
  box-sizing: border-box;
  transition: transform 0.4s ease;
  min-height: 550px;
  background: none;
  box-shadow: none;
}

.Performer img {
  width: 100%;
  height: auto;
  border-radius: 0.8vw;
  margin-bottom: 1rem;
  box-shadow: 0 0 1vw rgba(255,255,255,0.15);
  transition: transform 0.5s ease, filter 0.5s ease, box-shadow 0.5s ease;
}

.Performer:hover img {
  transform: scale(1.05) translateY(-10px); 
  filter: brightness(1.2); 
  box-shadow: 0 0 3vw rgba(255,255,255,0.3); 
}



.Performer h3 {
  font-size: 1.4rem;
  margin: 0.8rem 0 1.2rem;
  color: #fff;
  line-height: 1.5;
  min-height: 3.5em; 
}

.Performer:hover h3 {
  color:white;
  text-shadow: 0 0 1vw white;
}


.Performer p {
  font-size:0.8rem;
  line-height: 1.6;
  color: #ddd;
  text-align: justify;
  white-space: normal;   
  word-break: break-word; 
  margin: 0;
  width: 90%;
  max-width: 320px;
  flex-grow: 1; 
}

.Performer .one {
  margin-top: 1.5rem; /
}

.Performer.es p.two {
  margin-top: -28px;
}




h4 {
  font-size: 1.2rem;
  margin-top: 5%;
}

.sense {
  width: 20%;
  margin-top: 2%;
}

.sense + p {
  font-size: 0.75rem;   
  text-align: center;    
  max-width: 400px;
  margin: 0.5rem auto 2rem auto;
  color: #ccc;
  line-height: 1.6;
}

/* =====================
   Guest
===================== */
.Guest {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.makidai {
  width: 10%;
  min-width: 200px;
  border-radius: 1vw;
  display: block;
  margin: 0 auto 2%;
}


/* Performer グループの細かい見栄え（既存と競合しないよう最小限） */
.Performer.fadein { /* 初期は opacity:0 だが JS で順次 show を付与 */ }

/* Optional: 画像だけ先に出したい時（微調整用） */
.fadein.img-first img { transform: translateY(6px); transition: transform 700ms ease; }
.fadein.img-first.show img { transform: translateY(0); }

/* レスポンシブにアニメーションをやわらげたいとき */
@media (max-width: 768px) {
  .animate-title .char { animation-duration: 480ms; }
  .fadein { transition-duration: 520ms; }
}





.About h2 {
  margin-bottom: 3%;
}


.date {
  font-size: 1.4rem; 
  margin-top: 2.5rem; 
  letter-spacing: 0.05em;
}

/* ===== アニメーション統一調整 ===== */

/* タイトル全体 */
.animate-title {
  display: inline-block;
  opacity: 0;
  line-height: 1.6;
  white-space: normal;
  word-break: keep-all;
  transition: opacity 0.8s ease;
}
.animate-title.show { opacity: 1; }

.animate-title .char {
  display: inline-block;
  opacity: 0;
  transform: translateY(40px) rotateX(90deg);
  font-size: 2rem;
  transition: transform 0.5s cubic-bezier(0.3, 1, 0.3, 1), opacity 0.5s ease;
}
.animate-title .char.show {
  opacity: 1;
  transform: translateY(0) rotateX(0deg);
}

/* 強調文字 */
.animate-title .em {
  font-size: 2.8rem;
  font-weight: bold;
  text-shadow: 0 0 10px rgba(255,255,255,0.6);
}

/* 日付フェード */
.date {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 1.2s ease, transform 1.2s ease;
}
.date.show {
  opacity: 1;
  transform: translateY(0);
}

/* 汎用フェード */
.fadein {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 1.2s ease, transform 1.2s ease;
}
.fadein.show {
  opacity: 1;
  transform: translateY(0);
}




/* ========== JS が動くまでのフラッシュ防止 ========== */
/* body.has-js が付かれるまでは要素を見せない（初期フラッシュを防止） */
.has-js .main-content { /* main は見せても良いが中身は個別に隠す */ }

/* main-content 内のセクション（About 除く）要素は最初非表示にする */
.main-content section:not(.About) * {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 1.0s ease, transform 1.0s ease;
  will-change: opacity, transform;
}

/* JS 実行前の追加クラス（observer が追加する前に隠す） */
.pre-hide { opacity: 0 !important; transform: translateY(30px) !important; }

/* show が付いたら出す（IntersectionObserver と互換） */
.show {
  opacity: 1 !important;
  transform: translateY(0) !important;
}

/* タイトルと date の元々の挙動は維持 */
.animate-title { opacity: 0; transition: opacity 0.8s ease; }
.animate-title.show { opacity: 1; }

/* ローディングの fade-out は既存を流用（念のためトランジション短め） */
.loading-screen.fade-out { opacity: 0; visibility: hidden; transition: opacity 0.7s ease, visibility 0.7s ease; }

/* 既存の .fadein.show ルールと .show を組み合わせるので互換性は保たれる */

/* 画像が最初にチラッと見えるのを防ぐ（img 要素対象） */
.main-content section:not(.About) img { opacity: 0; transform: translateY(20px); transition: opacity 0.9s ease, transform 0.9s ease; }

/* フォールバック：JS が無効なら既存スタイルで動くようにする（has-js が無ければ従来通り） */

.rights{
  font-size:14px;
  bottom: 0;
  text-align: center;
  width: 100%;
  margin: auto;
}





/* ===================== レスポンシブ共通 ===================== */
@media (max-width: 1200px) {
  .header-logo { width: 40%; }
  .video-wrapper video { width: 90%; }
  .performer-container { gap: 3%; }
  h1 { font-size:0.7rem;}
  .Performer { flex: 1 1 30%; min-width: 220px; max-width: 300px; min-height: 500px; }
}

@media (max-width: 992px) {
  html, body { font-size: 15px; line-height: 1.7; }
  section { padding: 8% 5%; }
  .menu { top: 8%; padding: 4%; }
  .menu-icon { font-size: 1.8rem; top: 2%; right: 4%; }
  .Performer { flex: 1 1 45%; min-width: 200px; max-width: 280px; }
}

@media (max-width: 768px) {
  html, body { font-size: 14px; line-height: 1.6; }
  .header-logo { width: 50%; }
  .menu { right: -100%; width: 70%; }
  .menu.open { right: 0; }
  .Performer { flex: 1 1 100%; max-width: 100%; min-width: auto; }
  .video-wrapper video { width: 100%; }
  section { padding: 6% 4%; }
  h1 { font-size: 1.6rem; }
  h2 { font-size: 2rem; }
  h3 { font-size: 1.2rem; }
  .animate-title .char { animation-duration: 350ms; 
  font-size: 23px;}
  .fadein { transition-duration: 400ms; }
}


/* ==== PC用（横3列） ==== */
.performer-container {
  display: flex;
  justify-content: center;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: 4%;
}

.Performer {
  flex: 1 1 25%;
  min-width: 260px;
  max-width: 360px;
}



/* ===================== スマホ専用調整 ===================== */
@media (max-width: 480px) {

  /* セクション全体 */
  section { 
    padding: 10% 11%;
  }

  /* Performer 全体設定 */
  .performer-container { 
    gap: 1.2rem; 
  }

  .Performer { 
    padding: 0.8rem 0.5rem 1rem; 
    min-height: 350px; 
  }

  /* 団体名と本文（全体） */
  .Performer h3 { 
    margin-bottom: 0.15rem; /* 全体的に詰める */
  }

  .Performer p { 
    margin-top: 0; 
    font-size: 0.95rem; 
    line-height: 1.5; 
  }

  /* === ES 専用調整 === */
  .Performer.es h3 {
    margin-bottom: 0; /* 団体名と説明文を密接に */
  }

  .Performer.es p.two {
    margin-top: -20px;
  }
  /* ESとsenseの間を広げる */
  .Performers h4 {
    margin-top: 4.2rem; /* senseとの距離をより広く */
    text-align: center;
  }

  .sense {
    margin-top: 0.5rem;
    width: 42%;
  }

  .sense + p {
    margin-top: 0.8rem;
    line-height: 1.5;
  }

  
  .guest img {
    width: 70%;           /* 画像を少し小さくする */
    max-width: 260px;     /* 上限を設定 */
    display: block;
    margin: 0 auto;
  }

 
  .animate-title {
    display: inline-block;

    overflow-wrap: normal;
    word-break: keep-all;
  }

  /* 見出しや小要素 */
  h1 { font-size: 1.4rem; margin: 1rem 0; }
  h2 { font-size: 1.4rem; margin: 0.9rem 0; }
  h3 { font-size: 0.95rem; margin: 0.6rem 0; }
  h4 { font-size: 0.9rem; margin: 0.4rem 0; }
}


@media (max-width: 480px) {

  /* タイトルの横幅を少し狭く中央寄せに */
  .animate-title {
    max-width:100%; /* ← 横幅を画面の85%に制限（お好みで80〜90%などに） */
    margin: 0 auto; /* 中央寄せ */
    text-align: center; /* 文字を中央揃え */
    line-height: 1.2;
    word-break: keep-all;
  }

  /* 改行制御（さっきのやつも含めて） */
  br.sp-br {
    display: inline;
  }
}

@media (min-width: 481px) {
  br.sp-br {
    display: none;
  }
}
