/* 覚書 後でノートにまとめる
▼ブレークポイント
・デフォルト PC → tablet大〜PC（769px〜）max1200px
・スマホ〜tablet小（〜768px）
▼記載方法
「全体設定 <body>」「ヘッダー <header>」「メインコンテンツ内の各セクション <main>」
ごとにそれぞれ以下の5パターンを記載
@mediaなし → PC＆SP共通
@media (min-width: 769px)  → PC
@media (min-width: 769px) and (max-width: 960px) → tablet大
@media (max-width: 768px)  → SP
@media (min-width: 667px) and (max-width: 768px) → SP横向き667px〜tablet小
 */

/* =====================================
   全体レイアウト共通
===================================== */

.layout-wrapper {
   margin: 0 auto;
   padding: 1em; /* PC余白 */
}

html,
body {
   overflow-x: hidden; /* はみ出た要素を隠す */
}

/* =====================================
   共通装飾
===================================== */

.inner {
   padding: 1.3rem;
}

.inner-border {
   border: 1px solid #ccc;
   border-radius: 2px;
   box-shadow: 0 1px 5px #eee;
}

/* h2 左の音符マーク */
.topOnpu h2::before {
   content: '';
   display: inline-block;
   background-image: url(../image/onpu.png);
   background-repeat: no-repeat;
   background-size: contain;
   vertical-align: middle;
   width: 18px;
   height: 27px;
   margin-right: 0.3em;
}

.section-lead,
.description {
   font-size: 0.9rem;
   color: #666;
   line-height: 1.4;
   margin-bottom: 0.8em;
}

/* =====================================
   Gridレイアウト（PC・Tablet大）
===================================== */

/* PC（769px以上） ===== */
@media (min-width: 769px) {
   /* レイアウト */
   .layout-wrapper {
      max-width: 1200px;
   }
   main.page-grid {
      display: grid;
      grid-template-columns: clamp(14.375rem, 6.569rem + 16.24vw, 18.75rem) clamp(30.188rem, -8.285rem + 80.05vw, 51.75rem);
      gap: clamp(1.5rem, -0.284rem + 3.71vw, 2.5rem);
   }

   .col-left,
   .col-right {
      display: flex;
      flex-direction: column;
      gap: 2.3rem;
   }

   /* PC769〜では非表示 */
   .sp_only {
      display: none;
   }
   .tbs_only {
      display: none;
   }
}

/* =====================================
   Gridレイアウト（スマホ）
===================================== */

@media (max-width: 768px) {
   main.page-grid {
      display: flex;
      flex-direction: column;
      /* gap: 1rem; */
   }

   /* 左右ラッパーを解除 */
   .col-left,
   .col-right {
      display: contents;
   }

   /* 並び順 */
   .artist {
      order: 1;
   }
   .special {
      order: 2;
   }
   .info {
      order: 3;
   }
   .movie {
      order: 4;
   }
   .concert {
      order: 5;
   }
   .banner1 {
      order: 6;
   }
   .album {
      order: 7;
   }
   .banner2 {
      order: 8;
   }
   .sitemap {
      order: 9;
   }
   footer {
      order: 10;
   }

   /* SP〜768では非表示 */
   .pc_only {
      display: none;
   }
   .sp_only {
      display: block;
   }
   .tbs_only {
      display: none;
   }
   section {
      padding: 1rem 0 1rem 0;
      /* background-color: #ccc; */
   }
   section.special {
      padding: 0 1rem 0 1rem;
   }
   section.border-sp {
      padding-top: 1.3rem;
      padding-bottom: 1.5rem;
      border-top: 3px solid #eee;
   }

   section.info.border-sp {
      padding-top: 1.3rem;
      padding-bottom: 1.5rem;
      border-top: none;
   }

   section.banner1 .inner {
      padding: 0.5rem 0 0 0;
      /* margin-bottom: 0; */
   }
   section.banner1 .inner p:last-child {
      padding: 0;
      margin: 0;
   }
   .banner2 .inner p {
      padding: 0;
      margin-bottom: 0;
      border-bottom: none;
   }
}

/* =====================================
   HEADER 共通
===================================== */

header {
   display: flex;
   justify-content: space-between;
   align-items: flex-end;
   margin-bottom: 25px;
}

header h1 {
   margin: 0;
}

