@charset "UTF-8";

/* ------------------------------------------------------------
   1. CSS Reset & Base Styles (整理済み)
------------------------------------------------------------ */
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: baseline;
}

li {
  list-style: none;
}

/* リンクの基本スタイルに共通のトランジションを統合 */
a {
  color: #232323;
  /* outline: none; */
  /* opacityのトランジションは基本として残す */
  transition: opacity 0.5s;
  transition: 0.5s cubic-bezier(.215, .61, .355, 1);
  text-decoration: none;
}

img {
  width: 100%;
}

a:hover {
  opacity: .8;
}

.wrapper a {
  font-size: 90%;
  line-height: 1;
}

article,
aside,
details,
figcaption,
figure,
header,
hgroup,
menu,
nav,
section {
  display: block;
}

body,
html {
  /* ビューポート幅を超えるコンテンツによる横スクロールを完全に禁止 */
  overflow-x: hidden;
  /* (オプション) 横スクロールバーの出現による画面のズレを防ぐため */
  width: 100%;
}

/* bodyのフォントとアニメーションを整理・統合 */
body {
  line-height: 1;
  /* 冗長な記述を削除し、YakuHanJPを優先する最終のfont-familyを採用 */
  font-family: YakuHanJP, "dnp-shuei-gothic-kin-std", "游ゴシック", "Yu Gothic", "ヒラギノ角ゴ Pro W6", "Hiragino Kaku Gothic Pro", Meiryo, "Meiryo UI", "メイリオ", Meiryo, "ＭＳ Ｐゴシック", "MS PGothic", "Helvetica Neue", Helvetica, Arial, Verdana, Roboto, sans-serif;
  /* font-feature-settingsを統合 */
  font-feature-settings: "palt";
  color: #232323;
  font-size: 62.5%;
  background-size: 200% 200%;
  animation: bggradient 20s ease infinite, fadeIn 2s ease 0s 1 normal;

  /* 全体背景を明るいグレーに変更 */
  background-color: #f6f6f6;
  /* アニメーションを統合 */
}

/* body.no-scroll はそのまま */
body.no-scroll {
  overflow: hidden;
  position: fixed;
  width: 100%;
}

footer {
  text-align: center;
  padding: 1.5em 0;
  color:  #fff;
  background-color: #436c88;
}



/* Safari/iOS のボタン・入力欄の装飾をリセット */
a, button, input, select, textarea {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}

/* 画像のレンダリングをスムーズにする */
img {
  -webkit-print-color-adjust: exact;
  vertical-align: middle;
}



/* ------------------------------------------------------------
   2. Animations
------------------------------------------------------------ */

/* @keyframes は透明度の変化のみを残す */
@keyframes focusInAnime {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

.fadeUp {
  /* 透明度のアニメーションを適用 */
  animation-name: focusInAnime;
  animation-duration: 1.0s;
  /* ふわっとさせるため、長めの時間を推奨 */
  animation-fill-mode: forwards;
}

.fadeUpTrigger {
  opacity: 0;
  filter: blur(8px);
  /* ぼかしの強さ (値は調整可) */

  transition: opacity 1.0s ease, filter 1.0s ease;


}

.fadeUpTrigger.fadeUp {
  opacity: 1;
  filter: blur(0);
  /* ぼかしを解除し、フォーカスを合わせる */
}

/* ------------------------------------------------------------
   3. Preloader & Navigation
------------------------------------------------------------ */
.start {
  background: #fff;
  position: fixed;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  z-index: 9000;
}

.start p {
  position: fixed;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  display: none;
  z-index: 9999;
  width: 150px;
}

#g-nav {
  position: fixed;
  z-index: 999;
  top: 0;
  right: -120%;
  width: 500px;
  height: 100vh;
  background: rgba(255, 255, 255, .95);
  transition: all 0.6s;
}

#g-nav.panelactive {
  right: 0;
}

#g-nav-list {
  padding: 0;
}

#g-nav ul {
  position: absolute;
  z-index: 999;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100%;
}

#g-nav li {
  list-style: none;
}

/* カスタムトランジションを個別に維持 */
.g-nav-list-main {
  font-family: "aviano", serif; /* セクションタイトルと整合 */
  color: #436c88;
  font-size: clamp(22px, 3.8vw, 40px);
  text-decoration: none;
  padding: .6em 0;
  margin: .25em 32px;
  display: block;
  text-align: center;
  letter-spacing: 0;
  -webkit-transition: all 0.45s cubic-bezier(.215, .61, .355, 1);
  transition: all 0.45s cubic-bezier(.215, .61, .355, 1);
  border-bottom: 1px solid rgba(67,108,136,0.06); /* subtle */
  line-height: 1;
} 

#g-nav li a:hover {
  opacity: .5;
}

