@charset "UTF-8";

/* =========================================
   ベース設定
========================================= */
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote, th, td {
    margin: 0 auto;
    padding: 0;
}
ul, ol, dl {
    list-style: none;
}
*, *:before, *:after {
    box-sizing: inherit;
}
img {
    max-width: 100%;
    height: auto;
    vertical-align: top;
}
html, body {
    font-family: 'DotGothic16', sans-serif;
    background: url(../images/bg.jpg);
    background-size: contain;
    color: #000;
    overflow: hidden;
    width: 100%;    
    max-width: 100%;   
    position: relative; 
}

/* =========================================
   PC/SP 表示切り替えクラス
========================================= */
@media (min-width: 769px) {
  .invisible-pc { display: none !important; }
}
@media (max-width: 768px) {
  .invisible-sp { display: none !important; }
}

/* ========================================
   改行タグのPC/SP出し分け
   ======================================== */
/* スマホ（768px以下）の時は、PC用の改行を消す */
@media (max-width: 768px) {
    .br-pc { display: none; }
}

/* PC（769px以上）の時は、スマホ用の改行を消す */
@media (min-width: 769px) {
    .br-sp { display: none; }
}
@media (min-width: 769px) and (max-width: 1000px) {
  .br-tb { display: none; }
}





/* =========================================
   共通コンテナ・セクション
========================================= */
.container { 
  height: 100vh;
  height: 100dvh;
  overflow-y: scroll;
  overflow-x: hidden; 
  scroll-snap-type: y mandatory;
  position: relative;
  z-index: 1;
}
.section { 
    height: 100vh;
    height: 100dvh;
    display: flex;
    align-items: center; 
    justify-content: center; 
    scroll-snap-align: start;
    background-image: url(../images/bg_section101.webp);
    background-image: image-set(url(../images/bg_section101.webp) 1x, url(../images/2x/bg_section101@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/bg_section101.webp) 1x, url(../images/2x/bg_section101@2x.webp) 2x);
    background-size: cover;
    background-position: center;
    overflow: hidden;
}

.section:nth-child(1) { 
  background-image: url(../images/bg_section101.webp);
  background-image: image-set(url(../images/bg_section101.webp) 1x, url(../images/2x/bg_section101@2x.webp) 2x);
  background-image: -webkit-image-set(url(../images/bg_section101.webp) 1x, url(../images/2x/bg_section101@2x.webp) 2x);
    background-size: cover;
}
.section:nth-child(2) { 
    background: url(../images/bg_section201.webp);
    background-image: image-set(url(../images/bg_section201.webp) 1x, url(../images/2x/bg_section201@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/bg_section201.webp) 1x, url(../images/2x/bg_section201@2x.webp) 2x);
    background-size: cover;
}
.section:nth-child(3) { 
    background: url(../images/bg_section202.webp);
    background-image: image-set(url(../images/bg_section202.webp) 1x, url(../images/2x/bg_section202@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/bg_section202.webp) 1x, url(../images/2x/bg_section202@2x.webp) 2x);
    background-size: cover;
}
.section:nth-child(4) { 
    background: url(../images/bg_section201.webp);
    background-image: image-set(url(../images/bg_section201.webp) 1x, url(../images/2x/bg_section201@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/bg_section201.webp) 1x, url(../images/2x/bg_section201@2x.webp) 2x);
    background-size: cover;
}
.section:nth-child(5) { 
    background: url(../images/bg_section202.webp);
    background-image: image-set(url(../images/bg_section202.webp) 1x, url(../images/2x/bg_section202@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/bg_section202.webp) 1x, url(../images/2x/bg_section202@2x.webp) 2x);
    background-size: cover;
}
.section:nth-child(6) { 
    background: url(../images/bg_section201.webp);
    background-image: image-set(url(../images/bg_section201.webp) 1x, url(../images/2x/bg_section201@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/bg_section201.webp) 1x, url(../images/2x/bg_section201@2x.webp) 2x);
    background-size: cover;
}
.section:nth-child(7) { 
    background: url(../images/bg_section202.webp);
    background-image: image-set(url(../images/bg_section202.webp) 1x, url(../images/2x/bg_section202@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/bg_section202.webp) 1x, url(../images/2x/bg_section202@2x.webp) 2x);
    background-size: cover;
}
.section:nth-child(8) { 
    background: url(../images/bg_section201.webp);
    background-image: image-set(url(../images/bg_section201.webp) 1x, url(../images/2x/bg_section201@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/bg_section201.webp) 1x, url(../images/2x/bg_section201@2x.webp) 2x);
    background-size: cover;
}


  


/* =========================================
   CTAエリア
========================================= */
/*
.cta {
  position: fixed;
  left: 50%;
  bottom: calc(10px + 1dvh);
  z-index: 900;
  width: 850px; 
  transform: translateX(-50%) scale(1);
  transform-origin: bottom center; 
  background-image: url(../images/cta_bg.webp);
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  padding: 20px; 
  box-sizing: border-box;
}
*/


.cta {
  position: fixed;
  left: 50%;
  bottom: calc(10px + 1dvh);
  z-index: 900;
  background-image: none !important; 
  background-color: rgba(255, 255, 255, 0.45); 
  backdrop-filter: blur(5px);
  -webkit-backdrop-filter: blur(5px); 
  border: 2px solid #999; 
  border-radius: 14px; 
  width: auto;        
  max-width: 1000px;   
  height: auto;       
  padding: 15px 40px;   
  box-sizing: border-box;
}

.cta img {
  width: 100%;
  max-width: 200px;
  height: auto;
  transition: transform 0.2s ease; 
}
.cta img:hover {
  transform: scale(1.05);
  cursor: pointer;
}
.cta .btn03 img:hover {
  transform: none; 
  cursor: default; 
}
.cta button {
  background-color: transparent; 
  border: none;                  
  outline: none;                 
  padding: 0;                    
  appearance: none;              
  cursor: pointer;               
  width: 100%;                   
}
.cta .cta-capture {
  display: none;
  position: absolute;
  top: -60px;  
  left: -55px; 
  z-index: 10;  
}
.cta .cta-capture img {
    width: 140px; 
    height: auto;  
    max-width: none; 
}
.cta .cta-capture img:hover {
  transform: none; 
  cursor: default; 
}

.cta .games_btn_erea {
  position: relative;
  z-index: 100;
  top: 0px;
  display: flex;
  justify-content: center; 
  align-items: flex-start; 
  gap: 15px;
}
.cta .platform-label {
  font-family: "fot-udkakugo-large-pr6n", sans-serif;
  font-size: 18px; 
  font-weight: 100;
  color: #000; 
  white-space: nowrap; 
}
.cta .games_btn_erea li {
    margin: 0; 
}
.cta .games_btn_erea li.btn01 {
  width: auto; 
  margin: 0;
  margin-left: -25px;
  display: flex;
  align-items: center;
  gap: 15px;
}
.cta .games_btn_erea li.btn01-rule {
  font-family: "fot-udkakugo-large-pr6n", sans-serif;
  margin-top: -5px;
  display: flex;
  align-items: center;
  width: 180px;
  flex-shrink: 0;
}
.cta .ntg-rule-box {
  font-family: "fot-udkakugo-large-pr6n", sans-serif;
  margin-top: 0; 
  text-align: left;
  white-space: nowrap; 
  display: flex;
  flex-direction: column; 
  align-items: flex-start;
  gap: 2px; 
}
.cta .ntg-rule-box div {
  margin: 0; 
}
.cta .games_btn_erea li.btn01-rule .title_policy a { text-decoration: underline; }
.cta .games_btn_erea li.btn01-rule .ntg-rule-comname { font-size: 11px; color: #000; }
.cta .games_btn_erea li.btn01-rule label { font-size: 12px; color: #000; }
.cta .ntg-rule-box div, .cta .ntg-rule-box label {
  line-height: 1.2; 
}
.cta .ntg-rule-box input[type="checkbox"] {
  margin: 0 4px 0 0; 
  vertical-align: middle; 
}
.cta .games_btn_erea li.btn02 {
  font-family: "fot-udkakugo-large-pr6n", sans-serif;
  width: auto; 
  margin: 0;
  margin-right: 30px;
  display: flex;
  align-items: center;
}	
.cta .games_btn_erea li.btn02 label {
    font-size: 12px;
    /*
    color: #FFFFFF;
    */	
}
.cta .games_btn_erea li.btn01 button img,
.cta .games_btn_erea li.btn02 button img {
    height: 50px; 
    width: auto;  
    max-width: none; 
}

/* =========================================
   btn02：ダウンロードボタンとチェックボックスの横並び調整
========================================= */
/* formタグをフレックスボックスにして横並びにする */
.cta .games_btn_erea li.btn02 form {
    display: flex;
    align-items: center; /* ボタンの高さに合わせて、チェックボックスと文字を縦の中央に揃える */
}

/* チェックボックスの位置と余白調整 */
.cta .games_btn_erea li.btn02 input[type="checkbox"] {
  align-self: flex-start;  /* 👈 【追加】親の「中央揃え」を無視して上寄せにする */
  margin: 2px 5px 0 15px;  /* 👈 【変更】最初の 8px が上の余白。ボタンの真上すぎると不自然なので少し下げています */
  cursor: pointer;
}

/* ラベルの微調整 */
.cta .games_btn_erea li.btn02 label {
  align-self: flex-start;  /* 👈 【追加】テキストも一緒に上寄せにする */
  margin-top: 2px;         /* 👈 【追加】チェックボックスと同じ高さに揃えるための上余白 */
  font-size: 12px;
  color: #000;         
  cursor: pointer;
  white-space: nowrap; 
  line-height: 1.2;
}





.cta .games_btn_erea li.btn03 {
  width: auto; 
  margin: 0; 
  display: flex;
  align-items: center;
  gap: 15px;
  margin-top: 0px;
}
.cta .games_btn_erea li.btn03 img {
  width: 50px;
  height: 50px !important;
}
.cta .games_btn_erea li.btn04 {
    width: 203px;
}
.cta .games_btn_erea li.btn05 {
    width: 250px;
}
.cta .dl_capt {
    margin: -23px 0px 0px 475px;
    position: absolute;
    animation: float 3s ease-in-out infinite;
}

/* =========================================
   左側ナビゲーション
========================================= */
.left-nav {
 position: fixed; 
 left: 30px; 
 top: 50%;
 transform: translateY(-50%);
 display: flex; 
 flex-direction: column; 
 gap: 15px; 
 z-index: 10;
 align-items: flex-start;
}
.left-nav::before {
  display: none !important; 
}
.pv-btn + .nav-item .nav-icon-wrap::before {
  display: none !important;
}
.pv-btn + .nav-item::before {
  content: "";
  position: absolute;
  top: 50%; 
  left: 25px; 
  width: 2px;
  height: calc((50px + 15px) * 5); 
  background-color: rgba(255, 255, 255, 0.4);
  transform: translateX(-50%);
  z-index: -1; 
}



.pv-btn {
  width: 200px; 
  margin-left: 0px; 
  margin-bottom: 20px; 
  cursor: pointer;
  transition: transform 0.3s ease; 
  position: relative; 
  z-index: 1; 
  border: 2px solid #4084fb;
}

.pv-btn img {
  width: 100%; 
  height: auto;
  transform: translateX(-0px); 
  max-width: none; 
}
/*
.pv-btn:hover {
  transform: scale(1.1); 
  animation: pv-wiggle 0.3s ease-in-out 0.2s;
}

@keyframes pv-wiggle {
  0%   { transform: scale(1.1) rotate(0deg); }
  20%  { transform: scale(1.1) rotate(5deg); }   
  40%  { transform: scale(1.1) rotate(-5deg); }  
  60%  { transform: scale(1.1) rotate(4deg); }   
  80%  { transform: scale(1.1) rotate(-2deg); }  
  100% { transform: scale(1.1) rotate(0deg); }   
}
*/

/* 1. 再生ボタン本体（白い丸 ＋ 青い三角）を上に重ねる */
.pv-btn::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 48px;
  height: 48px;
  
  background-color: rgba(255, 255, 255, 0.5); 
  backdrop-filter: blur(4px); 
  -webkit-backdrop-filter: blur(4px);
  
  border-radius: 50%;
  border: 2px solid #4084fb;
  
  background-image: url('data:image/svg+xml;utf8,<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9 6v12l9-6z" fill="%234084fb"/></svg>');
  background-size: 105%; 
  background-position: 55% center; 
  background-repeat: no-repeat;
  
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2); 
  z-index: 5;
  transition: transform 0.2s ease;
}