.header-left {
   width: 62%;
}
/* タイトル＆ロゴ */
.header-left .titleLogo {
   position: relative;
}
.header-left img.pc-logo {
   width: clamp(23.75rem, 8.652rem + 31.41vw, 27.5rem); /* 380px幅769 440px幅960 */
}
.header-left .siteTitle {
   position: absolute;
   top: 3px;
   left: clamp(6.25rem, 1.217rem + 10.47vw, 7.5rem); /* 100px幅769 120px幅960 */
   font-size: clamp(0.875rem, 0.372rem + 1.05vw, 1rem); /* 14px幅769 16px幅960 */
   color: #666;
   font-family: sans-serif;
   font-weight: 200;
}

/* ===== PC メインナビ ===== */

.header-mainNav ul {
   display: flex;
   gap: 0.4rem;
   padding-left: 0;
   margin: 0;
   min-width: 520px;
   list-style: none;
}

.header-mainNav li {
   margin-bottom: 0;
}

.header-mainNav ul li a {
   text-decoration: none;
   display: inline-block;
   color: white;
   font-size: clamp(0.875rem, 0.372rem + 1.05vw, 1rem);
   padding: clamp(0.1rem, -0.078rem + 0.37vw, 0.2rem) 10px;
   margin-top: 7px;
   text-align: center;
   background-color: #b4b4f0;
   border-radius: 2px;
}

/* 短めのメニュー名の左右幅確保 */
nav ul a .short {
   padding: 0 7px;
}

/* ===== PC サブナビ（SNSなど） ===== */

.header-subNav ul {
   display: flex;
   justify-content: space-around;
   padding-left: 0;
   /* margin-bottom: 0; */
   margin: 0;
   gap: 0.1em;
   list-style: none;
}

.header-subNav li {
   flex: 1;
   margin: 0 auto;
   opacity: 0.6;
   font-size: 0.7rem;
   text-align: center;
   min-width: 40px;
}

.header-right {
   width: 38%;
   max-width: 340px;
}

.header-right .header-subNav li img {
   width: clamp(1.875rem, 0.617rem + 2.62vw, 2.188rem); /* 30px幅768 35px幅960 */
   min-width: 30px;
}
.header-right .header-mailNews {
   /* margin: 10px 0 0 0; */
   margin-top: 10px;
}

/* .header-right .header-mailNews a {
   max-width: 350px;
} */

/* =====================================
   HEADER SP
===================================== */

@media (max-width: 768px) {
   header {
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: var(--header-height); /* ← ヘッダーの基準高さ */
      background: #fff;
      z-index: 9999;
      display: flex;
      align-items: center; /* ← 縦中央揃え */
      margin-bottom: 0;
   }

   /* main {
      padding-top: var(--header-height);
   } */

   main {
      padding-top: 40px;
   }

   .layout-wrapper {
      padding: 0;
   }

   /* header,
   section {
      padding: 0 1em;
   } */

   header {
      padding: 0 1em;
   }

   .titleLogo img {
      width: 40px;
   }

   /* ===== ハンバーガー ===== */

   .burger_menu {
      position: relative;
   }

   /* 三本線の部分 */
   .burger {
      width: 40px;
      height: 40px;

      background-image: url('../image/burger-menu.svg');
      background-size: 40px;
      background-position: center;
      background-repeat: no-repeat;

      border-radius: 4px;
      cursor: pointer;
      opacity: 0.7;

      position: absolute;
      top: 50%;
      transform: translateY(-50%); /* ← 縦中央に固定 */
      right: 0;
      z-index: 1300;
   }

   .burger:hover {
      background-color: #d9d9f3;
   }
   .burger.is-active {
      background-image: url('../image/burger-close.svg');
   }

   /* ===== メニュー ===== */

   .menu-panel {
      position: fixed;
      top: var(--header-height);
      left: 0;
      width: 100%;

      /* 画面をはみ出したらスクロール */
      max-height: calc(100vh - var(--header-height));
      background: #fff;
      overflow-y: auto;
      -webkit-overflow-scrolling: touch;
      padding: 0 1em 1em;
      opacity: 0;
      visibility: hidden;
      transform: translateY(-10px);
      transition: opacity 0.3s ease, transform 0.3s ease;
      z-index: 1000;
   }

   @media (max-width: 360px) {
      .menu-panel {
         height: 100dvh;
      }
   }

   .menu-panel.is-active {
      opacity: 1;
      visibility: visible;
      transform: translateY(0);
   }

   /* グリッド本体 */
   .menu-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(90px, 1fr));
      gap: 9px;

      list-style: none;
      margin: 0;
      padding: 0;
   }

   /* 各ボックス */
   .menu-grid li a {
      display: flex;
      align-items: center;
      justify-content: center;

      width: 100%;
      min-height: 44px; /* タップしやすさ */

      background: #f5f5f5;
      border-radius: 6px;
      text-decoration: none;
   }

   .menu-grid li {
      margin-bottom: 0;
   }

   .menu-grid img {
      width: 100%;
      height: auto;
      display: block;
   }

   body.is-fixed {
      overflow: hidden;
   }
}