.g-nav-list-sub {
  display: block;
  color: #232323;
  font-family: "Hiragino Kaku Gothic ProN", "Hiragino Kaku Gothic Pro", classico-urw, sans-serif;
  letter-spacing: .06em;
  font-size: 1rem;
  font-weight: 300;
  line-height: 1.45;
  text-align: center;
  max-width: 26em;
  margin: .25em auto 0;
} 

.g-nav-list-sub a:hover {
  opacity: .5;
}

/* ナビゲーション内のボタン中央寄せ設定 */
#g-nav .buttonIconText02 {
  margin: 50px auto;     /* 上下に50px、左右は自動（中央寄せ） */
  display: flex;         /* フレックスボックス化 */
  float: none;           /* 念のためフロート解除 */
  /* width: 100%; と max-width: 25em; は既存の .buttonIconText02 から継承されます */
}

/* ボタンを囲んでいる li も中央に揃える */
#g-nav ul li {
  display: flex;
  justify-content: center;
  width: 100%;
}


/* Hamburger Icon */
.openbtn {
  position: fixed;
  z-index: 1000;
  top: 30px;
  right: 30px;
  cursor: pointer;
  width: 50px;
  height: 50px;
  isolation: isolate;
  mix-blend-mode: exclusion;

}

.openbtn span {
  display: inline-block;
  transition: all 0.4s;
  position: absolute;
  left: 0;
  height: 1px;
  border-radius: 2px;
  width: 100%;

  /* ❗ 線の色を黒または濃い色に設定 */
  background: #fff;


}


.openbtn span:nth-of-type(1) {
  top: 12.5px;

}

.openbtn span:nth-of-type(2) {
  top: 25px;
}

.openbtn span:nth-of-type(3) {
  top: 37.5px;
}

.openbtn.active span:nth-of-type(1) {
  top: 18px;
  left: 18px;
  transform: translateY(6px) rotate(-45deg);
  width: 75%;
}

.openbtn.active span:nth-of-type(2) {
  opacity: 0;
}

.openbtn.active span:nth-of-type(3) {
  top: 30px;
  left: 18px;
  transform: translateY(-6px) rotate(45deg);
  width: 75%;
}

html {
  scroll-behavior: smooth;
}

/* Page Top Button */
.pagetop {
  height: 50px;
  width: 50px;
  position: fixed;
  right: 30px;
  bottom: 30px;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 2;
}

.pagetop__arrow {
  height: 25px;
  width: 25px;
  border-top: 1px solid #232323;
  border-right: 1px solid #232323;
  transform: translateY(20%) rotate(-45deg);
}

/* ------------------------------------------------------------
   4. Grid & Info Layouts
------------------------------------------------------------ */
.epilogueInfo__grid2 {
  display: grid;
  /* 1frを4回繰り返し、4列グリッドにする */
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
  align-items: start;
  /* margin: 0 auto; のスペースを修正 */
  margin: 0 auto;
  border-radius: 5px;
  /* padding: 24px; のコメントアウトはそのまま維持します */

  /* box-shadow: 0 0 10px rgba(0, 0, 0, 1); */
}

.epilogueInfo__grid4 {
  display: grid;
  /* 1frを4回繰り返し、4列グリッドにする */
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  align-items: start;
  /* margin: 0 auto; のスペースを修正 */
  margin: 0 auto;
  border-radius: 5px;
  /* padding: 24px; のコメントアウトはそのまま維持します */
}

.epilogueInfo__grid {
  display: grid;
  grid-template-columns: 2fr 3fr;
  gap: 0;
  align-items: start;
  background-color: #f6f6f6;
  margin: 0 auto;
  /* border-radius: 5px; */
  /* padding: 16px; */
  box-shadow: 0 0 20px rgb(183 183 183 / 50%);
  /* padding: 20px 0; */
}

.epilogueInfo__grid--youtube {
  display: grid;

  grid-template-columns: 1fr;

  /* 既存のスタイル */
  /* gap: 16px; */
  align-items: start;
  background-color: #f6f6f6;
  margin: 0 auto;
  box-shadow: 0 0 20px rgb(183 183 183 / 20%);
  mix-blend-mode: exclusion;
}

.epilogueInfo__img {
  position: relative;
  background-position: center;
  background-size: cover;
  width: 100%;
  aspect-ratio: 16/9;
  /* enforce 16:9 */
  overflow: hidden;
}

.epilogueInfo__grid--youtube .epilogueInfo__img {
  height: auto;
}

.epilogueInfo__grid2 li a {
  position: relative;
}

.enIcon {
  position: absolute;
  top: 24px;
  right: 24px;
  width: 100px;
  z-index: 50;
}


.epilogueInfo__grid {
  display: -webkit-flex; /* Safari対策 */
  display: flex;
  flex-wrap: nowrap;
  align-items: stretch;
  background-color: #f6f6f6;
  margin: 0 auto;
  box-shadow: 0 0 20px rgb(183 183 183 / 50%);
  overflow: hidden; /* はみ出し防止 */
}