/* 2. ホバー時の「波紋（パルス）」のエフェクトの準備 */
.pv-btn::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 48px;
  height: 48px;
  background-color: rgba(255, 255, 255, 0.5); 
  border-radius: 50%;
  z-index: 4; 
  
  animation: play-pulse 1.5s infinite ease-out;
}

/* 3. ホバーした瞬間の動き（ループ再生） */
.pv-btn:hover::before {
  /* 👇 変更：ホバーしたら波紋アニメーションを止める（消す） */
  animation: none;
  opacity: 0;
}
.pv-btn:hover::after {
  /* 👇 変更：ホバーしたら再生ボタン自体を少し拡大する */
  transform: translate(-50%, -50%) scale(1.15);
}

/* 4. 波紋アニメーションの設計図 */
@keyframes play-pulse {
  0% {
    transform: translate(-50%, -50%) scale(1);
    opacity: 0.8; /* 最初は濃い */
  }
  100% {
    transform: translate(-50%, -50%) scale(1.8); /* 1.8倍まで広がる */
    opacity: 0; /* 広がりながらフワッと消える */
  }
}

/* =========================================
   PVポップアップ（YouTube）
========================================= */
.pv-popup {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.85); /* 後ろを暗くする黒背景 */
  z-index: 9999; /* 一番手前に表示 */
  display: flex;
  justify-content: center;
  align-items: center;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}

/* JSでこのクラスが付与されたらフワッと表示 */
.pv-popup.is-show {
  opacity: 1;
  visibility: visible;
}

.pv-popup-inner {
  position: relative;
  width: 90%;
  max-width: 800px; /* PCでも大きくなりすぎないようにストッパー */
}

/* 閉じるボタン */
.pv-popup-close {
  position: absolute;
  top: -40px;
  right: -10px;
  color: #fff;
  font-size: 40px;
  cursor: pointer;
  line-height: 1;
  transition: transform 0.2s;
}
.pv-popup-close:hover {
  transform: scale(1.2);
}

/* YouTubeの16:9比率を保つ魔法 */
.pv-iframe-wrap {
  position: relative;
  width: 100%;
  padding-top: 56.25%; /* 16:9のアスペクト比 */
}
.pv-iframe-wrap iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}










.nav-item {
  position: relative; 
  z-index: 1; 
  display: flex;
  align-items: center;
  cursor: pointer;
  margin: 0;
}
.nav-icon-wrap {
 position: relative;
 width: 50px;  
 height: 50px; 
 transition: transform 0.3s ease; 
}
.icon-off, 
.icon-on {
 position: absolute;
 top: 0;
 left: 0;
 width: 100%;
 height: 100%;
 object-fit: contain;
 transition: opacity 0.3s ease; 
}
.icon-on {
 opacity: 0;
}
.nav-text {
  display: grid; 
  font-family: "fot-udkakugo-large-pr6n", sans-serif;
  font-weight: 600;
  font-style: normal;
  margin-left: 15px;
  color: #fff;
  font-size: 18px;
  letter-spacing: 0.15em; 
  white-space: nowrap;
  text-shadow: 1px 1px 2px rgba(0,0,0,0.5);
  transform: translateX(0); 
  transition: transform 0.3s ease; 
}
.nav-text .en,
.nav-text .ja {
  grid-area: 1 / 1; 
  transition: opacity 0.3s ease; 
}
.nav-text .en { opacity: 1; }
.nav-text .ja { opacity: 0; }

.nav-item.active .nav-icon-wrap,
.nav-item:hover .nav-icon-wrap {
  transform: scale(1.3);
}
.nav-item.active .icon-off,
.nav-item:hover .icon-off {
  opacity: 0;
}
.nav-item.active .icon-on,
.nav-item:hover .icon-on {
  opacity: 1;
}
.nav-item:hover .nav-text {
  transform: translateX(5px);
}
.nav-item:hover .en {
  opacity: 0;
}
.nav-item:hover .ja {
  opacity: 1;
}

/* =========================================
   ガイドラッパー
========================================= */
.guide-wrapper {
  position: fixed;
  right: 15px;
  top: 52%;
  transform: translateY(-50%);
  z-index: 10; 
  width: min(130px, 14vh);
  aspect-ratio: 165 / 940;
  cursor: pointer;
  animation: floating 3s ease-in-out infinite; 
  --glow-color: rgba(255, 105, 180, 0.9); 
}
.guide-penlight-img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: contain; 
  z-index: 1; 
}
.guide-text-img {
  position: absolute;
  top: 8%;
  left: 34%;
  transform: translateX(-50%);
  width: 35%;
  height: auto;
  z-index: 2; 
  transform-style: preserve-3d;
  animation: flip-horizontal 10s ease-in-out infinite;
}
.guide-wrapper::before {
  content: "";
  position: absolute;
  z-index: 0;
  top: 3%;       
  left: 17%;     
  width: 65%;    
  height: 68%;   
  border-radius: 20px 20px 0 0; 
  animation: penlight-glow-box 1.2s ease-in-out infinite alternate;
}
@keyframes penlight-glow-box {
  0% { box-shadow: 0 0 10px 2px var(--glow-color); }
  100% { box-shadow: 0 0 35px 12px var(--glow-color); }
}
@keyframes floating {
  0%, 100% { transform: translateY(-50%) translate(0, 0); } 
  50% { transform: translateY(-50%) translate(0, -30px); } 
}
@keyframes flip-horizontal {
  0%, 70% { transform: rotateY(0deg); }
  85% { transform: rotateY(180deg); }
  100% { transform: rotateY(360deg); }
}

/* =========================================
   ヘッダー / フッター
========================================= */
#dmm_ntgnavi {
    position: fixed;
    top: 0;          
    left: 0;         
    width: 100%;     
    z-index: 999;
    background: url(../images/bg_navimain.gif) center center repeat-x;
    border-bottom: 1px solid #ccc;
    border-top: 1px solid #ccc;
    font-size: 12px;
    font-family: 'メイリオ', 'Meiryo', 'Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'ＭＳ Ｐゴシック', Verdana, sans-serif;
    display: flex;
    justify-content: space-between;
}
#dmm_ntgnavi ul {
    list-style: none;
    margin: 2px 0;
    padding: 0;
    display: flex;
    width: 50%;
}
#dmm_ntgnavi ul li {
    margin: 0 6px 0 0;
    line-height: 15px;
}
#dmm_ntgnavi .navi_left li > a {
    display: block;
    padding: 0 3px 0 8px;
    text-decoration: none;
    border: 1px solid #eee;
    border-radius: 3px;
}
#dmm_ntgnavi .navi_left li > a:hover {
    background: #eee;
    border: 1px solid #666;
    border-radius: 3px;
}
#dmm_ntgnavi .navi_left li > a span {
    display: block;
    padding: 9px 10px 7px 28px;
    color: #333;
    font-weight: bold;
}
#dmm_ntgnavi .navi_left li.dmm_top img { margin: 8px 5px 8px 0 }
#dmm_ntgnavi .navi_left li.ntg_top { margin-left: 10px; }
#dmm_ntgnavi .navi_left li.ntg_top span {
    background: url(../images/bg_bt_olgtop.gif) 0 center no-repeat;
    font-size: min(2.9vw,12px);
}
#dmm_ntgnavi .navi_right {
    justify-content: flex-end;
    font-size: 10px;
}
#dmm_ntgnavi .navi_right li { margin: 0 10px 0 0; padding: 8px 5px; }
#dmm_ntgnavi .arrow { padding-left: 14px; background: url(../images/arrow_common.gif) no-repeat left center; }
#dmm_ntgnavi .tx-point { font-size: 16px; font-weight: bold; color: #ff4b4b !important; }
#dmm_ntgnavi a { color: inherit; text-decoration: none; }
#dmm_ntgnavi p { margin: 0; line-height: 2.6em; }
#dmm_ntgnavi .clear { clear: both; }

footer {
    position: fixed; 
    bottom: 0;       
    left: 0;         
    width: 100%;     
    z-index: 999;    
    background: #fff;
    text-align: center;
    padding: 0.32% 1.2%;
    font-size: min(3.1vw,16px);
    line-height: 2.3em;
    color: #777;
}
footer .copy {
    display: block;
    margin: 0px auto;
    font-family: メイリオ, Meiryo, "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", Osaka, "ＭＳ Ｐゴシック", "MS PGothic", Verdana, sans-serif;
    -webkit-text-size-adjust: 100%;
}

/* =========================================
   FV セクション
========================================= */
#fv { 
    position: relative;
    background-image: url(../images/2x/fv_bg@2x.webp);
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center;
    width: 100%;
    height: 100%;
    overflow: hidden;
}
.fv-bg-video {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100%;
  height: 100%;
  object-fit: cover; /* 画面サイズに合わせて動画をトリミングしてフル表示 */
  z-index: 0;        /* 一番後ろに配置 */
}






#fv h1 {
  position: absolute; 
  top: 5%;  
  left: 20%;  
  width: 25%; 
  max-width: 600px; 
  z-index: 10;
}
#fv h1 img {
  width: 100%;
  height: auto;
}
#fv .txt {
  position: absolute; 
  left: 50%;          
  bottom: 13%;        
  width: 60%;       
  max-width: 800px; 
  z-index: 11;
  transform: translateX(-50%);
  opacity: 0;                   
  animation-name: revealFromLeft; 
  animation-duration: 3.0s;     
  animation-timing-function: ease-out; 
  animation-delay: 1.15s;         
  animation-fill-mode: forwards;   
}
#fv .txt img {
  width: 100%;
  height: auto;
}
@keyframes revealFromLeft {
  from {
      opacity: 0; 
      clip-path: inset(0 100% 0 0); 
  }
  to {
      opacity: 1; 
      clip-path: inset(0 0 0 0);
  }
}