/* =====================================
   アーティスト写真 .artist
===================================== */

.artist {
   padding: 0 0;
}
.artist img {
   max-width: 100%;
   height: auto;
   display: block;
}
@media (min-width: 667px) and (max-width: 768px) {
   .artist {
      aspect-ratio: 1 / 1.2; /* 高さ自動 */
      overflow: hidden;
   }
   .artist img {
      object-fit: cover;
      object-position: top;
   }
}

.artist {
   position: relative;
}

.artist .title {
   animation: fadeIn 4s normal; /* 瞑想のピアニストウォン〜〜が　フワッと表示される */
   position: absolute;
   bottom: 40%;
   left: 35%;
   margin: 10px;
   text-align: left;
   font-size: 4vw;
   font-family: sans-serif;
   line-height: 1.2;
   color: #333;
   text-shadow: 1px 1px 8px rgba(255, 255, 255, 0.5);
}

@media (min-width: 667px) and (max-width: 768px) {
   .artist .title {
      bottom: 35%;
   }
}

/* =====================================================
   albumセクション
   ・アルバムジャケット一覧
   ・ストア案内
   ・画像追加は aタグごとコピペ
===================================================== */

/* =====================================
   ジャケット一覧（PC基準）
===================================== */

.album .inner .jacekt {
   display: grid;
   grid-template-columns: repeat(2, 1fr);
   gap: 8px;
   margin-bottom: 1.5em;
}
.album .inner .jacekt a {
   display: block;
   width: 100%;
}

.album .jacekt img {
   width: 100%;
   height: auto;
   display: block;
}

/* =====================================
   ストア共通
===================================== */

.album .store {
   line-height: 1.3;
   color: #666;
   margin-bottom: 1em;
   font-size: 0.9rem;
}

.album .store h5 {
   padding: 0.5rem;
   text-align: center;
   background-color: #ddd;
   border-radius: 2px;
   font-size: 1rem;
   font-weight: normal;
   margin: 1em 0;
}

.album .store > div {
   margin-bottom: 1.2em;
}

.album .store .banner {
   border: 1px solid #ccc;
   margin: 0 0 0.5em 0;
   text-align: center;
}

.album .store .banner-sp {
   padding: 0.3em 1em;
}

/* 区切り線 */
hr {
   border-top: 1px solid #ccc;
   margin: 0 0 1.5em 0;
}

/* Tunecore */
.album .tunecore .shichodouga {
   display: inline-block;
   background-color: #a5a5de;
   padding: 1px 4px;
   color: #fff;
   font-size: 0.9em;
   margin-left: 0.5em;
}

/* =====================================
   SP（〜768px）
===================================== */

@media (max-width: 768px) {
   /* ジャケット4列 */
   .album .inner .jacekt {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 8px;
   }

   .info,
   .movie,
   .concert,
   .banner1,
   .banner2,
   .album {
      padding: 1rem;
   }

   /* 背景 */
   .album {
      background-color: #f2faf7;
   }
   .album .inner {
      background-color: white;
   }
}

/* =====================================
   special（その都度自由に書く）→ special.css
===================================== */

/* =====================================================
   info（お知らせ）
   ・更新頻度高
   ・.info-itemをコピペで追加
   ・is-new付けるとNEW表示
===================================================== */

/* =====================================
   共通
===================================== */

/* お知らせ全体 */
.info .info-item {
   position: relative;
   margin: 0;
   padding: 0.8em 0.8em 0.8em 3.5em; /* NEW分の余白確保 */
   border-bottom: 1px solid #eee;
   line-height: 1.6;
}
.info .info-item:first-child {
   padding: 0 0.8em 0.8em 3.5em;
}
.info .info-item:last-child {
   border-bottom: none;
   /* padding: 0.8em 0.8em 0 3.5em; */
   padding: 0 0 0 3.5em;
}