.epilogueInfo__img {
  width: 40%; /* 2fr 相当 */
  flex-shrink: 0;
  position: relative;
  overflow: hidden;
}

.epilogueInfo__txt {
  width: 60%; /* 3fr 相当 */
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 48px 24px 24px 24px;
  box-sizing: border-box; /* paddingを含めた幅計算を統一 */
}



body {
  /* 文字のギザギザを抑え、両ブラウザで太さを近くする */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  /* 文字の自動拡大を防止（iOS Safari用） */
  -webkit-text-size-adjust: 100%;
}

/* 日本語フォントのカーニング（詰め）を統一 */
.epilogueInfo__f-txt, .epilogueInfo__f-ttl {
  font-feature-settings: "palt";
  letter-spacing: 0.05em;
}


.epilogueInfo__img--e01 {
  background-image: url(../img/e01.jpg);

}

.epilogueInfo__img--e02 {
  background-image: url(../img/e02.jpg);

}

.epilogueInfo__img--e03 {
  background-image: url(../img/e03.jpg);

}

.epilogueInfo__img--e04 {
  background-image: url(../img/e04.jpg);

}



/* Thumbnails: make the <img> fill the container and crop consistently */
.epilogueInfo__img img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  /* crop to maintain aspect */
}

.epilogueInfo__txt {
  display: grid;
  grid-auto-flow: column;
  grid-template-rows: repeat(2, auto);
  grid-auto-columns: minmax(0, 1fr);
  padding: 48px 24px 24px 24px;
  height: 100%;
}

/* .epilogueInfo__f {
  background: #fff;
  border-radius: 5px;
} */




.epilogueInfo__click {
  display: flex;
  align-items: flex-end;
  justify-content: flex-end;
  margin: 2em 0 0 0;
}

.epilogueInfo__click span {
  padding: .5em calc(2em - 5px) .5em 2em;
  border: .5px solid #666;
  border-radius: 5em;

}


.epilogueInfo__click span::before {
  content: "VIEW MORE";
  color: #666;
  font-family: neue-haas-grotesk-display, "Helvetica Neue", Helvetica, "游ゴシック", "Yu Gothic", "ヒラギノ角ゴ Pro W6", "Hiragino Kaku Gothic Pro", Meiryo, "Meiryo UI", "メイリオ", Meiryo, "ＭＳ Ｐゴシック", "MS PGothic", Arial, Verdana, sans-serif;
  font-weight: 200;
  margin: .5em 0 0;
  font-size: 10px;
}

.epilogueInfo__click span::after {
  content: " >";
  text-align: center;
  color: #666;
  font-family: neue-haas-grotesk-display, "Helvetica Neue", Helvetica, "游ゴシック", "Yu Gothic", "ヒラギノ角ゴ Pro W6", "Hiragino Kaku Gothic Pro", Meiryo, "Meiryo UI", "メイリオ", Meiryo, "ＭＳ Ｐゴシック", "MS PGothic", Arial, Verdana, sans-serif;
  font-weight: 200;
  margin: 0 0 .1em .5em;
  line-height: 1;
  font-size: 10px;
}

a:hover .epilogueInfo__click span {
  background-color: #232323;
  transition: 0.5s cubic-bezier(.215, .61, .355, 1);
}

a:hover .epilogueInfo__click span::before {
  color: #fff;
}

a:hover .epilogueInfo__click span::after {
  color: #fff;
}



.epilogueInfo__f-icon {
  line-height: 1;
  color: #232323;
  font-size: 10px;
}

.epilogueInfo__f-icon__web {
  color: #fff;
  background-color: transparent;
  padding: 4px 16px;
  margin: 0 1em 0 0;
  border-radius: 16px;
  font-size: 10px;
  border: 1px solid rgba(0, 0, 0, 0.08);
    background-color: #232323;

}

.epilogueInfo__f-icon__shop {
   color: #fff;
  background-color: transparent;
  padding: 4px 16px;
  border-radius: 16px;
  border: 1px solid rgba(0, 0, 0, 0.06);
  background-color: #232323;
}

.epilogueInfo__f-txt {
  color: #232323;
  font-weight: 200;
  font-size: 24px;
  letter-spacing: .15em;
  margin: 2em 0 0 0;
  line-height: 1;
  letter-spacing: -.01em;

    line-height: 1.45;
    font-size: 1.35rem;
    font-weight: 300;
    font-style: normal;
    letter-spacing: .06em;
    color: #232323;
    font-family: "Hiragino Kaku Gothic ProN", "Hiragino Kaku Gothic Pro", classico-urw, sans-serif;
    font-family: classico-urw, sans-serif;




}

.epilogueInfo__f-ttl {
  color: #666;
  font-family: neue-haas-grotesk-display, "Helvetica Neue", Helvetica, "游ゴシック", "Yu Gothic", "ヒラギノ角ゴ Pro W6", "Hiragino Kaku Gothic Pro", Meiryo, "Meiryo UI", "メイリオ", Meiryo, "ＭＳ Ｐゴシック", "MS PGothic", Arial, Verdana, sans-serif;
  font-weight: 300;
  margin: .5em 0 2em 0;
  font-size: 14px;
  height: 2em;
  line-height: 1.25;
}