/* =========================================
   コンテンツセクション共通レイアウト（sec01〜sec05）
========================================= */
#sec01, #sec02, #sec03, #sec04, #sec05 { 
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;  
  justify-content: center; 
  align-items: center;   
}
#sec01 h2, #sec02 h2, #sec03 h2, #sec04 h2, #sec05 h2 {
  position: absolute;
  top: 7%;
  left: 50%;
  transform: translateX(-50%);
  z-index: 10;
  width: auto; 
  text-align: center;
}
#sec01 h2 img, #sec02 h2 img, #sec03 h2 img, #sec04 h2 img, #sec05 h2 img {
  height: 120px; 
  width: auto;  
  max-width: none;
}
#sec02 .campaign-inner,
#sec02 .chara-inner,
#sec03 .story-inner,
#sec04 .system-inner,
#sec05 .spec-inner {
  margin-top: -5%; 
}

/* =========================================
   1. キャンペーン内容（#sec01）
========================================= */
#sec01 .campaign {
  display: none;
}
#sec01 .campaign-inner {
  position: relative;
  width: min(100%, 1250px); 
  background-image: url(../images/sec_bg.webp);
  background-image: image-set(url(../images/sec_bg.webp) 1x, url(../images/2x/sec_bg@2x.webp) 2x);
  background-image: -webkit-image-set(url(../images/sec_bg.webp) 1x, url(../images/2x/sec_bg@2x.webp) 2x);
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  aspect-ratio: 16 / 9; 
  margin-top: -5%;
}
#sec01 .campaign-content {
  position: absolute;
  top: 52%; 
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  z-index: 10;
}
#sec01 .camp-txt1 {
  width: 28%; 
  z-index: 3;
  position: relative;
  opacity: 0;
  clip-path: inset(0 100% 0 0);
  transform: scale(1.05);
  transition: opacity 0.3s;
}
#sec01 .camp-txt1 img { width: 100%; height: auto; display: block; }
#sec01 .camp-txt2 {
  width: 65%;
  z-index: 2;
  position: relative;
  margin-top: 0%; 
  opacity: 0;
  clip-path: inset(0 100% 0 0);
  transform: scale(1.05);
  transition: opacity 0.3s;
}
#sec01 .camp-txt2 img { width: 100%; height: auto; display: block; }

.is-animated #sec01 .camp-txt1 {
  animation: labelPasteReveal 0.8s cubic-bezier(0.25, 1, 0.5, 1) 0.3s forwards;
}
.is-animated #sec01 .camp-txt2 {
  animation: labelPasteReveal 0.9s cubic-bezier(0.25, 1, 0.5, 1) 0.6s forwards;
}
@keyframes labelPasteReveal {
  0% {
    opacity: 0;
    clip-path: inset(0 100% 0 0); 
    transform: scale(1.1);         
    filter: brightness(2);         
  }
  60% {
    opacity: 1;
    filter: brightness(1.2);       
  }
  100% {
    opacity: 1;
    clip-path: inset(0 0 0 0);     
    transform: scale(1);           
    filter: brightness(1);         
  }
}

#sec01 .camp-panel {
  width: 80%;
  z-index: 1;
  position: relative;
  margin-top: 1.5%; 
  margin-bottom: 20px;
}
#sec01 .camp-panel img { 
  width: 100%; 
  height: auto; 
  display: block; 
  position: relative;
  z-index: 2; 
}



/* =========================================
矢印の完全リセットと位置調整
========================================= */
#sec01 .sec01-slider .slick-arrow {
position: absolute;
top: 43%;
transform: translateY(-50%);
z-index: 20;
width: clamp(35px, 5.5vw, 65px); /* 画面サイズに合わせて矢印も伸縮 */
background: transparent;
border: none;
padding: 0;
cursor: pointer;
outline: none;
}
/* 👇 Slickデフォルトの邪魔なアイコンを強制非表示にする魔法 */
#sec01 .sec01-slider .slick-prev::before,
#sec01 .sec01-slider .slick-next::before {
display: none !important; 
}
#sec01 .sec01-slider .slick-prev { left: -12%; }
#sec01 .sec01-slider .slick-next { right: -12%; }

/* =========================================
まるぽち（ドットナビゲーション）のデザイン
========================================= */
#sec01 .sec01-slider .slick-dots {
position: absolute;
bottom: -60px; 
left: 0;
width: 100%;
display: flex;
justify-content: center;
gap: 15px;     /* まるぽち同士の隙間 */
padding: 0;
margin: 0;
list-style: none;
z-index: 10;
}
#sec01 .sec01-slider .slick-dots li {
margin: 0;
}
/* まるぽち 1つ1つのボタン設定 */
#sec01 .sec01-slider .slick-dots li button {
font-size: 0;  /* デフォルトの数字を消す */
line-height: 0;
display: block;
width: 12px;   /* まるぽちの大きさ */
height: 12px;
padding: 0;
cursor: pointer;
color: transparent;
border: none;
border-radius: 50%; /* 完璧な丸にする */
background: rgba(255, 255, 255, 0.4); /* 非アクティブ時の色（半透明の白） */
transition: all 0.3s ease;
outline: none;
}
#sec01 .sec01-slider .slick-dots li button::before {
  display: none !important;
}
#sec01 .sec01-slider .slick-dots li.slick-active button {
background: #ffffff; /* アクティブ時の色を真っ白に！ */
transform: scale(1.2); /* 少しだけ大きくする */
}




/* =========================================
   2. 所属アイドル紹介（#sec02）
========================================= */



#sec02 .chara-inner {
  position: relative;
  width: min(100%, 1250px); 
  background-image: url(../images/sec_bg.webp);
  background-image: image-set(url(../images/sec_bg.webp) 1x, url(../images/2x/sec_bg@2x.webp) 2x);
  background-image: -webkit-image-set(url(../images/sec_bg.webp) 1x, url(../images/2x/sec_bg@2x.webp) 2x);
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  aspect-ratio: 16 / 9; 
  margin-top: -5%;
  container-type: inline-size;
}
#sec02 .chara-slider {
  width: 100%;
  height: 100%;
}
#sec02 .slide-content {
  display: flex;
  width: 100%;
  height: 100%;
  padding: 4% 2%; 
  justify-content: flex-start; 
  gap: 1%; 
  box-sizing: border-box;
  position: relative;
}
#sec02 .col-profile {
  width: 25%; 
  z-index: 2;
  margin-left: 5%; 
  margin-right: 2%; 
}
#sec02 .col-profile dl { margin: 0; }


/*
#sec02 .col-profile dt { margin-bottom: 2px; }
#sec02 .col-profile dt img {
  height: 35px; 
  width: auto;
  max-width: none;
  image-rendering: -webkit-optimize-contrast;
}
*/

#sec02 .col-profile dt,
#sec02 .prof-heading {
  display: flex;
  justify-content: space-between; 
  align-items: baseline;        
  background-color: #ffffff;
  padding: 1px 8px;
  width: 90%; 
  margin-left: 0;
  margin-right: auto;
  
  margin-bottom: 4px;
}

/* 日本語部分のデザイン */
#sec02 .col-profile dt .ja,
#sec02 .prof-heading .ja {
  font-family: "fot-udkakugo-large-pr6n", sans-serif;
  font-weight: bold;
  font-size: 16px;
  color: #40484f;
}

/* 英語部分のデザイン（少し細く・小さくしてスタイリッシュに） */
#sec02 .col-profile dt .en,
#sec02 .prof-heading .en {
  font-family: "fot-udkakugo-large-pr6n", sans-serif;
  font-weight: normal;
  font-size: 12px;
  color: #8d8d8d;
}




#sec02 .col-profile dd {
  font-family: "fot-udkakugo-large-pr6n", sans-serif;
  font-weight: bold;
  color: #4084fb; 
  font-size: clamp(11px, 1.25cqw, 16px);
  white-space: normal;      
  overflow: visible;        
  text-overflow: clip;
  line-height: 1.2;         
  letter-spacing: -0.03em;  
  word-break: break-all;    
  padding-left: 5px;
  margin-top: 0.8cqw;
  margin-bottom: 1.5cqw;
}
#sec02 .col-profile dd .ruby {
  font-size: 11px;
  margin-left: 5px;
}
#sec02 .col-center {
  width: 35%; 
  padding-left: 0; 
  margin-top: 0%; 
  margin-left: 0%; 
  z-index: 2;
}
#sec02 .prof-heading img {
  height: 35px;
  width: auto;
  margin-bottom: 8px;
  max-width: none;
  image-rendering: -webkit-optimize-contrast;
}
#sec02 .personality {
  font-family: "fot-udkakugo-large-pr6n", sans-serif;
  font-weight: bold;
  color: #4084fb;
  font-size: clamp(11px, 1.45cqw, 16px);
  white-space: normal;      
  overflow: visible;        
  text-overflow: clip;
  line-height: 1.5;         
  letter-spacing: -0.03em;  
  word-break: break-all;    
  padding-left: 5px;
  margin-top: 0.8cqw;
  margin-bottom: 1.5cqw;
}
#sec02 .movie-thumb { width: 100%; }
#sec02 .movie-thumb img { width: 100%; }

#sec02 .col-standee {
  position: absolute;
  width: 50%;   
  right: -12%;   
  top: -5%; 
  bottom: auto;
  z-index: 10;
  pointer-events: none; 
  max-height: 75vh;
  -webkit-mask-image: linear-gradient(to bottom, black 95%, transparent 98%);
  mask-image: linear-gradient(to bottom, black 95%, transparent 98%);
}
#sec02 .col-standee video {
  width: 100%;
  height: auto;
  display: block; 
}
#sec02 .chara-thumbnails {
  position: absolute;
  bottom: 5%;
  left: 28%; 
  transform: translateX(-50%);
  display: flex;
  gap: 15px;
  z-index: 15;
}
#sec02 .thumb-item {
  position: relative;
  width: 140px;
  cursor: pointer;
  transition: transform 0.2s;
}
#sec02 .thumb-item:hover { transform: translateY(-5px); }
#sec02 .thumb-off,
#sec02 .thumb-on {
  width: 100%;
  height: auto;
  display: block;
}
#sec02 .thumb-on {
  position: absolute;
  top: 0;
  left: 0;
  opacity: 0;
  transition: opacity 0.3s;
}
#sec02 .thumb-item.active .thumb-on,
#sec02 .thumb-item:hover .thumb-on {
  opacity: 1;
}

#sec02 .slick-arrow {
  position: absolute;
  top: 45%;
  transform: translateY(-50%);
  z-index: 20; 
  width: 65px; 
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  transition: transform 0.2s ease, opacity 0.2s;
}
#sec02 .slick-arrow:hover {
  transform: translateY(-50%) scale(1.1);
  opacity: 0.8;
}
#sec02 .slick-prev { left: -1%; }
#sec02 .slick-next { right: -1%; }
#sec02 .slick-prev::before,
#sec02 .slick-next::before {
  display: none !important;
}
#sec02 .slick-list {
  overflow: visible !important;
}