/* 行全体リンク用 */
.info .info-item > a {
   display: block;
   text-decoration: none;
   color: inherit;
}

/* 文中リンク用 */
.info .info-item a.inline {
   display: inline;
   color: #0066cc;
}

/* hover効果 */
.info .info-item > a:hover {
   background: #f8f8f8;
}

/* =====================================
   NEWラベル（is-newがある時だけ）
===================================== */

.info .info-item.is-new::before {
   content: 'New';
   position: absolute;
   left: 0.8em;
   top: 1.3em;
   height: 1.6em;
   display: flex;
   align-items: center;
   font-size: 0.75rem;
   color: #fff;
   background: #ff4b4b;
   padding: 0 5px;
   border-radius: 5px;
}

.info .info-item.is-new:first-child:before {
   top: 0.2em;
}

/* =====================================
   tablet小（480〜768）
===================================== */

@media (min-width: 480px) and (max-width: 768px) {
   .info .info-item {
      padding: 0.8em 0.8em 0.8em 3.2em;
   }
   .info .info-item.is-new::before {
      left: 0.4em;
   }
   .info .info-item:first-child {
      padding: 0 0.8em 0.8em 3.2em;
   }
   .info .info-item:last-child {
      padding: 0.8em 0.8em 0 3.2em;
   }
   .info .info-item:last-child {
      border-bottom: none;
      padding: 0 0.8em 0 3.5em;
   }
}

/* =====================================
   SP（〜479）
===================================== */

@media (max-width: 479px) {
   .info .info-item {
      padding: 0.8em 0.8em 0.8em 2.7em;
   }
   .info .info-item.is-new::before {
      left: 0;
   }
   .info .info-item:last-child {
      border-bottom: none;
      padding: 0 0.8em 0 3.5em;
   }
}

/* Concert 覚書 後でノートにまとめる */
/* ・１つのコンサートをarticleとする
・SP（768以下）は「トグル」で「日付＆タイトル」と「詳細＆画像」に分けた
・articleごとに input id と label for に固有のナンバーを振る（toggle-1、toggle-2 ・・・）（トグル用）
・画像(主にフライヤー)は ３つのタイプに分けた
　1) 縦長画像　.flyer-portrait
　2) 横長画像　.flyer-landscape
　3) 自由サイズ .flyer-free
　※1)2)は何枚でもcss追記なしでもレイアウトされる
　※3)フライヤー画像ではなく大きめのアーティスト画像などの時に都度CSSを書いて利用
次の２つは画像調整のため特別にブレークポイントあり
・tablet大(769-960px)は、clampで画像サイズ伸縮
・SP横向き〜tablet小(667〜768px)は、画像サイズなど微調整 */

/* =====================================
   Concert - 共通
===================================== */

/* 日付の●マーク */
.concert .date::before {
   content: '●';
   color: #b8e1c0;
   padding-right: 0.3em;
}

/* ===== article 基本 ===== */

/* article区切り線 */
.concert article {
   padding: 2rem 0;
   border-bottom: 1px solid #bbb;
}
.concert article:first-child {
   padding-top: 0.3rem;
}
.concert article:last-child {
   border-bottom: none;
   padding-bottom: 0.7rem;
}
.concert article p {
   margin-bottom: 1.2em;
}

.concert .description p {
   color: rgb(119, 66, 17);
   line-height: 1.3;
   margin: 0 0 0.6rem 0;
}

.concert p a {
   display: inline-block;
   line-height: 1.2;
   margin: 0.2rem 0;
}

.concert .description p:last-child {
   margin-bottom: 1.5rem;
}

.fw-normal {
   font-weight: normal;
}

.long-url {
   overflow-wrap: anywhere;
   word-break: break-word;
}

/* =====================================
   トグル共通（.concertだけで使用）
===================================== */