.epilogueInfo__f-dl {
  margin: 1em 0;
  height: 5em;
}

.epilogueInfo__f-dt-sub {
  /* letter-spacing: -.01em; */
  font-family: neue-haas-grotesk-display, "Helvetica Neue", Helvetica, "游ゴシック", "Yu Gothic", "ヒラギノ角ゴ Pro W6", "Hiragino Kaku Gothic Pro", Meiryo, "Meiryo UI", "メイリオ", Meiryo, "ＭＳ Ｐゴシック", "MS PGothic", Arial, Verdana, sans-serif;
  color: #232323;
  padding-bottom: .75em;
  font-size: 12px;
  font-weight: 700;
  line-height: .9;

}

.epilogueInfo__f-dd {
  letter-spacing: .025em;
  padding-bottom: .5em;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.5;
  width: 50em;
  max-width: 100%;
  color: #666;

  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  flex-wrap: wrap;
}

.epilogueInfo__f-dd span:nth-child(1) {
  display: inline-block;
  /* padding: 0 1em 0 0; */
  width: 100%;
}

.epilogueInfo__f-dd span:nth-child(2) {
  display: inline-block;
  padding: 0 1em 0 0;
  /* width: 60%; */
}

/* ------------------------------------------------------------
   5. Read More & Buttons
------------------------------------------------------------ */
/* Button Icon Text 02 (カスタムトランジションは個別に維持) */
.buttonIconText02 {
  text-decoration: none;
  display: flex;
  gap: 8px;
  align-items: center;
  width: 100%;
  max-width: 25em;
  height: 48px;
  padding: 8px 64px 8px 8px;
  margin: 2.5em 0 0;
  font-family: sans-serif;
  font-size: 16px;
  color: #232323;
  text-align: center;
  overflow-wrap: anywhere;
  background-color: #f6f6f6;
  border: .5px solid #9c9c9c;
  border-radius: 32px;
}

.buttonIconText02__reverse {
  flex-direction: row-reverse;
  padding: 8px 8px 8px 64px;
}

.buttonIconText02_icon {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  width: 48px;
  aspect-ratio: 1;
  overflow: hidden;
}

.buttonIconText02_text {
  flex-shrink: 1;
  width: 100%;
}

@media (any-hover:hover) {

  /* トランジションを統合・整理 */
  .buttonIconText02 {
    -webkit-transition: all 0.5s cubic-bezier(.215, .61, .355, 1);
    transition: all 0.5s cubic-bezier(.215, .61, .355, 1);
  }

  .buttonIconText02_icon {
    transition: transform 0.2s;
  }

  .buttonIconText02:hover {
    background-color: #fff;
  }

  .buttonIconText02:hover .buttonIconText02_icon {
    transform: translateX(4px);
  }

}

/* ========================================= */
/* 1. HERO SECTION & BACKGROUND FADE IN */
/* ========================================= */
.heroImage {
  width: 100vw;
  height: 100vh;
  height: calc(var(--vh, 1vh) * 100);
  /* ❗ JSで修正した安定高さを適用 */
  position: relative;
  /* ヒーローは白をフォールバック */
  background-color: #ffffff;
  overflow: hidden;
  isolation: isolate;
  box-shadow: 0 0 30px rgba(202, 196, 171, 0.7);
  z-index: 100;
}

/* 背景画像を覆う黒いオーバーレイ要素（上部は透け、下部が控えめに暗くなるグラデーション） */
.heroImage::before {
  content: "";
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;

  /* ヒーロー上の影を控えめに調整 */
  background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.06) 50%, rgba(0, 0, 0, 0.12) 100%);
  opacity: 1;
  z-index: 2;
  pointer-events: none;

  /* 徐々に表示させるアニメーション */
  animation: backgroundReveal 5s ease-out forwards;
  animation-delay: .75s;
  transform: none;
}

.heroImage::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background-image: url(../img/top-pc.jpg);
  background-size: cover;
  background-position: center;
  /* 背景を明るくするフィルター */
  filter: brightness(1.12);
  transform: translate3d(0, calc(var(--hero-parallax, 0px) * 0.15), 0) scale(1.02);
  transition: transform 0.15s linear;
  will-change: transform;
  animation: backgroundZoomScale 5s ease-out forwards;
}

/* ❗ 新規: transform: scale() で拡大アニメーション */
@keyframes backgroundZoomScale {
  from {
    /* わずかに縮小した状態からスタート */
    transform: scale(1.0);
  }

  to {
    /* 0.5% 拡大 */
    transform: scale(1.005);
  }
}