/* =========================================
   3. 東京マリオネットドールズとは？（#sec03）
========================================= */
#sec03 .story-inner {
  position: relative;
  width: min(100%, 1250px); 
  background-image: url(../images/sec_bg.webp);
  background-image: image-set(url(../images/sec_bg.webp) 1x, url(../images/2x/sec_bg@2x.webp) 2x);
  background-image: -webkit-image-set(url(../images/sec_bg.webp) 1x, url(../images/2x/sec_bg@2x.webp) 2x);
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  aspect-ratio: 16 / 9; 
  margin-top: -5%;
}
#sec03 .chara,
#sec03 .photo01,
#sec03 .photo02,
#sec03 .txtbg,
#sec03 .txt {
  opacity: 0;
  position: absolute; 
}
#sec03 .chara {
  left: -1%; 
  top: -10%; 
  height: 180%; 
  z-index: 5;
  -webkit-mask-image: linear-gradient(to bottom, black 85%, transparent 98%);
  mask-image: linear-gradient(to bottom, black 85%, transparent 98%);
}
#sec03 .chara img { height: 100%; width: auto; }
#sec03 .txt-area {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 75%; 
  z-index: 10;
}
#sec03 .txtbg {
  position: relative !important; 
  width: 100%;
}
#sec03 .txtbg img,
#sec03 .txt img {
  width: 95%;
  height: auto;
  display: block; 
}
#sec03 .txt {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%); 
  width: 95.5%; 
}
#sec03 .txt .catch {
  position: relative !important; 
  margin-top: -10%;
  width: 70%;
}
#sec03 .txt .catch img { width: 100%; height: auto; display: block; }
#sec03 .txt p.blktxt {
  font-family: "fot-udkakugo-large-pr6n", sans-serif;
  font-weight: bold;
  color: #444b52; 
  font-size: clamp(10px, 8cqw, 20px);
  line-height: 2.1;
  letter-spacing: 1.3px;
  text-align: center;
  padding-top: 25px;
}
#sec03 .txt p.blktxt .app { 
  background: linear-gradient(to right, #3b4ccd, #ab227a);
  color: #ffffff; 
  font-size: clamp(10px, 8cqw, 21px);
  line-height: 2.1;
  letter-spacing: 1.3px;
  text-align: center;
  margin-left: 3px;
  padding: 7px 9px 7px 11px;
  text-shadow: none;
}
#sec03 .txt p.blktxt2 {
  font-family: "fot-udkakugo-large-pr6n", sans-serif;
  font-weight: bold;
  color: #444b52; 
  font-size: clamp(10px, 8cqw, 20px);
  line-height: 2.1;
  letter-spacing: 1.3px;
  text-align: center;
  padding-top: 25px;
}
#sec03 .txt p.blktxt2 .app2 { 
  background: linear-gradient(to right, #3b4ccd, #ab227a);
  color: #ffffff; 
  font-size: clamp(10px, 8cqw, 21px);
  line-height: 2.1;
  letter-spacing: 1.3px;
  text-align: center;
  margin-left: 3px;
  padding: 7px 9px 7px 11px;
  text-shadow: none;
}
#sec03 .txt p.blktxt3 {
  font-family: "fot-udkakugo-large-pr6n", sans-serif;
  font-weight: bold;
  color: #444b52; 
  font-size: clamp(10px, 8cqw, 20px);
  line-height: 2.1;
  letter-spacing: 1.3px;
  text-align: center;
  padding-top: 25px;
}


#sec03 .photos {
  position: absolute;
  top: 0;
  right: 0;
  width: 100%;
  height: 100%;
  z-index: 2; 
}
#sec03 .photo01 {
  z-index: 10; 
  top: 8%;
  right: -14%; 
  transform: rotate(-10deg); 
  width: 37%; 
}
#sec03 .photo02 {
  z-index: 20; 
  top: 44%;
  right: -16%;
  transform: rotate(8deg); 
  width: 40%; 
}

@keyframes fadeSlideInChara {
  0%   { opacity: 0; transform: translateX(-100px); }
  100% { opacity: 1; transform: translateX(0); }
}
@keyframes fadeSwingInPhoto1 {
  0%   { opacity: 0; transform: rotate(-30deg) scale(1.2); }
  100% { opacity: 1; transform: rotate(0deg) scale(1); }
}
@keyframes fadeSwingInPhoto2 {
  0%   { opacity: 0; transform: rotate(30deg) scale(1.2); }
  100% { opacity: 1; transform: rotate(2deg) scale(1); }
}
@keyframes fadeInTxtBg {
  0%   { opacity: 0; transform: translateY(-30px); }
  100% { opacity: 1; transform: translateY(0); }
}
@keyframes fadeInTxt {
  0%   { opacity: 0; }
  100% { opacity: 1; }
}
.is-animated #sec03 .chara { animation: fadeSlideInChara 1.2s ease-out 0s forwards; }
.is-animated #sec03 .photo01 { animation: fadeSwingInPhoto1 0.6s ease-out 0.8s forwards; }
.is-animated #sec03 .photo02 { animation: fadeSwingInPhoto2 0.6s ease-out 1.2s forwards; }
.is-animated #sec03 .txtbg { animation: fadeInTxtBg 0.8s ease-out 2s forwards; }
.is-animated #sec03 .txt { animation: fadeInTxt 1.2s ease-out 2.5s forwards; }

/* =========================================
   4. システム紹介（#sec04）
========================================= */
#sec04 .system-inner {
  position: relative;
  width: min(100%, 1250px); 
  background-image: url(../images/sec_bg.webp);
  background-image: image-set(url(../images/sec_bg.webp) 1x, url(../images/2x/sec_bg@2x.webp) 2x);
  background-image: -webkit-image-set(url(../images/sec_bg.webp) 1x, url(../images/2x/sec_bg@2x.webp) 2x);
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  aspect-ratio: 16 / 9; 
  margin-top: -5%;
}
#sec04 .sys-slider {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 55%; 
  z-index: 5;
  opacity: 0;
}
#sec04 .sys-slider img { width: 100%; height: auto; }
#sec04 .sys-chara {
  position: absolute;
  bottom: -17%; 
  width: 35%; 
  z-index: 10;
  pointer-events: none; 
  -webkit-mask-image: linear-gradient(to bottom, black 90%, transparent 98%);
  mask-image: linear-gradient(to bottom, black 90%, transparent 98%);
  opacity: 0;
}
#sec04 .sys-chara.left { left: -10.5%; }
#sec04 .sys-chara.right { right: -9.7%; }
#sec04 .sys-chara img { width: 100%; height: auto; }

@keyframes expandOutLeft {
  0%   { opacity: 0; transform: translateX(50px); }
  100% { opacity: 1; transform: translateX(0); }
}
@keyframes expandOutRight {
  0%   { opacity: 0; transform: translateX(-50px); }
  100% { opacity: 1; transform: translateX(0); }
}
.is-animated #sec04 .sys-chara.left { animation: expandOutLeft 0.9s ease-out 0.3s forwards; }
.is-animated #sec04 .sys-chara.right { animation: expandOutRight 0.9s ease-out 0.3s forwards; }

#sec04 .slick-arrow {
  position: absolute;
  top: 47%;
  transform: translateY(-50%);
  z-index: 20; 
  width: 65px; 
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  transition: transform 0.2s ease, opacity 0.2s;
  opacity: 0;
}
#sec04 .slick-arrow:hover {
  transform: translateY(-50%) scale(1.1); 
  opacity: 0.8 !important;;
}
#sec04 .slick-arrow img { width: 100%; height: auto; }
#sec04 .slick-prev { left: -1%; }
#sec04 .slick-next { right: -1%; }
#sec04 .slick-prev::before,
#sec04 .slick-next::before {
  display: none !important;
}
@keyframes fadeInSlider {
  0%   { opacity: 0; }
  100% { opacity: 1; }
}
.is-animated #sec04 .sys-slider,
.is-animated #sec04 .slick-arrow {
  animation: fadeInSlider 0.8s ease-out 1.0s forwards;
}
#sec04 .sys-banner {
  position: absolute;
  top: 50%;
  right: -15%; 
  transform: translateY(-50%);
  width: 8%;
  z-index: 15;
}

/* =========================================
   5. 動作確認（#sec05）
========================================= */
#sec05 .spec-inner {
  position: relative;
  width: min(100%, 1250px); 
  background-image: url(../images/sec_bg.webp);
  background-image: image-set(url(../images/sec_bg.webp) 1x, url(../images/2x/sec_bg@2x.webp) 2x);
  background-image: -webkit-image-set(url(../images/sec_bg.webp) 1x, url(../images/2x/sec_bg@2x.webp) 2x);
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  aspect-ratio: 16 / 9; 
  margin-top: -5%;
  display: flex;
  flex-direction: column;
  justify-content: space-evenly; 
  align-items: center;
  padding: 3% 7%; 
  box-sizing: border-box;
}
#sec05 .spec-top {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2%; 
  width: 100%;
}
#sec05 .spec-logo { width: 32%; }
#sec05 .spec-logo img { width: 100%; height: auto; }
#sec05 .spec-text {
  width: 67%;
  font-family: "fot-udkakugo-large-pr6n", sans-serif;
  font-size: 14px;
  line-height: 2.0;
  font-weight: 400;
  text-align: left;
}
#sec05 .spec-text dl {
  display: flex;
  flex-wrap: wrap; 
  margin: 0;
}
#sec05 .spec-text dt {
  width: 35%; 
  text-align: right; 
  padding-right: 5px;
}
#sec05 .spec-text dd {
  width: 65%; 
  margin: 0;
}
#sec05 .spec-mid {
  width: 90%;
  text-align: center;
  font-family: "fot-udkakugo-large-pr6n", sans-serif;
  font-size: 13px;
  font-weight: 400;
  padding: 2.5% 0;
}
#sec05 .spec-mid a {
  color: #333;
  text-decoration: none;
  margin: 0 10px;
  transition: opacity 0.2s;
}
#sec05 .spec-mid a:hover { opacity: 0.6; }


#sec05 .mailattention {
  font-family: "fot-udkakugo-large-pr6n", sans-serif;
  font-size: clamp(10px, 8cqw, 12px);
  color: #333;
  padding-top: 5px;
}



#sec05 .spec-bottom {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 60px; 
  width: 100%;
  padding-top: 1%;
}
#sec05 .btn-sns {
  display: block;
  width: auto; 
  transition: transform 0.2s;
}
#sec05 .btn-sns:hover { transform: scale(1.05); }
#sec05 .btn-sns img {
  height: 90px; 
  width: auto;  
}
#sec05 .sns-border { display: none; }


/* =========================================
   ▼ レスポンシブ用メディアクエリ群 ▼
========================================= */

/* ▼ 1501px 〜 1750px ▼ */
@media (min-width: 1501px) and (max-width: 1750px) {
  #sec01 .campaign-inner, 
  #sec02 .chara-inner, 
  #sec03 .story-inner, 
  #sec04 .system-inner, 
  #sec05 .spec-inner {
    /* 👇 画面の横幅72% か、高さ(100dvh)から逆算したサイズの小さい方をとる！ */
    width: min(72vw, calc((100dvh - 180px) * 16 / 9)); 
    max-width: none;
  }
  .left-nav {
    left: 20px;
    transform: translateY(-50%) scale(0.9);
    transform-origin: left center;
  }
  #sec02 .slick-prev, #sec04 .slick-prev { left: -3%; }
  #sec02 .slick-next, #sec04 .slick-next { right: -3%; }
}