.concert .toggle-input {
   position: absolute;
   opacity: 0;
}
.concert .toggle-label {
   cursor: pointer;
   display: flex;
   justify-content: space-between;
   align-items: flex-start;
   -webkit-tap-highlight-color: transparent;
   position: relative;
   padding-right: 1.5rem; /* 矢印分の余白 */
}
.concert .toggle-label:active {
   background-color: transparent;
}
/* ▼矢印 */
.concert .toggle-label::after {
   content: '';
   position: absolute;
   right: 0;
   top: 10px;

   width: clamp(1rem, 0.732rem + 1.34vw, 1.375rem);
   height: clamp(1rem, 0.732rem + 1.34vw, 1.375rem);

   border-bottom: 4px solid #999;
   border-right: 4px solid #999;

   transform-origin: center;
   transform: translateY(-50%) rotate(45deg); /* ▼ */
   transition: transform 0.3s ease;
}

.toggle-input:checked + .left .toggle-label::after {
   position: absolute;
   right: 0;
   top: 12px;
   transform: translateY(-50%) rotate(-135deg); /* ▼ */
}

/* =====================================
   Concert - PC・Tablet大
===================================== */

@media (min-width: 769px) {
   /* ===== レイアウト ===== */
   /* レイアウト テキスト(.left)左　イメージ(.flyer)右 */
   .concert article {
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
      gap: 1.5em;
   }
   /* PCでは details は常に表示 */
   .concert .details {
      display: block;
   }

   /* PCではトグル無効化 */
   .concert .toggle-label::after {
      display: none;
   }
   .concert .toggle-label {
      pointer-events: none;
      cursor: default;
   }

   /* ===== flyer 共通 ===== */
   .concert article .flyer {
      text-align: right;
   }

   /* --- portrait　flyer 縦長画像（①②③）横並びで３枚目から折り返し --- */
   .flyer-portrait {
      display: flex;
      flex-direction: row;
      justify-content: flex-end; /* 右寄せ */
      flex-wrap: wrap;
      width: 210px; /* flyer 幅固定（PC用）3枚目から折り返すため */
      min-width: 210px;
      max-width: 210px;
      gap: 6px;
   }
   .flyer-portrait img {
      width: 100px; /* 画像幅固定（PC用） */
   }

   /* --- landscape　flyer 横長画像（④⑤）縦並び --- */
   .flyer-landscape {
      display: flex;
      flex-direction: column;
      align-items: flex-end;
      width: 210px; /* flyer 幅固定（PC用） */
      gap: 6px;
   }
   .flyer-landscape img {
      width: 141px; /* 画像幅固定（PC用） */
   }

   /* --- free　大きな画像はflyer-freeで自由に設定する（⑥） --- */
   .flyer-free {
      width: 200px;
   }
   .flyer-free img {
      width: 100%;
   }

   /* ===== 装飾（日付・時間・場所）（PC) ===== */
   .concert .date {
      display: inline-block;
      font-weight: bold;
      font-size: 1.1rem;
      margin-right: 1em;
      letter-spacing: 0.1rem;
   }
   .concert .title {
      font-weight: bold;
      margin-top: 1rem;
   }
   .concert .date-place {
      /* line-height: 1; */
      margin: 0;
   }
   .tel-link {
      font-size: 1.1em; /* 少し大きく */
      pointer-events: none; /* ←クリック無効 */
      cursor: default; /* 手のマーク消す */
      color: #333;
      padding-right: 1rem;
   }
}

/* ==== tablet大（769〜960px）差分のみ、フライヤー画像設定 ==== */
@media (min-width: 769px) and (max-width: 960px) {
   article {
      display: flex;
   }
   article .left {
      flex: 1;
      min-width: 0;
   }
   .flyer-portrait {
      flex: 0 0 auto; /* 伸びるか　縮むか　基準値 */
      width: auto;
      min-width: auto;
      max-width: 210px;
   }
   .flyer-portrait img {
      /* width: clamp(3.125rem, -1.908rem + 10.47vw, 4.375rem); 769幅50px〜960幅70px */
      width: clamp(50px, 7vw, 70px);
   }
   /* 画像を伸び縮み（tablet大） */
   .flyer-landscape img {
      width: clamp(4.375rem, -2.922rem + 15.18vw, 6.188rem); /* 769幅70px〜960幅99px */
   }
   /* 大きな画像はここで自由に設定する */
   .flyer-free img {
      width: clamp(6.25rem, -6.332rem + 26.18vw, 9.375rem); /* 769幅100px〜960幅150px */
   }
}

/* =====================================
   Concert - SP
===================================== */