/* オーバーレイを静かにフェードアウト */
@keyframes backgroundReveal {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

/* ❗ @keyframes warpEffect は完全に削除されています */

/* タイトル要素 (最前面、中央配置) */
.heroImage__title {
  width: 80%;
  /* ロゴを大きくするためにコンテナの最大幅を拡大 */
  max-width: 1100px;
  position: absolute;
  top: 45%;
  left: 50%;
  z-index: 100;
  transform: translate(-50%, -50%);
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  /* 通常表示に戻す（差分反転を解除） */
  mix-blend-mode: normal;
  isolation: isolate;
}

/* ロゴの光彩を適用するラッパー */
.logo-wrapper {
  filter: none;
  animation: none;
}

.heroImage__title img {
  /* メインロゴをかなり大きくする */
  width: clamp(360px, 70vw, 1000px);
  height: auto;
  display: block;
  margin: 0 auto;
  /* box-shadow: 0 0 50px rgba(0, 0, 0, 0.7); */
  /* filter: brightness(100); */
  /* もしSVGが黒い場合、これを適用して白にする */

  /* 脈打ちアニメーション */
  /* animation: subtleFlicker 3s infinite ease-in-out; */
}


/* ========================================= */
/* SCROLL DOWN INDICATOR (全体) */
/* ========================================= */
.scroll_down {
  display: block;
  left: 0;
  right: 0;
  text-align: center;
  bottom: 50px;
  position: absolute;

  /* 初期状態を透明にする */
  opacity: 0;

  /* 2秒後から1.5秒かけてフェードイン */
  animation: fadeIn 2s ease-out forwards;
  animation-delay: 3s;
  z-index: 100;
}

/* SCROLL テキスト */
.scroll_down p {
  letter-spacing: .1vw;
  color: #f6F6F6
}

/* マウスアイコンのフレーム */
.scroll_down .mouse {
  position: relative;
  display: block;
  width: 35px;
  height: 55px;
  margin: 0 auto 10px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  /* border: .5px solid #fff; */
  border-radius: 23px;
  box-shadow: 0 0 15px rgba(255, 255, 255, 0.7);
}

/* ❗ マウス内の円 (アニメーションを適用) */
.scroll_down .mouse>* {
  position: absolute;
  display: block;
  top: 29%;
  left: 50%;
  width: 8px;
  height: 8px;
  margin: -4px 0 0 -4px;
  background: #f6F6F6;
  border-radius: 50%;

  /* ❗ 修正: アニメーション設定を追加 */
  opacity: 0;
  animation: ani-mouse 4s ease-in-out infinite;
  /* 2s遅延 + 1.5sフェードイン + 0.1s余裕 = 3.6s後に開始 */
  animation-delay: 3s;
  animation-fill-mode: both;
}

/* ========================================= */
/* KEYFRAMES */
/* ========================================= */

/* .scroll_down 全体のフェードイン */
@keyframes fadeIn {
  to {
    opacity: 1;
  }
}

/* マウス内の円のスムーズな上下移動 */
@keyframes ani-mouse {

  /* 0% (上端): 透明から開始 */
  0% {
    opacity: 0;
    top: 30%;
  }

  /* 15%: 不透明になり、動きを開始 */
  15% {
    opacity: 1;
    top: 30%;
  }

  /* 85%: マウス下端付近まで移動し、不透明を維持 */
  85% {
    opacity: 1;
    top: 70%;
  }

  /* 100% (下端): 透明になり、リセット */
  100% {
    opacity: 0;
    top: 70%;
  }
}

/* ----------------------------------------- */
/* @KEYFRAMES */
/* ----------------------------------------- */

/* 背景フェードインと暗化 (1.0 -> 0.75) */
@keyframes backgroundFadeInAndDarken {
  from {
    opacity: 1;
  }

  to {
    opacity: 0.75;
  }
}

/* 控えめな脈打ち (subtleFlicker) */
@keyframes subtleFlicker {

  0%,
  100% {
    opacity: 1;
    transform: none;
  }

  50% {
    opacity: 0.95;
  }
}



/* Epilogue Section */
/* 背景色を統合 */





/* 奇数番目の .epilogue （1, 3, 5, ...）*/
.epilogueWarp:nth-child(odd) {
  /* 明るいグレーに統一 */
  background-color: #f6f6f6;
}

/* 偶数番目の .epilogue （2, 4, 6, ...）*/
.epilogueWarp:nth-child(even) {
  background-color: #ffffff;
}


.epilogueWarp--img {
  /* このセレクタは例です。背景画像は不要になったため無効化しています */
  width: 100%;
  /* height: 100vh; */
  background-image: none;
  /* background-size: cover;
  background-position: center;
  background-repeat: no-repeat; */
  position: relative;
  /* 擬似要素をこの要素の基準で配置するために必要 */
  /* 明るい背景を優先するため、背景色は継承またはデフォルトを使用 */
  background-color: transparent;
  /* 画像がないため明示的な色は不要 */
}

/* 背景画像の上にオーバーレイを作成する擬似要素 */
.epilogueWarp--img::before {
  /* または ::after */
  content: "";
  /* 擬似要素には content が必須 */
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  /* 背景画像を削除したためオーバーレイも無効化 */
  background-color: transparent;
  mix-blend-mode: normal;
  pointer-events: none;
  /* オーバーレイがクリックを邪魔しないように */
}



.epilogue {
  max-width: 100rem;
  margin: 0 auto;
  padding: 200px 20px calc(10vw + 50px);
}




.epilogueTtlWarp {
  text-align: center;
  padding: 0 0 7.5em;
}

.epilogueTtlWarp--mt {
  text-align: center;
  margin-top: 7.5em;
}



.epilogueTtl {
  font-family: "aviano", serif;
  font-size: 40px;
  font-weight: 300;
  font-style: normal;
  letter-spacing: 0;
  /* タイトルとサブタイトルの間に余白を追加 */
  margin: 0 0 1rem 0;
  color: #436c88;
}

.epilogueTtlSub {
  /* 上品でわかりやすい見出し（装飾を削除） */
  display: block;
  margin-top: 0.6rem;
  /* タイトルとのスペース確保 */
  line-height: 1.45;
  font-size: 1.35rem;
  /* 控えめに調整 */
  font-weight: 300;
  /* 強すぎない太さ */
  font-style: normal;
  letter-spacing: .06em;
  color: #232323;
  /* 少し柔らかめの白 */
  font-family: "Hiragino Kaku Gothic ProN", "Hiragino Kaku Gothic Pro", classico-urw, sans-serif;
  font-family: classico-urw, sans-serif;
}

/* ----------------------------- */
/* YouTube embed (フル幅表示：横いっぱい) */
/* ----------------------------- */
.videoIntro {
  width: 100vw;
  position: relative;
  left: 50%;
  margin-left: -50vw;
  margin-right: -50vw;
  padding: 2.0em 0;
  background-color: transparent;
  text-align: center;
}

/* 内部のラッパーは最大幅で中央に配置 */
.videoIntro .videoWrapper {
  max-width: 1100px;
  width: 100%;
  margin: 0 auto;
  position: relative;
  aspect-ratio: 16/9;
  /* modern browsers */
  /* padding-top: 56.25%;  */
  /* border-radius: 12px; */
  overflow: hidden;
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.08);
}