/* ▼ 1500px 以下、または 縦幅850px以下 ▼ */
@media (max-width: 1500px), (max-height: 850px) {
  #sec01 h2, #sec02 h2, #sec03 h2, #sec04 h2, #sec05 h2 { width: auto; }
  #sec01 h2 img, #sec02 h2 img, #sec03 h2 img, #sec04 h2 img, #sec05 h2 img { height: 7.2vw; }
  
  /* 👇 迷子になっていた sec01 も復活させて指定 */
  #sec01 .campaign-inner,
  #sec02 .chara-inner, 
  #sec03 .story-inner, 
  #sec04 .system-inner, 
  #sec05 .spec-inner {
    /* 👇 画面の横幅65% か、高さ(100dvh)から逆算したサイズの小さい方をとる！ */
    width: min(65vw, calc((100dvh - 180px) * 16 / 9)); 
    max-width: none; 
  }
  #sec02 .slick-prev, #sec04 .slick-prev { left: calc(-2% - 25px); }
  #sec02 .slick-next, #sec04 .slick-next { right: calc(-2% - 25px); }
  
  /* 👇 復元：横幅と縦幅どちらが狭くなっても連動して自動で縮む魔法 */
  #sec01 .sec01-slider .slick-arrow,
  #sec02 .slick-arrow, 
  #sec04 .slick-arrow { 
    width: min(6.2vw, 7.5vh); 
  }

  .left-nav {
    left: 10px; 
    transform: translateY(-50%) scale(0.8); 
    transform-origin: left center; 
  }

  #sec02 .slide-content { padding: 2.5% 2%; }
  #sec02 .col-profile dt { margin-bottom: 0; }
  #sec02 .col-profile dt img { height: 1.8vw; }

  #sec02 .col-profile dt .ja, #sec02 .prof-heading .ja { font-size: 1.0vw; }
  #sec02 .col-profile dt .en, #sec02 .prof-heading .en { font-size: 0.85vw; }


  #sec02 .col-profile dd { margin-bottom: 1vw; padding-left: 5px; }
  #sec02 .col-profile dd .ruby { font-size: 0.8vw; margin-left: 0.3vw; }
  #sec02 .prof-heading img { height: 1.8vw; }
  #sec02 .personality { /*font-size: 1.3vw;*/ padding-left: 10px; margin-bottom: 5px; }
  #sec02 .chara-thumbnails { width: auto; gap: 1.5cqw; bottom: 5%; left: 32%; }
  #sec02 .thumb-item { width: 11.5cqw; }
  #sec02 .slick-arrow { width: 4.6vw; }
  
  #sec03 .txt p.blktxt { font-size: clamp(10px, 8cqw, 16px); line-height: 1.8; padding-top: 20px; }
  #sec03 .txt p.blktxt .app { font-size: clamp(10px, 8cqw, 16px); }

  #sec05 .spec-text { font-size: clamp(10px, 8cqw, 12px); }
  #sec05 .spec-mid { font-size: clamp(10px, 8cqw, 15px); padding: 2vw 0; }
  #sec05 .btn-sns img { height: 3.8vw; }
  #sec05 .spec-bottom { gap: 4.5vw; }
}

/* ▼ 1350px 以下 ▼ */
@media (max-width: 1350px) {
  .left-nav {
    left: 10px; 
    transform: translateY(-50%) scale(0.8); 
    transform-origin: left center; 
  }
}

/* ▼ 1000px 以下 (タブレット〜スマホ共通の安全エリア) ▼ */
@media (max-width: 1000px) {
  #sec01, #sec02, #sec03, #sec04, #sec05 {
    box-sizing: border-box;
    padding-top: max(12vh, 60px);
    padding-bottom: max(12vh, 120px); 
    display: flex;
    justify-content: center;
    align-items: center;
  }
  #sec01 .campaign-inner, 
  #sec02 .chara-inner, 
  #sec03 .story-inner, 
  #sec04 .system-inner, 
  #sec05 .spec-inner {
    width: 65vw; 
    max-width: 100vw;
    
    height: calc(100dvh - 180px);
    max-height: 100%;

    aspect-ratio: auto;
    background-image: url(../images/sp/sec_bg.webp);
    background-image: image-set(url(../images/sec_bg.webp) 1x, url(../images/2x/sec_bg@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/sec_bg.webp) 1x, url(../images/2x/sec_bg@2x.webp) 2x);
    background-size: 95% 95%;
    background-repeat: no-repeat;
    background-position: center;
    margin: 0 auto;
    position: relative;
    padding: 0;

    display: flex;
    justify-content: center;
    align-items: center;
  }
  #sec01 .campaign-content {
    position: relative;
    top: 1%;
    left: auto;
    transform: none;

    width: min(90%, calc((100dvh - 200px) * 9 / 15)); 
    aspect-ratio: 9 / 15; /* 中身のレイアウト比率はここでガッチリ守る */
    
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
  }
  #sec01 .camp-txt1 { width: 50%; margin: 0; }
  #sec01 .camp-txt2 { width: 70%; margin-top: 1%; }
  #sec01 .camp-panel { width: 85%; margin-top: 4%; background-color: }
  
  #sec01 .camp-txt1 img,
  #sec01 .camp-txt2 img,
  #sec01 .camp-panel img {
    width: 100%;
    height: auto;
    display: block;
  }

  #sec02 .chara-slider {
    position: relative;
    z-index: 5;
    margin: 0 auto;
    /* sec01と同じ魔法の数式：枠の90%か、高さから逆算した比率の小さい方 */
    width: 100%;       /* innerの横幅（95vw）をフルに活用 */
    height: 100%;      /* 高さはinnerのcalcに従う */
    aspect-ratio: auto;
    
    /* スライダーの中身を縦いっぱいに使うためのおまじない */
    display: flex;
    flex-direction: column;
  }

  #sec02 .slick-list,
  #sec02 .slick-track,
  #sec02 .chara-slide {
    height: 100% !important;
  }


}

/* ▼ 769px 〜 1000px (タブレット専用上書き) ▼ */
@media (min-width: 769px) and (max-width: 1000px) {
  #sec02 .chara-inner, 
  #sec03 .story-inner, 
  #sec04 .system-inner, 
  #sec05 .spec-inner {
    width: 65%; 
    background-image: url(../images/sp/sec_bg.webp); 
    background-image: image-set(url(../images/sec_bg.webp) 1x, url(../images/2x/sec_bg@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/sec_bg.webp) 1x, url(../images/2x/sec_bg@2x.webp) 2x);
    background-size: 100% 100%; 
    background-repeat: no-repeat;
    background-position: center;
    aspect-ratio: auto; 
    box-sizing: border-box;
    padding: 5% 0;
  }
  .left-nav {
    left: 5px;
    transform: translateY(-50%) scale(0.65);
  }
  #sec01 .sec01-slider .slick-prev, #sec02 .slick-prev, #sec04 .slick-prev { left: -12%; }
  #sec01 .sec01-slider .slick-next, #sec02 .slick-next, #sec04 .slick-next { right: -12%; }
  #sec01 .sec01-slider .slick-arrow, #sec02 .slick-arrow, #sec04 .slick-arrow { width: 3.8vw; }

  #sec02 .slick-prev, #sec04 .slick-prev { left: -2%; }
  #sec02 .slick-next, #sec04 .slick-next { right: -2%; }
  #sec02 .slick-arrow, #sec04 .slick-arrow { width: 3.8vw; }


  #sec02 .col-profile {
    width: 30%;
  }

  
  #sec02 .col-profile dt img, 
  #sec02 .prof-heading img { height: 1.8vw; }

  #sec02 .col-profile dt .ja, #sec02 .prof-heading .ja { font-size: 13px; }
  #sec02 .col-profile dt .en, #sec02 .prof-heading .en { font-size: 11px; }

  #sec02 .col-profile dd, 
  #sec02 .personality { line-height: 1.7; margin-bottom: 0.5vw; }
  #sec02 .col-profile dd .ruby { font-size: 0.9vw; }
  
  #sec02 .col-standee {
    position: absolute;
    width: 70%;   
    right: -25%;   
    top: -5%; 
    bottom: auto;
    z-index: 10;
    pointer-events: none; 
    max-height: 75vh;
    -webkit-mask-image: linear-gradient(to bottom, black 95%, transparent 98%);
    mask-image: linear-gradient(to bottom, black 95%, transparent 98%);
  }
  #sec02 .col-standee video {
    width: 100%;
    height: auto;
    display: block; 
  }
  #sec02 .thumb-item { width: 10vw; } 


  
  #sec03 .chara {
    left: -11%; 
    top: -2%; 
    height: 140%; 
    z-index: 5;
    -webkit-mask-image: linear-gradient(to bottom, black 85%, transparent 98%);
    mask-image: linear-gradient(to bottom, black 85%, transparent 98%);
  }
  #sec03 .chara img { height: 100%; width: auto; }
  #sec03 .txt-area {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 85%; 
    z-index: 10;
  }
  #sec03 .txtbg {
    position: relative !important; 
    width: 100%;
  }
  #sec03 .txtbg img,
  #sec03 .txt img {
    width: 95%;
    height: auto;
    display: block; 
  }
  #sec03 .txt {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%); 
    width: 95.5%; 
  }
  #sec03 .txt .catch {
    position: relative !important; 
    margin-top: -1%;
    width: 70%;
  }
  #sec03 .txt .catch img { width: 100%; height: auto; display: block; }
  #sec03 .txt p.blktxt {
    font-family: "fot-udkakugo-large-pr6n", sans-serif;
    font-weight: bold;
    color: #444b52; 
    font-size: clamp(10px, 8cqw, 14px);
    line-height: 2.1;
    letter-spacing: 1.3px;
    text-align: center;
    padding-top: 25px;
    text-shadow: 0 0 6px rgba(255, 255, 255, 0.8), 0 0 3px rgba(255, 255, 255, 0.9), 0 0 2px #999999;
  }
  #sec03 .txt p.blktxt .app { 
    background: linear-gradient(to right, #3b4ccd, #ab227a);
    color: #ffffff; 
    font-size: clamp(10px, 8cqw, 15px);
    line-height: 2.1;
    letter-spacing: 1.3px;
    text-align: center;
    margin-left: 3px;
    padding: 7px 9px 7px 11px;
    text-shadow: none;
  }
  #sec03 .txt p.blktxt2 {
    font-family: "fot-udkakugo-large-pr6n", sans-serif;
    font-weight: bold;
    color: #444b52; 
    font-size: clamp(10px, 8cqw, 20px);
    line-height: 2.1;
    letter-spacing: 1.3px;
    text-align: center;
    padding-top: 25px;
  }
  #sec03 .txt p.blktxt2 .app2 { 
    background: linear-gradient(to right, #3b4ccd, #ab227a);
    color: #ffffff; 
    font-size: clamp(10px, 8cqw, 21px);
    line-height: 2.1;
    letter-spacing: 1.3px;
    text-align: center;
    margin-left: 3px;
    padding: 7px 9px 7px 11px;
    text-shadow: none;
  }
  #sec03 .txt p.blktxt3 {
    font-family: "fot-udkakugo-large-pr6n", sans-serif;
    font-weight: bold;
    color: #444b52; 
    font-size: clamp(10px, 8cqw, 20px);
    line-height: 2.1;
    letter-spacing: 1.3px;
    text-align: center;
    padding-top: 25px;
  }
  
  
  #sec03 .photos {
    position: absolute;
    top: 0;
    right: 0;
    width: 100%;
    height: 100%;
    z-index: 2; 
  }
  #sec03 .photo01 {
    z-index: 10; 
    top: 8%;
    right: -24%; 
    transform: rotate(-10deg); 
    width: 37%; 
  }
  #sec03 .photo02 {
    z-index: 20; 
    top: 44%;
    right: -26%;
    transform: rotate(8deg); 
    width: 40%; 
  }

  
  #sec04 .sys-chara {
    position: absolute;
    bottom: -1%; 
    width: 35%; 
    z-index: 10;
    pointer-events: none; 
    -webkit-mask-image: linear-gradient(to bottom, black 90%, transparent 98%);
    mask-image: linear-gradient(to bottom, black 90%, transparent 98%);
    opacity: 0;
  }
  #sec04 .sys-chara.left { left: -10.5%; }
  #sec04 .sys-chara.right { right: -9.7%; }
  #sec04 .sys-chara img { width: 100%; height: auto; }
  
  


  #sec05 .spec-inner { padding: 1% 4%; }
  #sec05 .spec-top {
    display: block;
    align-items: center;
    justify-content: center;
    gap: 2%; 
    width: 100%;
    margin-bottom: 3vw;
  }
  #sec05 .spec-logo { width: 32%; margin-bottom: 2vw; }
  #sec05 .spec-logo img { width: 100%; height: auto; }
  #sec05 .spec-text {
    width: 95%;
    font-family: "fot-udkakugo-large-pr6n", sans-serif;
    font-size: 12px;
    line-height: 2.0;
    font-weight: 400;
    text-align: left;
  }
  #sec05 .spec-text dl {
    display: flex;
    flex-wrap: wrap; 
    margin: 0;
  }
  #sec05 .spec-text dt {
    width: 35%; 
    text-align: right; 
    padding-right: 5px;
  }
  #sec05 .spec-text dd {
    width: 65%; 
    margin: 0;
  }
  #sec05 .spec-mid {
    width: 98%;
    text-align: center;
    font-family: "fot-udkakugo-large-pr6n", sans-serif;
    font-size: 11px;
    font-weight: 400;
    padding: 2.5% 0;
  }
  #sec05 .spec-mid a {
    color: #333;
    text-decoration: none;
    margin: 0 10px;
    transition: opacity 0.2s;
  }
  #sec05 .spec-mid a:hover { opacity: 0.6; }
  #sec05 .spec-bottom {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 40px; 
    width: 100%;
    padding-top: 1%;
  }
  #sec05 .btn-sns {
    display: block;
    width: auto; 
    transition: transform 0.2s;
  }
  #sec05 .btn-sns:hover { transform: scale(1.05); }
  #sec05 .btn-sns img {
    height: 45px; 
    width: auto;  
  }
  #sec05 .sns-border { display: none; }
  
  
}