@media (max-width: 768px) {
   /* 枠外の背景色 */
   .concert {
      background-color: #f1f3fa;
   }
   /* 枠内は白背景 */
   .concert .inner {
      background-color: white;
   }
   .concert article {
      display: block;
   }

   /* 初期状態：詳細と画像は非表示 */
   .concert .details,
   .concert .flyer {
      display: none;
   }

   /* チェック時のみ表示 */
   .toggle-input:checked ~ .left .details {
      display: block;
   }

   .toggle-input:checked ~ .flyer {
      display: flex;
   }

   /* ===== flyer 共通 ===== */
   .concert article .flyer {
      margin-top: 1.3rem;
   }

   /* --- portrait　flyer 縦長（SP）　縦長は横並び３枚目から折り返し（①②③） --- */
   .concert article .flyer-portrait {
      flex-direction: row;
      flex-wrap: wrap;
      gap: 6px;
   }
   .concert article .flyer-portrait img {
      width: 37vw; /* 画像幅固定（SP用） */
   }

   /* --- landscape　flyer 横長（SP）（④⑤） --- */
   .concert article .flyer-landscape {
      flex-direction: column;
      gap: 6px;
   }
   .concert article .flyer-landscape img {
      width: 52vw; /* 画像幅固定（SP用） */
   }

   /* --- free　大きな画像 都度自由に変更 --- */
   .flyer-free {
      width: 100%;
   }
   .flyer-free img {
      width: 50vw;
   }

   /* ===== 装飾（日付・時間・場所）（SP) ===== */
   .concert .date {
      display: inline-block;
      font-weight: bold;
      font-size: 1.05rem;
      margin-right: 0.5rem;
      letter-spacing: 0.1rem;
   }
   .concert .title {
      font-weight: bold;
      margin-top: 1rem;
      margin-bottom: 0.5rem;
      line-height: 1.2;
   }
   .concert .date-place {
      line-height: 1.7;
      margin: 0;
   }
   /* 最後のarticle下だけmargin-bottomトル */
   .concert article:last-child {
      /* border-bottom: none; */
      padding-bottom: 0;
   }
   /* 基本（スマホ優先）＝電話発信OK */
   .tel-link {
      /* color: inherit; */
      text-decoration: none;
      padding-right: 0.5rem;
   }

   .concert .description p {
      color: rgb(119, 66, 17);
      line-height: 1.3;
      margin: 0.6rem 0 0.6rem 0;
   }
}

/* ==== SP横向き667px〜tablet小768px 差分のみ　フライヤー画像設定 ==== */
@media (min-width: 667px) and (max-width: 768px) {
   .concert article .flyer-portrait img {
      width: 30vw; /* 画像幅固定（SP横向き〜tablet小用） */
   }
   .concert article .flyer-landscape {
      flex-direction: row;
      flex-wrap: wrap;
      gap: 6px;
   }
   .concert article .flyer-landscape img {
      width: 42vw; /* 画像幅固定（SP横向き〜tablet小用） */
   }
}

/* =====================================
   Banner1（スマホ）
===================================== */
.banner1 img {
   width: 100%;
}

@media (min-width: 667px) and (max-width: 768px) {
   .banner1 .inner {
      display: flex;
      justify-content: space-between;
      padding: 0;
      gap: 1em;
   }
   .banner1 .inner p {
      width: 50%;
   }
}

/* =====================================
   Banner2（スマホ）
===================================== */
.banner2 .inner {
   display: flex;
   justify-content: space-between;
   padding: 0;
   gap: 1em;
}
.banner2 .inner p {
   width: 50%;
}

/* =====================================================
   movieセクション
   ・PC：サムネクリックでYouTube遷移（軽量）
   ・SP：iframeスライド再生
   ・動画追加は thumb ブロックをコピペ
===================================================== */

/* =====================================
   共通
===================================== */

.movie .inner {
   padding: 0 1.3rem;
}

.movie-slider {
   position: relative;
}

/* Swiper全体の表示領域を制限 */
.movie .swiper-container {
   overflow: hidden;
   width: 100%;
}

.movie .swiper-wrapper {
   width: 100%;
}

/* 動画タイトル */
.movie .swiper-wrapper h4 {
   font-size: 0.8rem;
   font-weight: normal;
   color: #666;
   margin-bottom: 0;
   text-align: center;
}

/* サムネ画像 */
.movie .swiper-slide img {
   width: 100%;
   max-width: 256px; /* 画面幅とこの幅により表示枚数が決まる 255*/
   padding: 3px 0;
   opacity: 0.9;
}

