/** ##############################
 * Description of main.css
 * Created on : 2026/02/18
 * @version 1.00
 * @copyright Heaven-studio.com
 * @author Myazou3(Toshiyasu.Tkamoto)
 */
@charset "UTF-8";

/* =========================================
   1. ベーススタイル・共通設定
========================================= */
body, html { margin: 0; padding: 0; font-family: sans-serif; color: #333; }

/* スマホ・PC共通：全画面背景を疑似要素で固定（iOSの背景バグ対策） */
body::before { 
    content: ""; position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: url('https://heaven-studio.com/img/bg_image.png') no-repeat center center; background-size: cover; z-index: -1;
}

/* ローディング画面全体のスタイル */
#loader-wrapper {
    position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: #ffffff; /* 背景色 */ display: flex; justify-content: center; align-items: center; z-index: 9999; transition: opacity 0.5s ease; /* 消える時のふわっと感 */
}
/* ロゴのスタイルとアニメーション */
.loader-logo { width: 150px; /* サイズは適宜調整してください */ height: auto; animation: pulse 1.5s infinite ease-in-out; }
/* 鼓動のようなふわふわした動き */
@keyframes pulse {
    0% { transform: scale(0.95); opacity: 0.7; } 50% { transform: scale(1); opacity: 1; } 100% { transform: scale(0.95); opacity: 0.7; }
}
/* 読み込み完了後にクラスを付与して消す */
.loaded { opacity: 0; pointer-events: none; }
h1 { font-size: 1.5em; }
h2 { font-size: 1.5em; color: #ff3399; }
h3 { font-size: 1.3em; }
.bd_line { border-bottom: 2px #ff3399 solid; border-top: 2px #ff3399 solid; padding: 5px 0; }
/* コンテンツセクションの共通設定（背景は少し透けさせる） */
.content-section { box-sizing: border-box; border-bottom: 1px solid rgba(0, 0, 0, 0.1); }
#section1 { background: rgba(253, 253, 253, 0.85); }
#section2 { background: rgba(244, 244, 244, 0.85); }
#section3 { background: rgba(253, 253, 253, 0.85); }
#section4 { background: rgba(244, 244, 244, 0.85); }
#section5 { background: rgba(253, 253, 253, 0.85); }
#section6 { background: rgba(244, 244, 244, 0.85); }
.sec_img { display: block; width: 100%; border-top: 2px #999 solid; border-bottom: 2px #999 solid; border-radius: 5px; margin: 15px 0; overflow: hidden; }
.sec_img img { display:block; margin: 0; width: 100%; border-radius: 5px;}
.content_head { display: block; width: 100%; margin: 0; padding: 0 0 5px 0; }
/* メニューボタンの共通設定 */
.menu-item { cursor: pointer; text-align: center; background: rgba(255, 255, 255, 0.9); border-radius: 8px; transition: background 0.3s, color 0.3s; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); }
.menu-item.current { background: #333; color: #fff; }
.hs_color { color: #ff3399; }
.hsb_color { color: #ff3399; font-weight: bold; }
.hs_revcolor { color: #ff9933; }
.heaven_logo { display: block; margin: 0 auto; width: 100%; max-width: 350px; }
.t_center { text-align: center; }
.no_bottom { margin-bottom: 0px !important; }
.hs_font { font-family: Impact; font-stretch: extra-expanded; letter-spacing: 0.08em; }
.head_title_logo { display: block; }
.head_title_logo img { display: block; margin: 0 auto; width: 50%; max-width: 200px; min-width: 150px; }
/* 外枠のスタイル */
.point-container { max-width: 720px; min-width: 300px; margin: 20px auto; padding: 10px 5px; border: 2px solid #eee; border-radius: 8px; box-sizing: border-box; }
.point-container h3 { border-left: 5px #ff3399 solid; padding-left: 5px; margin: 0 0 5px 0; }
/* リストのスタイル */
.point-list { list-style: none; padding: 0; margin: 0; }
.point-item { display: flex; align-items: center; /* 画面幅に応じてフォントサイズを18px?24pxの間で動的に変更 */ font-size: clamp(1.125rem, 0.8rem + 1vw, 1.5rem); font-weight: bold; line-height: 1.5; color: #333; }
.small_font { font-size: clamp(0.8rem, 0.4rem + 1vw, 1rem); color: #ff3399 !important; }
.comp_flex { display: flex; align-items: center; justify-content: center; padding: 5px 0; align-items: stretch; }
.comp_flex_item { display: flex; width: 45%; padding: 10px 0; border: 1px #eee solid; border-radius: 5px; align-items: center; justify-content: center; }
.comp_flex_item_mini { display: flex; width: 8%; text-align: center; font-size: 20px; font-weight: bolder; align-items: center; justify-content: center; }
.livestar_wrap { display: block; width: 80%; }
.logo_livestar_fv { margin: 5px auto 0; width: 100%; max-width: 220px; }
.wrap_badge_avex { display: flex; align-items: center; justify-content: center; margin: 0; gap: 0.1em; }
.tag_badge_avex { font-size: 0.6em; color: #333; text-decoration: none; }
.arboria_500 { font-family: "arboria", sans-serif; font-weight: 500; font-style: normal; }
.badge_avex { width: fit-content; height: 1.3em; display: flex; align-items: center; justify-content: center; padding: 0 4px 0 6px; gap: 4px; border-radius: 4px; margin-block-start: 0; margin-block-end: 0; margin-inline-start: 0; margin-inline-end: 0; }
.radius_s { border-radius: 4px; overflow: hidden; }
.primary_avex { background-color: #004cac; }
.text_logo_avex { background-image: url("https://heaven-studio.com/img/text_logo_avex.png"); background-repeat: no-repeat; background-position: center; background-size: contain; width: 44px; height: inherit; }
.logo_avex_fv { background-image: url("https://heaven-studio.com/img/icon_avex_fv.png"); background-repeat: no-repeat; background-position: center; background-size: contain; width: 20px; height: inherit; }
.info_collabo_mess { display: block; width: 100%; text-align: center; font-size: 0.8em; }

/*   画像入替  */
.image-crossfade { position: relative; width: 100%; max-width: 1000px; margin: 0 auto; overflow: hidden; background-color: #fff; border-radius: 15px; aspect-ratio: 16 / 9; }
.image-crossfade img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; border-radius: 15px;
  -webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 5%, black 95%, transparent 100%), linear-gradient(to right, transparent 0%, black 20%, black 80%, transparent 100%);
  mask-image: linear-gradient(to bottom, transparent 0%, black 5%, black 95%, transparent 100%), linear-gradient(to right, transparent 0%, black 20%, black 80%, transparent 100%);
  -webkit-mask-composite: source-in; mask-composite: intersect;
  animation-duration: 12s; animation-iteration-count: infinite; animation-timing-function: ease-in-out;
}
.img1:not(.is-loading) { animation-name: crossfadeLoop1; }
.img2:not(.is-loading) { animation-name: crossfadeLoop2; }
@keyframes crossfadeLoop1 {
  0%   { opacity: 0; }
  10%  { opacity: 1; }
  40%  { opacity: 1; }
  60%  { opacity: 0; }
  100% { opacity: 0; }
}
@keyframes crossfadeLoop2 {
  0%   { opacity: 0; }
  40%  { opacity: 0; }
  60%  { opacity: 1; }
  90%  { opacity: 1; }
  100% { opacity: 0; } /* 100%で消え、同時に1枚目が0%から現れる */
}

/* POINTアイコン（赤背景に白文字） */
.point-item::before { content: "POINT"; background-color: #ff3399; color: #ffffff; font-size: 0.6em; padding: 2px 8px; margin-right: 12px; border-radius: 4px; font-weight: 900; letter-spacing: 0.05em; flex-shrink: 0; }
.slider-wrap { width: 100%; background: transparent; overflow: hidden; padding: 15px 0; }
.slider-items { display: flex; width: max-content; list-style: none; margin: 0; padding: 0; will-change: transform; }
.slider-items li { padding-right: 20px;box-sizing: border-box; }
.slider-items img { height: 60px; width: auto; display: block; padding: 0 10px; border-radius: 5px; box-shadow: 2px 4px 8px rgba(0, 0, 0, 0.3); }
/* =========================================
   2. PC用レイアウト (画面幅769px以上)
========================================= */
@media (min-width: 769px) { 
    body { display: flex; justify-content: center; align-items: center; height: 100vh; overflow: hidden; font-size: 16px; }
    .sp-logo, .hamburger, .sp-menu { display: none !important; }
    .pc-logo { position: absolute; top: 5px; left: 50%; transform: translateX(-50%); width: 250px; }
    .pc-layout { display: flex; align-items: center; justify-content: center; gap: 30px; width: calc(100vw - 10px); min-width: 700px; max-width: 1200px; }
    .pc-menu { flex: 1; } 
    .pc-menu .menu-item { padding: 15px 15px; margin: 15px 0; font-size: 15px; } 
    .pseudo-sp-screen { flex: 3; height: 85vh; background: rgba(255, 255, 255, 0.3); border: 12px solid #222; border-radius: 40px; overflow-y: scroll; position: relative; box-shadow: 0 20px 50px rgba(0, 0, 0, 0.6); } 
    .content-section { padding: 20px; min-height: 100%; } 
    .pseudo-sp-screen::-webkit-scrollbar { width: 5px;} 
    .pseudo-sp-screen::-webkit-scrollbar-track { background: rgba(244, 244, 244, 0.85); margin-top: 30px;margin-bottom: 30px; } 
    .pseudo-sp-screen::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.15); border-radius: 10px; } 
    .pseudo-sp-screen::-webkit-scrollbar-thumb:hover { background: rgba(0, 0, 0, 0.3); }
}

/* =========================================
   3. スマホ用レイアウト (画面幅768px以下)
========================================= */
@media (max-width: 768px) {
    /* PC専用要素を非表示 */ 
    .pc-logo, .pc-menu { display: none !important; }
    body { overflow-x: hidden;}
    .content-section { padding: 5vw 3vw; min-height: 100vh; }
    #section1 { padding-top: 70px; } 
    .content-section h2 { font-size: 6.5vw; margin-top: 0; margin-bottom: 4vw; } 
    .content-section p { font-size: 4.2vw; line-height: 1.7; }
    .sp-logo { position: absolute; top: 25px; left: 5px; width: 200px; } 
    /* -----------------------------------------    ハンバーガーボタン (サイズ・間隔すべて固定) ----------------------------------------- */ 
    .hamburger { position: fixed; top: 0; right: 0; width: 40px; height: 40px; padding: 10px; margin: 10px; box-sizing: content-box;z-index: 9999; cursor: pointer; display: flex; flex-direction: column; justify-content: center; gap: 10px; /* 線と線の間隔を10pxに固定 */ } 
    .hamburger span { display: block; width: 100%; height: 4px; /* 線の太さを固定 */ background: #fff; border-radius: 2px; transition: all 0.3s; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8); } /* 「×」へのアニメーション (間隔10px + 線の太さ4px = 14px移動) */ 
    .hamburger.active span:nth-child(1) { transform: translateY(14px) rotate(45deg); } 
    .hamburger.active span:nth-child(2) { opacity: 0; } 
    .hamburger.active span:nth-child(3) { transform: translateY(-14px) rotate(-45deg); } 
    /* -----------------------------------------    スマホ用 スライドインメニュー ----------------------------------------- */ 
    .sp-menu { position: fixed; top: 0; right: 0; width: 100%; height: 100vh; background: rgba(0, 0, 0, 0.9); z-index: 9998; display: flex; flex-direction: column; justify-content: center; align-items: center; opacity: 0; pointer-events: none; /* 非表示時の誤クリック防止 */ transition: opacity 0.5s; } 
    .sp-menu.active { opacity: 1; pointer-events: auto; }
    /* メニュー項目の右からのスライドインアニメーション */ 
    .sp-menu .menu-item { font-size: 5vw; padding: 4vw 10vw; margin: 3vw 0; width: 60vw; transform: translateX(100vw); opacity: 0; transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.5s; } 
    .sp-menu.active .menu-item { transform: translateX(0); opacity: 1; }
    /* メニュー単位で順番に表示させるための遅延 */ 
    .sp-menu.active .menu-item:nth-child(1) { transition-delay: 0.1s; } 
    .sp-menu.active .menu-item:nth-child(2) { transition-delay: 0.2s; } 
    .sp-menu.active .menu-item:nth-child(3) { transition-delay: 0.3s; } 
    .sp-menu.active .menu-item:nth-child(4) { transition-delay: 0.4s; } 
    .sp-menu.active .menu-item:nth-child(5) { transition-delay: 0.5s; } 
    .sp-menu.active .menu-item:nth-child(6) { transition-delay: 0.6s; }
    /* スマホ画面の枠設定解除 */ 
    .pseudo-sp-screen { width: 100%; height: auto; }
}