/* ▼ 768px 以下 (SP版) ▼ */
@media (max-width: 768px) {

  /* =========================================
     共通・非表示・リセット
  ========================================= */
  .guide-wrapper,
  .cta .cta-capture,
  .left-nav { 
    display: none;
  }
  
  .section { 
    background-image: url(../images/sp/bg_section.webp);
    background-image: image-set(url(../images/sp/bg_section.webp) 1x, url(../images/sp/2x/bg_section@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/sp/bg_section.webp) 1x, url(../images/sp/2x/bg_section@2x.webp) 2x);
  }
  .section:nth-child(1) { 
    background: url(../images/sp/bg_section2201.webp);
    background-image: image-set(url(../images/sp/bg_section2201.webp) 1x, url(../images/sp/2x/bg_section2201@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/sp/bg_section2201.webp) 1x, url(../images/sp/2x/bg_section2201@2x.webp) 2x);
    background-size: cover; }
  .section:nth-child(2) { 
    background: url(../images/sp/bg_section2202.webp);
    background-image: image-set(url(../images/sp/bg_section2202.webp) 1x, url(../images/sp/2x/bg_section2202@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/sp/bg_section2202.webp) 1x, url(../images/sp/2x/bg_section2202@2x.webp) 2x);
    background-size: cover; }
  .section:nth-child(3) { 
    background: url(../images/sp/bg_section2201.webp);
    background-image: image-set(url(../images/sp/bg_section2201.webp) 1x, url(../images/sp/2x/bg_section2201@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/sp/bg_section2201.webp) 1x, url(../images/sp/2x/bg_section2201@2x.webp) 2x);
    background-size: cover; }
  .section:nth-child(4) { 
    background: url(../images/sp/bg_section2202.webp);
    background-image: image-set(url(../images/sp/bg_section2202.webp) 1x, url(../images/sp/2x/bg_section2202@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/sp/bg_section2202.webp) 1x, url(../images/sp/2x/bg_section2202@2x.webp) 2x);
    background-size: cover; }
  .section:nth-child(5) { 
    background: url(../images/sp/bg_section2201.webp);
    background-image: image-set(url(../images/sp/bg_section2201.webp) 1x, url(../images/sp/2x/bg_section2201@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/sp/bg_section2201.webp) 1x, url(../images/sp/2x/bg_section2201@2x.webp) 2x);
    background-size: cover; }
  .section:nth-child(6) { 
    background: url(../images/sp/bg_section2202.webp);
    background-image: image-set(url(../images/sp/bg_section2202.webp) 1x, url(../images/sp/2x/bg_section2202@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/sp/bg_section2202.webp) 1x, url(../images/sp/2x/bg_section2202@2x.webp) 2x);
    background-size: cover; }

  /* =========================================
     スマホ用ハンバーガーメニュー
  ========================================= */
  .hbg-btn { position: fixed; top: 45px; right: 5px; width: 50px; height: 50px; z-index: 1000; cursor: pointer; opacity: 0; visibility: hidden; transition: opacity 0.3s ease, visibility 0.3s ease; }
  .hbg-btn.is-visible { opacity: 1; visibility: visible; }
  .hbg-btn::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; 
    background-image: url(../images/sp/hbgmenu.webp);
    background-image: image-set(url(../images/sp/hbgmenu.webp) 1x, url(../images/sp/2x/hbgmenu@2x.webp) 2x);
    background-image: -webkit-image-set(url(../images/sp/hbgmenu.webp) 1x, url(../images/sp/2x/hbgmenu@2x.webp) 2x);
    background-size: contain; background-repeat: no-repeat; background-position: center; z-index: 1; }
  .hbg-icon { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 26px; height: 20px; z-index: 2; }
  .hbg-icon span { position: absolute; left: 0; width: 100%; height: 3px; background-color: #0066cc; border-radius: 2px; transition: all 0.3s ease; }
  .hbg-icon span:nth-of-type(1) { top: 0; }
  .hbg-icon span:nth-of-type(2) { top: 50%; transform: translateY(-50%); }
  .hbg-icon span:nth-of-type(3) { bottom: 0; }
  .hbg-btn.is-open .hbg-icon span:nth-of-type(1) { top: 50%; transform: translateY(-50%) rotate(45deg); }
  .hbg-btn.is-open .hbg-icon span:nth-of-type(2) { opacity: 0; }
  .hbg-btn.is-open .hbg-icon span:nth-of-type(3) { top: 50%; transform: translateY(-50%) rotate(-45deg); }

  .hbg-nav { position: fixed; top: 0; left: 0; width: 100%; height: 100dvh; background-color: rgba(0, 0, 0, 0.4); z-index: 995; opacity: 0; visibility: hidden; transition: opacity 0.4s ease, visibility 0.4s ease; display: flex; justify-content: center; align-items: center; }
  .hbg-nav.is-open { opacity: 1; visibility: visible; }
  .hbg-nav::before { content: ""; position: absolute; top: 47%; left: 50%; transform: translate(-50%, -50%); width: 95%; height: 75dvh; background-image: url(../images/sp/hbgmenubg.webp); background-size: 100% 100%; background-repeat: no-repeat; background-position: center; z-index: -1; }
  .hbg-nav-inner { width: 75%; max-height: 70dvh; margin-top: -3dvh; overflow-y: auto; }
  .hbg-nav ul { display: flex; flex-direction: column; gap: 15px; width: 100%; }
  .hbg-nav li { width: 100%; background-color: #ffffff; color: #0074ef; font-family: "fot-udkakugo-large-pr6n", sans-serif; font-weight: bold; font-size: clamp(16px, 5vw, 22px); text-align: center; padding: 8px 0; box-shadow: 2px 2px 5px rgba(0,0,0,0.2); cursor: pointer; letter-spacing: 0.1em; }

  /* =========================================
     セクション共通
  ========================================= */
  #sec01, #sec02, #sec03, #sec04, #sec05  { justify-content: center; padding-top: 60px; }
  #sec01 h2, #sec02 h2, #sec03 h2, #sec04 h2, #sec05 h2 { position: relative; top: auto; left: auto; transform: none; width: 70%; margin: 0 auto 2vh; }
  #sec01 h2 img, #sec02 h2 img, #sec03 h2 img, #sec04 h2 img, #sec05 h2 img { width: 100%; height: auto; }

  /* 👇 【追加】すべてのinnerの「固定」を解除して、スマホ用の横幅（95vw）を確保 */
  #sec01 .campaign-inner,
  #sec02 .chara-inner,
  #sec03 .story-inner,
  #sec04 .system-inner,
  #sec05 .spec-inner {
    width: 95vw; /* 横幅を広げる */
    height: auto; /* 高さを中身に合わせる（はみ出し防止） */
    max-height: calc(100dvh - 160px); /* 画面の下にはみ出さないよう制限 */
    aspect-ratio: auto; /* PCの比率固定を解除 */
    margin: 0 auto;
    padding: 5% 0; /* 上下に少し余白 */
  }

  /* =========================================
     フッター・CTA
  ========================================= */
  footer { height: 35px; line-height: 35px; padding: 0; }
  .cta { 
    position: fixed; 
    bottom: 0px; 
    left: 0; 
    width: 100vw; 
    box-sizing: border-box;
    padding: 8px 2%; 
    height: auto; 
    z-index: 900; 
    display: flex; 
    justify-content: center; 
    align-items: center; 
    background-image: none; 
    background-color: rgba(255, 255, 255, 0.85); 
    border: none; 
    border-radius: 0; 
    transform: none; 
  }
  .cta .games_btn_erea { 
    display: flex; 
    justify-content: center; 
    align-items: center; 
    gap: 2%; 
    width: 100%; 
    height: auto; 
    margin: 0; 
    padding: 0; 
  }
  .cta .games_btn_erea li.btn-sp { 
    width: auto; 
    height: auto; 
    margin: 0; 
    display: flex; 
    align-items: center; 
    gap: 4px; 
  }
  .cta .games_btn_erea li.btn-sp button {
    width: auto; 
    min-width: 0;
    padding: 0;
    flex-shrink: 1;
  }
  
  .cta .games_btn_erea li.btn-sp a { display: block; }
  
  .cta .games_btn_erea li.btn-sp img { 
    height: clamp(40px, 10vw, 55px); 
    width: auto; 
    
    max-width: 100%;
    object-fit: contain; 
    display: block; 
  }

  
  .cta .ntg-rule-box {
    font-size: 9px; 
    margin-top: 0;
    margin-left: 5px;
    flex-shrink: 0;
  }
  .cta .ntg-rule-box .ntg-rule-comname { font-size: 9px; color: #000; }
  .cta .ntg-rule-box label { font-size: 9px; color: #000; }
  .cta .ntg-rule-box div, .cta .ntg-rule-box label {
    line-height: 1.1; 
  }
  .cta .ntg-rule-box input[type="checkbox"] {
    margin: 0 2px 0 0; 
    vertical-align: middle; 
    transform: scale(0.85); 
  }



  /* =========================================
     FV
  ========================================= */
  #fv { background-image: url(../images/sp/fv_bg.webp); background-position: center 38px; }
  #fv::before, #fv::after { display: none; }
  #fv h1 { top: max(45px, 2%); right: 2%; left: auto; transform: none; width: 30%; }
  #fv .txt { top: 0; left: 0; width: 100%; height: 100%; bottom: auto; transform: none; position: absolute; z-index: 11; animation: none; opacity: 1; }
  #fv .txt .fv-txt-right { position: absolute; top: 18vh; right: 2%; width: clamp(25px, 6vw, 40px); height: auto; opacity: 0; animation: spFadeInUp 1.5s ease-out 0.5s forwards; }
  #fv .txt .fv-txt-left { position: absolute; top: 34vh; left: 2%; width: clamp(35px, 8vw, 55px); height: auto; opacity: 0; animation: spFadeInDown 1.5s ease-out 0.5s forwards; }
  @keyframes spFadeInUp { 0% { opacity: 0; transform: translateY(20px); } 100% { opacity: 1; transform: translateY(0); } }
  @keyframes spFadeInDown { 0% { opacity: 0; transform: translateY(-20px); } 100% { opacity: 1; transform: translateY(0); } }
  #fv .pv-btn-sp { position: absolute; bottom: calc(30px + 12vw); left: 4%; width: 40vw; max-width: 180px; z-index: 20; }
  #fv .pv-btn-sp img { width: 100%; height: auto; }

  #fv .pv-btn-sp a {
    display: block;
    position: relative;
    border: 2px solid #4084fb; /* 外枠の青線。不要なら削除してください */
    border-radius: 4px;        /* 枠の角を少し丸める場合 */
  }
  
  /* 画像がはみ出さないように */
  #fv .pv-btn-sp a img {
    display: block;
    width: 100%;
    height: auto;
  }

  /* 1. 再生ボタン本体 */
  #fv .pv-btn-sp a::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 48px;
    height: 48px;
    
    background-color: rgba(255, 255, 255, 0.7); 
    backdrop-filter: blur(4px); 
    -webkit-backdrop-filter: blur(4px);
    
    border-radius: 50%;
    border: 2px solid #4084fb;
    
    background-image: url('data:image/svg+xml;utf8,<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9 6v12l9-6z" fill="%234084fb"/></svg>');
    background-size: 105%; 
    background-position: 56% center; 
    background-repeat: no-repeat;
    
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2); 
    z-index: 5;
    transition: transform 0.2s ease;
  }

  /* 2. 波紋エフェクトの準備＆ループ再生 */
  #fv .pv-btn-sp a::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 48px;
    height: 48px;
    background-color: rgba(255, 255, 255, 0.5); 
    border-radius: 50%;
    z-index: 4; 
    
    animation: play-pulse 1.5s infinite ease-out;
  }

  /* スマホはホバーがないので、タップ（active）時にアニメーションを止めて少し拡大 */
  #fv .pv-btn-sp a:active::before {
    animation: none;
    opacity: 0;
  }
  #fv .pv-btn-sp a:active::after {
    transform: translate(-50%, -50%) scale(1.15);
  }




  /* =========================================
     sec01
  ========================================= */
  #sec01 .campaign-inner {
    width: 95vw !important;
    height: calc(100dvh - 160px) !important; /* 枠の高さはこれで固定 */
    display: flex !important;
    justify-content: center;
    align-items: center;
  }
  #sec01 .campaign-inner {
    width: 95vw !important;
    /* 👇 縦長すぎる時は、横幅基準(160vw)で成長をストップさせる！ */
    height: min(calc(100dvh - 160px), 160vw) !important;
  }

  
  #sec01 .camp-txt1 { width: 45%; margin: 0; }
  #sec01 .camp-txt2 { width: 65%; margin-top: 1%; }
  
  #sec01 .camp-panel { width: 90%; margin-top: 5%; margin-bottom: 40px; } 
  
  #sec01 .sec01-slider .slick-prev { left: -18%; } 
  #sec01 .sec01-slider .slick-next { right: -18%; }
  #sec01 .sec01-slider .slick-dots { gap: 8px; bottom: -35px; } 
  #sec01 .sec01-slider .slick-dots li button { width: 10px; height: 10px; }



  /* =========================================
     sec02
  ========================================= */
  #sec02 .chara-inner { height: calc(100dvh - 180px); padding-bottom: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; }
  #sec02 .chara-inner { height: min(calc(100dvh - 180px), 140vw); padding-bottom: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; }

  #sec02 .slide-content { display: block; position: relative; width: 100%; height: 100%; padding: 4vw 4vw; }
  #sec02 .slick-arrow { top: auto; bottom: calc(10.5% + 5.5vw); transform: translateY(50%); width: clamp(24px, 8vw, 45px); z-index: 30; }
  #sec02 .slick-prev { bottom: 8%; left: 2%; }
  #sec02 .slick-next { bottom: 8%; right: 2%; }
  #sec02 .col-standee { position: absolute; top: 5%; right: -18%; width: 80%; max-width: none; height: auto; z-index: 4; }
  #sec02 .col-profile dd, #sec02 .personality { font-size: clamp(10px, 1.8vw, 18px); line-height: 1.7; margin-top: 4px; margin-bottom: 5px; }
  #sec02 .col-profile dt img { height: 3.8vw; }
  #sec02 .prof-heading img { height: 3.8vw; }

  #sec02 .col-profile dt .ja, #sec02 .prof-heading .ja { font-size: clamp(10px, 2.2vw, 14px); }
  #sec02 .col-profile dt .en, #sec02 .prof-heading .en { font-size: clamp(9px, 1.8vw, 12px); }
  #sec02 .col-profile dt, #sec02 .prof-heading { margin-bottom: 4px; }

  #sec02 .col-profile dt, #sec02 .prof-heading { 
    padding: 1px 6px;
    margin-bottom: 2px;
    align-items: center;
    padding: 2px 10px;
    width: 70%;
  }


  #sec02 .personality { padding-left: 5px; margin-bottom: 4px; }
  #sec02 .col-profile dd .ruby { font-size: clamp(9px, 2.8vw, 12px); }
  #sec02 .col-profile, #sec02 .col-center { position: relative; z-index: 10; width: 60%; margin-left: 4%; }
  #sec02 .col-center .movie-thumb { position: relative; width: 50vw; max-width: 320px; transform: rotate(0deg); margin-top: -10px; margin-left: -10.5vw; }
  #sec02 .chara-thumbnails { position: absolute; bottom: -2%; left: 50%; transform: translateX(-50%); width: 76%; gap: 3vw; z-index: 50; }
  #sec02 .thumb-item { width: 30%; }

  /* =========================================
     sec03
  ========================================= */
  .section:has(#sec03) { overflow: visible; }
  #sec03 .story-inner { 
    width: 95vw !important;
    height: calc(100dvh - 160px) !important; 
    max-height: 100% !important;
    padding: 0 !important; 
    position: relative !important;
    display: block !important;
  }
  #sec03 .story-inner { 
    width: 95vw !important;
    height: min(calc(100dvh - 160px), 135vw) !important;
  }


  #sec03 .txt-area { 
    position: absolute; 
    top: 2%; 
    left: 50%; 
    transform: translateX(-50%); 
    width: 95%; 
    z-index: 25; 
  }
  #sec03 .txtbg { display: none; }
  #sec03 .txt { position: relative; top: 0; left: 0; transform: none; width: 100%; }
  .is-animated #sec03 .txt { animation-delay: 1.0s; }
  #sec03 .txt .catch { width: 100%; margin: 0 auto; }

  #sec03 .txt p.blktxt { font-size: clamp(10px, 3.2vw, 16px); line-height: 1.7; padding-top: 3%; text-align: center; text-shadow: 1px 1px 0 #fff, -1px -1px 0 #fff, -1px 1px 0 #fff, 1px -1px 0 #fff, 0px 1px 0 #fff, 0 -1px 0 #fff, -1px 0 0 #fff, 1px 0 0 #fff, 0px 0px 5px rgba(255,255,255,0.8); }
  #sec03 .txt p.blktxt .app { font-size: clamp(10px, 3.2vw, 16px); padding: 3px 5px; text-shadow: none; }
  #sec03 .txt p.blktxt2 { width: 65%; margin-left: auto; margin-right: 0; text-align: center; font-size: clamp(10px, 3.7vw, 15px); line-height: 1.3; padding-top: 3%; text-shadow: 1px 1px 0 #fff, -1px -1px 0 #fff, -1px 1px 0 #fff, 1px -1px 0 #fff, 0px 1px 0 #fff, 0 -1px 0 #fff, -1px 0 0 #fff, 1px 0 0 #fff, 0px 0px 5px rgba(255,255,255,0.8); }
  #sec03 .txt p.blktxt2 .app2 { font-size: clamp(10px, 3.2vw, 16px); padding: 3px 5px; text-shadow: none; }
  #sec03 .txt p.blktxt3 { width: 88%; margin-left: auto; margin-right: auto; text-align: center; font-size: clamp(10px, 3.7vw, 15px); line-height: 1.3; padding-top: 2.5%; text-shadow: 1px 1px 0 #fff, -1px -1px 0 #fff, -1px 1px 0 #fff, 1px -1px 0 #fff, 0px 1px 0 #fff, 0 -1px 0 #fff, -1px 0 0 #fff, 1px 0 0 #fff, 0px 0px 5px rgba(255,255,255,0.8); }


  #sec03 .chara { 
    position: absolute; 
    top: auto; 
    bottom: -50%; 
    left: -5%; 
    
    width: 100%; 
    height: 130%;
    z-index: 5; 
    -webkit-mask-image: linear-gradient(to bottom, black 85%, transparent 98%); 
    mask-image: linear-gradient(to bottom, black 85%, transparent 98%); 
  }
  #sec03 .chara img { 
    width: 100%; 
    height: 100%; 
    object-fit: contain; /* はみ出さずに綺麗に収める */
    object-position: bottom left;
  }

  #sec03 .photos { 
    position: absolute; 
    top: auto; 
    bottom: -10%; 
    right: 3%; 
    left: auto; 
    width: 90%; 
    height: 15%; /* 箱の高さの35%を使う */
    z-index: 20; 
  }
  #sec03 .photo01 { 
    position: absolute; 
    width: 65%; 
    top: auto; 
    bottom: 10%; 
    right: auto; 
    left: -15%; 
    transform: rotate(-12deg); 
    z-index: 1; 
  }
  #sec03 .photo02 { 
    position: absolute; 
    width: 70%; 
    top: auto; 
    bottom: -5%; 
    right: -10%; 
    transform: rotate(6deg); 
    z-index: 2; 
  }




  /* =========================================
     sec04
  ========================================= */
  #sec04 .system-inner { 
    width: 95vw ;
    height: calc(100dvh - 160px) ; 
    max-height: 100% ;
    margin: 0 auto ; 
    padding: 0 ; 
    display: flex; 
    justify-content: center; 
    align-items: center; 
    position: relative ;
  }
  
  #sec04 .system-inner { 
    width: 95vw ;
    height: min(calc(100dvh - 160px), 150vw) ;
  }

  #sec04 .sys-slider-sp { 
    position: relative ; 
    top: auto; 
    left: auto ; 
    transform: none; 
    width: min(65vw, 34vh);
    z-index: 15; 
    opacity: 0; 
  }
  #sec04 .sys-slider-sp .slick-slide img { 
    width: 100%; 
    height: auto; 
    display: block; 
    margin: 0 auto; 
  }
  #sec04 .sys-slider-sp .slick-list,
  #sec04 .sys-slider-sp .slick-slide { margin: 0; }

  #sec04 .sys-slider-sp .slick-arrow { 
    position: absolute; 
    top: 50% ; 
    transform: translateY(-50%); 
    z-index: 20; 
    width: clamp(30px, 8vw, 50px) ; 
    max-width: none; 
    background: none; 
    border: none; 
    padding: 0; 
    cursor: pointer; 
    display: block; 
    opacity: 0; 
  }
  #sec04 .sys-slider-sp .slick-prev { left: -12%; }
  #sec04 .sys-slider-sp .slick-next { right: -12%; }
  #sec04 .sys-slider-sp .slick-prev::before, 
  #sec04 .sys-slider-sp .slick-next::before { display: none ; }
  #sec04 .sys-slider-sp .slick-arrow img { width: 100%; height: auto; display: block; }

  #sec04 .sys-chara { 
    position: absolute; 
    top: auto ; 
    bottom: -2%; 
    width: 55%; 
    height: 80%;
    z-index: 5; 
    pointer-events: none; 
    -webkit-mask-image: linear-gradient(to bottom, black 80%, transparent 95%); 
    mask-image: linear-gradient(to bottom, black 80%, transparent 95%); 
    opacity: 0; 
  }
  #sec04 .sys-chara.left { left: -18%; }
  #sec04 .sys-chara.right { right: -18%; }
  #sec04 .sys-chara img { 
    width: 100%; 
    height: 100%; 
    object-fit: contain; /* はみ出さずに綺麗に収める */
    object-position: bottom center; 
  }

  .is-animated #sec04 .sys-slider-sp, .is-animated #sec04 .sys-slider-sp .slick-arrow { animation: fadeInSlider 0.8s ease-out 1.0s forwards; }
  .is-animated #sec04 .sys-chara.left { animation: expandOutLeft 0.9s ease-out 0.3s forwards; }
  .is-animated #sec04 .sys-chara.right { animation: expandOutRight 0.9s ease-out 0.3s forwards; }

  #sec04 .sys-slider .slick-arrow,
  #sec04 > .slick-arrow,
  #sec04 .system-inner > .slick-arrow { 
    display: none; 
  }

  .is-animated #sec04 .sys-slider-sp, 
  .is-animated #sec04 .sys-slider-sp .slick-arrow { animation: fadeInSlider 0.8s ease-out 1.0s forwards; }
  .is-animated #sec04 .sys-chara.left { animation: expandOutLeft 0.9s ease-out 0.3s forwards; }
  .is-animated #sec04 .sys-chara.right { animation: expandOutRight 0.9s ease-out 0.3s forwards; }


  /* =========================================
     sec05
  ========================================= */
  #sec05 .spec-inner {
    width: 95vw;
    height: calc(100dvh - 160px); 
    max-height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: space-evenly; /* 中身を縦に均等にバランスよく配置 */
    align-items: center;
    padding: 4% 7%;
    box-sizing: border-box;
    margin: 0 auto;
  }
  #sec05 .spec-inner {
    width: 95vw;
    height: min(calc(100dvh - 160px), 150vw);
  }
  #sec05 .spec-top { 
    display: flex;
    flex-direction: column; 
    align-items: center;
    gap: 8px; 
    width: 100%;
  }
  #sec05 .spec-logo { 
    width: 45%;   
  }
  #sec05 .spec-logo img {
    width: 100%;
    height: auto;
  }
  #sec05 .spec-text { 
    width: 100%; 
    font-size: clamp(10px, 2.6vw, 18px) ; 
    line-height: 1.4; 
  }
  
  #sec05 .spec-text dl { 
    display: grid; 
    grid-template-columns: max-content 1fr; 
    gap: 8px 5px; 
    width: fit-content; 
    margin: 0 auto; 
    text-align: left; 
  }
  
  #sec05 .spec-text dt, 
  #sec05 .spec-text dd { 
    display: block ; /* 古いinline設定を解除 */
    width: auto ; 
    margin: 0 ; 
    padding: 0; 
  }
  
  /* 👇 昔の改行ハック（無理やり隙間を空けていた設定）を完全消去 */
  #sec05 .spec-text dt::before { 
    display: none; 
  }

  #sec05 .spec-mid { 
    width: 100%; 
    border-bottom: none; 
    padding: 5px 0; 
    white-space: nowrap; 
    font-size: clamp(9px, 2.5vw, 12px); 
    letter-spacing: -0.03em; 
  }
  #sec05 .spec-mid a { margin: 0 1.5vw; }

  
  #sec05 .mailattention {
    font-family: "fot-udkakugo-large-pr6n", sans-serif;
    font-size: clamp(9px, 4cqw, 10px);
    color: #333;
    padding-top: 5px;
    white-space: normal;
    overflow-wrap: break-word;
    word-break: break-all;
  }
  


  #sec05 .spec-bottom { 
    flex-direction: column; 
    justify-content: center;
    align-items: center; 
    gap: 15px ;
    padding-top: 0; 
    width: 100%;
  }
  #sec05 .btn-sns { 
    width: auto;
    max-width: 80%;
    display: inline-block; }
  
  /* 💡 縦に2つ積み重なるため、1画面に絶対収まるよう高さを少しだけ小さく制御します */
  #sec05 .btn-sns img { 
    height: clamp(35px, 5.8vh, 65px);
    width: auto; 
    display: block; 
  }
}