/* each slide now contains a single thumbnail; center it */
.movie .swiper-slide {
   display: flex;
   justify-content: center;
}

/* thumbnail spacing: 12px gap between images */
.movie .swiper-slide .thumb {
   /* add horizontal padding instead of margin to keep slides centered */
   padding: 0 6px;
}

/* サムネラベル（Newなど） */

/* thumb 要素自体を基準にしてラベルを絶対配置
   （以前は .slide-inner 内にあったが構造変更されたため汎用に） */
/* for labeling, wrap image in .img-wrap and position relative there */
.movie .img-wrap {
   position: relative;
   display: inline-block; /* shrink to image size */
}

.movie .thumb-label {
   position: absolute;
   top: 3px;
   left: 0;
   background-color: #ff4b4b;
   color: #fff;
   font-size: 12px;
   padding: 2px 6px;
   border-radius: 2px;
   z-index: 2;
}

/* =====================================
   矢印ボタン 共通
===================================== */

.movie .movie-prev,
.movie .movie-next {
   position: absolute;
   border-radius: 50%;
   background: rgba(255, 255, 255, 0.9);
   border: 1px solid #ccc;
   cursor: pointer;
   z-index: 10;
}

/* 矢印中身 */
.movie .movie-prev::before,
.movie .movie-next::before {
   content: '';
   display: block;
   width: 10px;
   height: 10px;
   border-top: 2px solid #666;
   border-right: 2px solid #666;
}

/* =====================================
   PC・Tablet大（769px〜）
===================================== */

@media (min-width: 769px) {
   /* 矢印サイズ */
   .movie .movie-prev,
   .movie .movie-next {
      top: 60%;
      transform: translateY(-60%);
      width: 40px;
      height: 40px;
   }

   .movie .movie-prev {
      left: -23px; /* ← 画像の外側に出したい場合はマイナス */
   }

   .movie .movie-next {
      right: -23px;
   }

   /* 右矢印 */
   .movie .movie-next::before {
      transform: rotate(45deg);
      position: absolute;
      left: 12px;
      top: 14px;
   }
   /* 左矢印 */
   .movie .movie-prev::before {
      transform: rotate(-135deg);
   }

   /* hover */
   .movie .movie-prev:hover,
   .movie .movie-next:hover {
      background: #fff;
      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
   }
}

@media (min-width: 769px) and (max-width: 960px) {
   /* 中サイズでは2つずつ表示するためスライド設定で対応 */
   /* サムネイルの最大幅を解除して横幅を広げる */
   .movie .swiper-slide img {
      max-width: none;
   }
}

/* =====================================
   SP & Tablet小（〜768px）
===================================== */