.videoWrapper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

/* サムネイルオーバーレイ（疑似 YouTube サムネイル） */
.videoThumbOverlay {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  cursor: pointer;
  display: block;
  z-index: 6;
  transition: opacity .18s ease;
}

/* アクセシビリティ：フォーカス時のアウトライン */
.videoThumbOverlay:focus {
  outline: 3px solid rgba(66, 133, 244, 0.36);
  outline-offset: 3px;
}

/* 再生ボタンの擬似要素 */
.videoThumbOverlay::after {
  content: '';
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.45);
  display: block;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);
}

.videoThumbOverlay::before {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-42%, -50%);
  width: 0;
  height: 0;
  border-left: 20px solid #fff;
  border-top: 12px solid transparent;
  border-bottom: 12px solid transparent;
}

.videoCaption {
  font-size: 14px;
  color: #666;
  margin-top: .5em;
  text-align: center;
}

@media (max-width: 768px) {
  .videoIntro {
    width: 100%;
    left: 0;
    margin-left: 0;
    margin-right: 0;
    padding: 1em 0;
  }

  .videoIntro .videoWrapper {
    border-radius: 6px;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.06);
    width: 100%;
  }
}

.epilogueTxt {
  max-width: 914px;
  font-size: 14px;
  font-weight: 300;
  font-style: normal;
  /* text-align: justify; */
  letter-spacing: .05em;
  line-height: 1.9;
  /* padding: 50px 0 0; */
  margin: 24px auto 0;
  color: #232323;

}

.epilogueTxt__list {
  max-width: 100%;
}

.epilogueTxt--sub {
      display: block;
    margin-top: 0.6rem;
    line-height: 1.45;
    font-size: 1.35rem;
    font-weight: 300;
    font-style: normal;
    letter-spacing: .06em;
    color: #232323;
    font-family: classico-urw, sans-serif;
}


.infoWarp {
  font-size: 14px;
  line-height: 2;
  margin: 0 auto;
}

.blandList {
  display: grid;
  grid-template-columns: repeat(6, minmax(72px, 1fr));
  gap: 8px;
  margin: 0 auto;
  /* width: min(1100px, 100%); */
  /* padding: 0 16px; */
  box-sizing: border-box;
}

.blandList li {
  list-style: none;
  padding: clamp(6px, 0.6vw, 12px);
  display: flex;
  align-items: center;
  justify-content: center;
  /* border: 1px solid rgba(0, 0, 0, 0.08); */
  border-radius: 8px;
}