/* =========================================
   ▼ 600px 〜 768px (スマホ大きめ・タブレット縦用) ▼
========================================= */
@media (min-width: 600px) and (max-width: 768px) {
  #sec02 .slide-content { display: block; position: relative; width: 100%; height: 100%; padding: 3vw 4vw; }
  #sec02 .col-profile dt img, #sec02 .prof-heading img { width: auto; margin-top: 5px; }
  #sec02 .col-profile dt img { height: 3.8vw; }
  #sec02 .prof-heading dt img { height: 3.8vw; }

  #sec02 .col-profile dt .ja, #sec02 .prof-heading .ja { font-size: 14px; }
  #sec02 .col-profile dt .en, #sec02 .prof-heading .en { font-size: 12px; }

  #sec02 .col-profile dd, #sec02 .personality { font-size: 15px; margin-top: 4px; margin-bottom: 8px; line-height: 1.6; }
  #sec02 .col-profile dd .ruby { font-size: 10px; }
  #sec02 .col-center { margin-top: 5px; }
  #sec02 .col-center .movie-thumb { max-width: 380px; margin-top: 8px; }
  
  #sec03 .txt p.blktxt { width: 75%; margin-left: auto; margin-right: 4vw; text-align: center; font-size: clamp(10px, 3.7vw, 15px); line-height: 1.6; padding-top: 3%; text-shadow: 1px 1px 0 #fff, -1px -1px 0 #fff, -1px 1px 0 #fff, 1px -1px 0 #fff, 0px 1px 0 #fff, 0 -1px 0 #fff, -1px 0 0 #fff, 1px 0 0 #fff, 0px 0px 5px rgba(255,255,255,0.8); }
  #sec03 .txt p.blktxt .app2 { font-size: clamp(10px, 3.2vw, 16px); padding: 3px 5px; text-shadow: none; }
  #sec03 .chara { position: absolute; top: 25%; bottom: -15dvh; left: -5%; width: 40%; height: auto; z-index: 5; -webkit-mask-image: linear-gradient(to bottom, black 85%, transparent 98%); mask-image: linear-gradient(to bottom, black 85%, transparent 98%); }
  #sec03 .chara img { width: 100%; height: 100%; object-fit: cover; object-position: top center; }
  #sec03 .photos { position: absolute; top: auto; bottom: -5vh; right: 0; left: 0; width: 100%; height: 35vh; z-index: 20; }
  #sec03 .photo01 { position: absolute; width: 58%; top: auto; bottom: 17%; right: 0; left: -53%; transform: rotate(-12deg); z-index: 1; }
  #sec03 .photo02 { position: absolute; width: 65%; top: auto; bottom: 13%; right: -4%; transform: rotate(6deg); z-index: 2; }
}