@media (max-width: 768px) {
   /* 全体余白 */
   .movie .inner {
      padding: 0;
   }

   /* Swiperのズレ防止（SP） */
   .movie .swiper-container {
      width: 100%;
      box-sizing: border-box;
   }

   .movie .swiper-slide {
      width: 100%; /* Swiperの自動計算を安定させる */
      box-sizing: border-box;
   }

   .movie-slider {
      position: relative;
      width: 100%;
   }

   /* ===== iframe ラッパー ===== */
   .movie .video-wrap {
      position: relative;
      width: 100%;
      margin: 0 auto; /* 念のため */
      box-sizing: border-box;
      aspect-ratio: 16 / 9; /* 横動画基準 */
      max-height: 70vh; /* 縦動画が大きくなりすぎない */
      background: #000; /* 縦動画時の余白 */
      overflow: hidden;
   }

   .movie .video-wrap iframe {
      width: 100%;
      height: 100%;
      border: none;
   }

   /* ラベル */
   .movie .video-wrap .thumb-label {
      position: absolute;
      top: 0;
      left: 0;
      background-color: #ff4b4b;
      color: #fff;
      font-size: 12px;
      padding: 2px 6px;
      border-radius: 2px;
      z-index: 2;
   }

   /* ===== タイトル ===== */
   .video-title {
      font-size: 0.9rem;
      color: #666;
      margin: 0.4em 0 0;
      text-align: center;
   }

   /* ===== pagination ===== */

   .movie-swiper-sp-wrap {
      position: relative;
   }

   .movie .movie-pagination {
      text-align: center;
      margin-top: 0;
   }

   .swiper-pagination-bullet {
      width: 8px;
      height: 8px;
      background: #ccc;
      opacity: 1;
   }

   .swiper-pagination-bullet-active {
      background: #666;
   }

   /* ===== 矢印（SPは内側・押しやすく） ===== */
   .movie .movie-prev,
   .movie .movie-next {
      position: absolute;
      top: 45%;
      transform: translateY(-45%);
      z-index: 10;

      width: 50px;
      height: 50px;
      border-radius: 50%;
      background: rgba(255, 255, 255, 0.9);
      border: 1px solid #ccc;
      cursor: pointer;
   }

   .movie .movie-prev {
      left: -12px;
   }

   .movie .movie-next {
      right: -12px;
   }

   /* 矢印の中身 */
   .movie .movie-prev::before,
   .movie .movie-next::before {
      content: '';
      display: block;
      width: 10px;
      height: 10px;
      border-top: 2px solid #666;
      border-right: 2px solid #666;
   }

   .movie-prev::before {
      transform: rotate(-135deg);
      margin: 5px 5px;
   }

   .movie .movie-next::before {
      transform: rotate(45deg);
      margin: 5px 2px;
   }

   /* ===== movie SP ページネーション中央寄せ ===== */
   .movie .movie-slider.sp_only .movie-pagination {
      position: static; /* absolute を完全に無効化 */
      width: 100%;
      /* margin-top: 10px; */
      margin-top: 0;
      text-align: center;
   }

   .movie .movie-slider.sp_only .swiper-container-horizontal > .movie-pagination {
      bottom: auto;
      left: auto;
   }

   .movie .movie-slider.sp_only .swiper-pagination-bullet {
      margin: 0 8px;
   }
}

/* =====================================================
   sitemapセクション
   ・サイト全体導線
   ・4カラム構造
   ・SPは折返し表示
===================================================== */

/* =====================================
   共通
===================================== */

.sitemap .siteMap {
   background-color: #eee;
   border-radius: 2px;
}

.sitemap .siteMapTtl {
   margin-bottom: 20px;
   font-size: 1em;
}

.sitemap .siteMapTtl::before {
   content: '';
   display: inline-block;
   background-image: url(../image/logo_btn/i-sitemap.png);
   background-repeat: no-repeat;
   background-size: contain;
   vertical-align: middle;
   width: 25px;
   height: 20px;
   margin-right: 6px;
}

.sitemap ul {
   display: flex;
   justify-content: space-around;
   list-style: none;
   font-size: small;
   padding-left: 0;
   margin-bottom: 0;
}

.sitemap li {
   line-height: 1.8;
}

.sitemap li p {
   margin-bottom: 5px;
}

.sitemap .categ {
   border-left: 7px solid #b4b4f0;
   padding-left: 5px;
   margin-bottom: 10px;
}

.sitemap img {
   opacity: 0.6;
}

.sitemap p span {
   line-height: 1;
}

/* =====================================
   SP（〜768px）
===================================== */

@media (max-width: 768px) {
   .sitemap .siteMap {
      width: 100%;
      margin: 0 auto 1em;
   }
   .sitemap ul {
      position: relative;
      width: 100%;
      margin-left: 5px;
      display: flex;
      flex-direction: row;
      flex-wrap: wrap;
      justify-content: flex-start;
      gap: 1.5em;
   }

   .sitemap li {
      text-align: left;
      font-size: 14px;
      line-height: 2;
   }

   .sitemap .siteMapTtl {
      margin-left: 0;
      margin-bottom: 20px;
      text-align: left;
   }

   /* SPロゴ */
   .sitemap .logo img {
      position: absolute;
      bottom: 25px;
      right: 20px;
      width: 70px;
      opacity: 0.4;
   }

   .sitemap hr {
      margin-top: 0;
   }
}

/* =====================================================
   footer（全ページ共通）
===================================================== */
footer {
   text-align: center;
   font-size: 0.85rem;
   color: #777;
   margin-top: 0;
   margin-bottom: 1.5rem;
}

footer small {
   letter-spacing: 0.03em;
}

@media (max-width: 768px) {
   footer {
      margin-top: 0;
      margin-bottom: 1rem;
   }
}

@media (max-width: 768px) {
   .wrapper-haishin-store p {
      margin: 1rem 0;
   }
   .wrapper-haishin-store h2 {
      margin: 1.5rem 0;
   }
}