.blandList li img {
  width: 100%;
  height: auto;
  object-fit: contain;
  filter: grayscale(10%);
  transition: transform 0.25s ease, filter 0.25s ease;
}

.blandList li:hover img {
  filter: none;
  transform: scale(1.03);
}

@media (max-width: 1200px) {
  .blandList {
    grid-template-columns: repeat(6, minmax(72px, 1fr));
  }
}

@media (max-width: 900px) {
  .blandList {
    grid-template-columns: repeat(4, minmax(90px, 1fr));
    gap: 12px;
  }
}

@media (max-width: 560px) {
  .blandList {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
    gap: 8px;
  }

  .blandList li {
    padding: 10px;
  }
}

/* ----------------------------------------------------------------- */
/* 中央配置の修正 (div要素にテキスト配置を指示) */
/* ----------------------------------------------------------------- */
.blandList__click {
  margin: 50px auto;
  /* ❗ 変更点: 親divに中央寄せを指示 */
  text-align: center;
  /* aタグがインライン要素なので、width: auto のまま中央寄せできる */
}

/* ----------------------------------------------------------------- */
/* リンク要素 (a) のスタイル */
/* ----------------------------------------------------------------- */
.blandList__click a {
  /* ❗ 変更点: aタグはデフォルトでインライン要素なので、幅はコンテンツに限定されます。*/
  /* 明示的に inline-block にして、paddingなどが予期せぬ影響を与えないようにします。 */
  display: inline-block;
}

/* ----------------------------------------------------------------- */
/* ボタン本体 (span) のスタイル */
/* ----------------------------------------------------------------- */
.blandList__click span {
  display: inline-block;
  /* ... 既存の padding, border, transition, box-shadow, color スタイルはそのまま利用 ... */
  padding: 1em calc(3em - 0.7em) 1em 3em;
  border: .5px solid #666;
  border-radius: 5em;
  transition: background-color 0.5s cubic-bezier(.215, .61, .355, 1);
  box-shadow: 0 0 12px rgba(0, 0, 0, 0.06);
  color: #232323;
}

/* ----------------------------------------------------------------- */
/* ❗ ホバー時の色反転 (親要素 a:hover をトリガーにする) */
/* ----------------------------------------------------------------- */

/* ホバーのトリガーを a:hover に設定し、その中の span の色を変える */
.blandList__click a:hover span {
  /* 背景を黒、境界線を黒にする */
  background-color: #232323;
  border-color: #232323;
}

/* ホバー時に::before (VIEW MORE) の色を白に反転させる */
.blandList__click a:hover span::before {
  color: #fff;
}

/* ホバー時に::after ( > ) の色を白に反転させる */
.blandList__click a:hover span::after {
  color: #fff;
}

/* ... ::before, ::after の定義も必要に応じて a:hover span::before/after に変更 ... */



/* ----------------------------------------------------------------- */
/* VIEW MORE 文字 (::before) のスタイル */
/* ----------------------------------------------------------------- */
.blandList__click span::before {
  content: "VIEW MORE";
  /* 現在のボタンの色が白と黒の反転で設定されている場合は、
     初期の文字色をボタンの背景色と反対の色に設定する必要があります。
     ここでは、初期設定（ホバー前）の文字色として #232323 を採用します。 */
  color: #232323;
  font-family: classico-urw, sans-serif;
  font-weight: 200;
  /* margin-top はインライン要素には影響が少ないため、調整が必要な場合は display: inline-block と vertical-align を使用します。*/
  /* margin: .5em 0 0; */
  font-size: 12px;
  /* ホバーアニメーションのトランジションを文字色に設定 */
  transition: color 0.5s cubic-bezier(.215, .61, .355, 1);
}

/* ----------------------------------------------------------------- */
/* 矢印文字 (::after) のスタイル */
/* ----------------------------------------------------------------- */
.blandList__click span::after {
  content: " >";
  /* color も #666 に設定 */
  color: #232323;
  /* text-align: center; はインライン要素には無効なので削除を推奨 */
  /* text-align: center; */
  font-family: classico-urw, sans-serif;
  font-weight: 200;
  /* line-height 調整とマージンを整理 */
  margin: 0 0 .1em .5em;
  line-height: 1;
  font-size: 14px;
  /* ホバーアニメーションのトランジションを文字色に設定 */
  transition: color 0.5s cubic-bezier(.215, .61, .355, 1);
}

@media (max-width: 600px) {
  .heroImage__title {
    width: 100%;
    padding: 0 20px;
    top: 48%;
  }

  .heroImage__title img {
    /* モバイルでもかなり大きめに表示 */
    width: min(98vw, 560px);
  }

  .epilogue {
    padding: 140px 16px 120px;
  }

   .epilogueInfo__grid {
    flex-direction: column;
  }
  .epilogueInfo__img,
  .epilogueInfo__txt {
    width: 100%;
    flex: none;
  }
  .epilogueInfo__txt {
    padding: 24px;
  }
}