/* =========================================
   ▼ 599px 以下 (スマホ小さめ用) ▼
========================================= */
@media (max-width: 599px) {
  #fv h1 { top: max(45px, 2%); right: 2%; left: auto; transform: none; width: 40%; }
  
  #sec02 .col-profile, #sec02 .col-center { position: relative; z-index: 10; width: 70%; margin-left: 4%; }
  
  #sec02 .col-standee { position: absolute; top: 5%; right: -18%; width: 80%; max-width: none; height: auto; z-index: 4; }

  #sec02 .chara-thumbnails {
    bottom: -45px !important; 
    width: 85% !important;  
  }
  
  /* 👇 【追加】動画サムネ自体も少しだけ縮めて上に詰める（被り回避のダメ押し） */
  #sec02 .col-center .movie-thumb { 
    width: 46vw !important; 
    margin-top: -10px !important; 
  }
  
  #sec02 .slick-arrow { top: auto; bottom: calc(0.5% + 1.5vw); transform: translateY(50%); width: clamp(24px, 8vw, 45px); z-index: 30; }
  #sec02 .slick-prev { left: -2%; }
  #sec02 .slick-next { right: -2%; }
}

/* =========================================
   ▼ sec03専用：PC/SPテキスト出し分け (600px / 599px) ▼
========================================= */
@media (min-width: 600px) {
  #sec03 .txt-area.invisible-sp { display: block !important; }
  #sec03 .txt-area.invisible-pc { display: none !important; }
}
@media (max-width: 599px) {
  #sec03 .txt-area.invisible-sp { display: none !important; }
  #sec03 .txt-area.invisible-pc { display: block !important; }
}