/* ============================================================
   Epilogue Info Card（Safariの画像下余白対策：安定版）
   ============================================================ */

/* 2カラムカード：GridではなくFlexで統一（定義の重複を排除） */
.epilogueInfo__grid {
  display: -webkit-flex;
  display: flex;
  flex-wrap: nowrap;
  align-items: flex-start;      /* ← stretch をやめる（Safariのズレ予防） */
  background-color: #f6f6f6;
  margin: 0 auto;
  box-shadow: 0 0 20px rgb(183 183 183 / 50%);
  overflow: hidden;
}

/* 左：画像エリア（16:9固定を padding-top 方式に） */
.epilogueInfo__img {
  width: 40%;
  flex: 0 0 40%;
  position: relative;
  overflow: hidden;

  /* 背景画像の基本設定 */
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
}

/* 16:9 の高さを作る（Safariでも確実） */
.epilogueInfo__img::before {
  content: "";
  display: block;
  padding-top: 56.25%; /* 9/16 = 0.5625 */
}

/* 右：テキストエリア（ここは Flex の縦積みで統一） */
.epilogueInfo__txt {
  width: 60%;
  flex: 1 1 auto;
  display: flex;                 /* ← display:grid の上書きを禁止 */
  flex-direction: column;
  justify-content: space-between;
  padding: 48px 24px 24px;
  box-sizing: border-box;
  min-width: 0;                  /* 長いテキストのはみ出し対策 */
}

/* YouTubeカードなど1カラム版（もし使うなら） */
.epilogueInfo__grid--youtube {
  display: block;
  background-color: #f6f6f6;
  margin: 0 auto;
  box-shadow: 0 0 20px rgb(183 183 183 / 20%);
}

/* YouTubeの画像は幅100%に */
.epilogueInfo__grid--youtube .epilogueInfo__img {
  width: 100%;
  flex: none;
}

/* もし .epilogueInfo__img の中に img を入れる運用もするなら保険 */
.epilogueInfo__img img {
  display: block;
  width: 100%;
  height: auto;
  vertical-align: bottom;
}



/* ============================================================
   Epilogue Info Card（Safari余白対策 + 横並びは縦にストレッチ）
   ※このブロックはCSSの一番下に置いてください
   ============================================================ */

/* 2カラムカード：Flexで統一 */
.epilogueInfo__grid {
  display: -webkit-flex;
  display: flex;
  flex-wrap: nowrap;
  align-items: stretch;            /* ← ここが重要：高さを揃える */
  background-color: #f6f6f6;
  margin: 0 auto;
  box-shadow: 0 0 20px rgb(183 183 183 / 50%);
  overflow: hidden;
}

/* 左：画像エリア（横並び時は「縦に伸びる」） */
.epilogueInfo__img {
  width: 40%;
  flex: 0 0 40%;
  position: relative;
  overflow: hidden;

  /* 背景画像運用 */
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;

  /* 縦ストレッチを確実に */
  align-self: stretch;
  min-height: 100%;
}

/* ✅ PC/タブレット(横並び)では 16:9 固定を解除する（縦に伸ばすため） */
@media (min-width: 601px) {
  .epilogueInfo__img::before {
    content: none !important;      /* ← これがないと16:9固定が勝って縦に伸びません */
  }
}

/* 右：テキスト */
.epilogueInfo__txt {
  width: 60%;
  flex: 1 1 auto;
  display: flex;                   /* grid上書き防止 */
  flex-direction: column;
  justify-content: space-between;
  padding: 48px 24px 24px;
  box-sizing: border-box;
  min-width: 0;
}

/* img運用が混在してもOK（Safariの下余白も潰す） */
.epilogueInfo__img img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  vertical-align: bottom;
}

/* YouTubeなど1カラム版（必要なら） */
.epilogueInfo__grid--youtube {
  display: block;
  background-color: #f6f6f6;
  margin: 0 auto;
  box-shadow: 0 0 20px rgb(183 183 183 / 20%);
}
.epilogueInfo__grid--youtube .epilogueInfo__img {
  width: 100%;
  flex: none;
  min-height: 0;
}

/* SP：縦積み＋16:9固定（Safariでも安定） */
@media (max-width: 600px) {
  .epilogueInfo__grid {
    flex-direction: column;
    align-items: stretch;
  }

  .epilogueInfo__img,
  .epilogueInfo__txt {
    width: 100%;
    flex: none;
  }

  .epilogueInfo__txt {
    padding: 24px;
  }

  /* SPだけ16:9を作る */
  .epilogueInfo__img::before {
    content: "";
    display: block;
    padding-top: 56.25%; /* 16:9 */
  }
}


/* enIcon の絶対配置の基準を必ず作る（Safari対策） */
li > a {
  position: relative;
  display: block; /* ← Safariで inline のままだと基準が不安定 */
}

/* ついでに enIcon を安定させる */
.enIcon {
  display: block;
  height: auto;
  vertical-align: top;
}
