*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body.theme-dark{
  background:#000;
  color:#fff;
  font-family:"Playfair Display","Yu Mincho",serif;
}

/* 背景レイヤー */
.bg-layer{
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:-1;
}

/* 月・霧・粒子（CSS版） */
.bg-moon-small{
  background:radial-gradient(circle at 20% 10%,rgba(180,0,40,.6)0,rgba(120,0,20,.4)18%,rgba(0,0,0,0)40%);
  animation:moonPulse 12s ease-in-out infinite alternate;
}
.bg-moon-detail{
  background:radial-gradient(circle at 18% 12%,rgba(180,0,40,.75)0,rgba(120,0,20,.45)20%,rgba(0,0,0,0)45%);
  animation:moonPulse 14s ease-in-out infinite alternate;
}
.bg-moon-gallery{
  background:radial-gradient(circle at 20% 12%,rgba(180,0,40,.55)0,rgba(120,0,20,.35)18%,rgba(0,0,0,0)40%);
  animation:moonPulse 16s ease-in-out infinite alternate;
}
.bg-moon-access{
  background:radial-gradient(circle at 22% 14%,rgba(180,0,40,.45)0,rgba(120,0,20,.25)18%,rgba(0,0,0,0)40%);
  animation:moonPulse 18s ease-in-out infinite alternate;
}
@keyframes moonPulse{
  0%{transform:scale(1) translate(0,0);opacity:.9}
  100%{transform:scale(1.05) translate(0,-5px);opacity:1}
}
.bg-fog{
  background:
    radial-gradient(circle at 30% 60%,rgba(120,0,30,.25)0,transparent 50%),
    radial-gradient(circle at 70% 80%,rgba(100,0,20,.2)0,transparent 55%);
  mix-blend-mode:screen;
  animation:fogMove 18s ease-in-out infinite alternate;
}
@keyframes fogMove{
  0%{transform:translate(-10px,10px);opacity:.5}
  100%{transform:translate(10px,-10px);opacity:.8}
}
.bg-particles{
  background-image:
    radial-gradient(circle,rgba(255,255,255,.15)1px,transparent 1px),
    radial-gradient(circle,rgba(255,0,50,.2)1px,transparent 1px);
  background-size:3px 3px,4px 4px;
  background-position:0 0,20px 40px;
  opacity:.25;
  animation:particlesFall 25s linear infinite;
}
@keyframes particlesFall{
  0%{background-position:0 0,20px 40px}
  100%{background-position:0 200px,20px 240px}
}

/* ヘッダー */
.site-header{
  position:fixed;
  top:0;left:0;right:0;
  padding:16px 40px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  z-index:10;
  background:linear-gradient(to bottom,rgba(0,0,0,.9),rgba(0,0,0,0));
}
.logo-small .logo-v{
  font-family:"Cinzel",serif;
  font-size:24px;
  color:#d0d0d0;
  text-shadow:0 0 6px rgba(255,255,255,.3),0 0 12px rgba(180,0,40,.6);
}
.global-nav a{
  font-family:"Cinzel",serif;
  color:#ccc;
  text-decoration:none;
  margin-left:24px;
  letter-spacing:.12em;
  font-size:13px;
  position:relative;
  transition:color .3s ease;
}
.global-nav a::after{
  content:"";
  position:absolute;
  left:0;bottom:-4px;
  width:0;height:1px;
  background:#B00020;
  transition:width .3s ease;
}
.global-nav a:hover{color:#fff}
.global-nav a:hover::after,
.global-nav a.active::after{width:100%}

/* TOP */
.top-main{
  min-height:100vh;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  padding-top:80px;
}
.logo-main{text-align:center;margin-bottom:32px}
.logo-emblem{
  display:inline-flex;
  justify-content:center;
  align-items:center;
  width:140px;height:140px;
  border-radius:50%;
  background:radial-gradient(circle,#f0f0f0 0,#c0c0c0 40%,#4a4a4a 100%);
  box-shadow:0 0 18px rgba(255,255,255,.4),0 0 40px rgba(176,0,32,.7);
  position:relative;
  margin-bottom:16px;
}
.logo-emblem::before{
  content:"";
  position:absolute;
  inset:10%;
  border-radius:50%;
  border:1px solid rgba(255,255,255,.25);
  box-shadow:0 0 12px rgba(176,0,32,.6);
}
.logo-v-large{
  font-family:"Cinzel",serif;
  font-size:80px;
  color:#e4e4e4;
  text-shadow:-2px -2px 3px rgba(255,255,255,.8),2px 2px 4px rgba(0,0,0,.9),0 0 12px rgba(176,0,32,.7);
}
.logo-text .logo-title{
  display:block;
  font-family:"Cinzel",serif;
  font-size:22px;
  letter-spacing:.25em;
  color:#e0e0e0;
  text-shadow:0 0 6px rgba(0,0,0,.8);
  margin-bottom:8px;
}
.crimson-line{
  width:220px;
  height:2px;
  margin:0 auto;
  background:linear-gradient(to right,transparent,#B00020,transparent);
  box-shadow:0 0 10px rgba(176,0,32,.8);
}
.top-subcopy{
  margin-top:24px;
  font-size:14px;
  color:#d0d0d0;
  letter-spacing:.18em;
  text-align:center;
}
.top-menu{
  position:absolute;
  bottom:80px;
  display:flex;
  gap:40px;
}
.top-menu a{
  font-family:"Cinzel",serif;
  color:#f0f0f0;
  text-decoration:none;
  letter-spacing:.25em;
  font-size:13px;
  position:relative;
  padding-bottom:4px;
  text-transform:uppercase;
  transition:color .3s ease;
}
.top-menu a::after{
  content:"";
  position:absolute;
  left:0;bottom:0;
  width:0;height:1px;
  background:#B00020;
  transition:width .3s ease;
}
.top-menu a:hover{color:#ffdde5}
.top-menu a:hover::after{width:100%}

/* 共通タイトル */
.page-title-block{
  text-align:center;
  margin-bottom:60px;
}
.page-title-block h1{
  font-family:"Cinzel",serif;
  font-size:42px;
  letter-spacing:.25em;
  color:#e0e0e0;
  text-shadow:0 0 12px rgba(0,0,0,.8);
}
.page-title-block .page-subcopy{
  margin-top:16px;
  font-size:14px;
  color:#ccc;
  letter-spacing:.15em;
}

/* CAST一覧 */
.cast-main{
  padding-top:160px;
  padding-bottom:80px;
  width:100%;
  max-width:1200px;
  margin:0 auto;
}
.cast-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:40px;
  padding:0 40px;
}
.cast-card{
  text-align:center;
  padding:20px 10px;
  background:rgba(255,255,255,.03);
  border:1px solid rgba(255,255,255,.05);
  border-radius:8px;
  backdrop-filter:blur(4px);
  transition:transform .3s ease,box-shadow .3s ease;
}
.cast-card:hover{
  transform:translateY(-6px);
  box-shadow:0 0 20px rgba(176,0,32,.4);
}
.cast-photo img{
  width:100%;
  height:auto;
  object-fit:contain;
  filter:drop-shadow(0 0 12px rgba(255,255,255,.2));
}
.cast-name{
  margin-top:16px;
  font-family:"Cinzel",serif;
  font-size:20px;
  letter-spacing:.15em;
  color:#e0e0e0;
}
.cast-copy{
  margin-top:8px;
  font-size:13px;
  color:#ccc;
  letter-spacing:.1em;
}
.cast-detail-link{
  display:inline-block;
  margin-top:16px;
  padding:6px 18px;
  font-family:"Cinzel",serif;
  font-size:12px;
  letter-spacing:.15em;
  color:#fff;
  border:1px solid #B00020;
  text-decoration:none;
  transition:background .3s ease,color .3s ease;
}
.cast-detail-link:hover{
  background:#B00020;
  color:#fff;
}

/* CAST詳細 */
.cast-detail-main{
  padding-top:160px;
  padding-bottom:100px;
  width:100%;
  max-width:1100px;
  margin:0 auto;
}
.cast-detail-container{
  display:flex;
  justify-content:center;
  align-items:flex-start;
  gap:60px;
  padding:0 40px;
}
.cast-detail-photo img{
  width:380px;
  height:auto;
  object-fit:contain;
  filter:drop-shadow(0 0 18px rgba(255,255,255,.25));
}
.cast-detail-info{max-width:420px}
.cast-detail-info .cast-name{
  font-family:"Cinzel",serif;
  font-size:36px;
  letter-spacing:.18em;
  color:#e0e0e0;
  margin-bottom:12px;
}
.cast-detail-info .cast-copy{
  margin-top:16px;
  font-size:15px;
  color:#ccc;
  letter-spacing:.12em;
}
.cast-detail-info .cast-message{
  margin-top:24px;
  font-size:15px;
  color:#ddd;
  letter-spacing:.1em;
  line-height:1.8;
}
.btn-x{
  display:inline-block;
  margin-top:28px;
  padding:8px 26px;
  font-family:"Cinzel",serif;
  font-size:13px;
  letter-spacing:.18em;
  color:#fff;
  border:1px solid #B00020;
  text-decoration:none;
  transition:background .3s ease,color .3s ease,box-shadow .3s ease;
}
.btn-x:hover{
  background:#B00020;
  color:#fff;
  box-shadow:0 0 12px rgba(176,0,32,.6);
}
.back-link{
  display:inline-block;
  margin-top:32px;
  font-size:13px;
  color:#ccc;
  text-decoration:none;
  letter-spacing:.1em;
  transition:color .3s ease;
}
.back-link:hover{color:#fff}

/* GALLERY */
.gallery-main{
  padding-top:160px;
  padding-bottom:100px;
  width:100%;
  max-width:1300px;
  margin:0 auto;
}
.gallery-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:40px;
  padding:0 40px;
}
.gallery-item{
  text-align:center;
  background:rgba(255,255,255,.03);
  border:1px solid rgba(255,255,255,.05);
  border-radius:8px;
  padding:16px;
  backdrop-filter:blur(4px);
  transition:transform .3s ease,box-shadow .3s ease;
}
.gallery-item:hover{
  transform:translateY(-6px);
  box-shadow:0 0 20px rgba(176,0,32,.4);
}
.gallery-item img{
  width:100%;
  height:auto;
  border-radius:4px;
  object-fit:cover;
  filter:brightness(.92) drop-shadow(0 0 10px rgba(255,255,255,.15));
  transition:filter .3s ease;
}
.gallery-item:hover img{
  filter:brightness(1) drop-shadow(0 0 14px rgba(176,0,32,.5));
}
.gallery-item figcaption{
  margin-top:12px;
  font-size:13px;
  color:#ccc;
  letter-spacing:.1em;
}

/* ACCESS */
.access-main{
  padding-top:160px;
  padding-bottom:120px;
  width:100%;
  max-width:900px;
  margin:0 auto;
}
.access-info{
  padding:0 40px;
  text-align:center;
}
.access-intro{
  font-size:15px;
  color:#ccc;
  letter-spacing:.12em;
  margin-bottom:40px;
}
.access-detail{
  display:flex;
  flex-direction:column;
  gap:40px;
}
.access-row h2{
  font-family:"Cinzel",serif;
  font-size:20px;
  letter-spacing:.15em;
  color:#e0e0e0;
  margin-bottom:8px;
}
.access-row p{
  font-size:14px;
  color:#ccc;
  letter-spacing:.1em;
}
.map-frame{
  margin-top:12px;
  border:1px solid rgba(255,255,255,.1);
  border-radius:8px;
  overflow:hidden;
  box-shadow:0 0 14px rgba(176,0,32,.4);
}

/* フッター */
.site-footer{
  position:fixed;
  bottom:16px;
  left:0;right:0;
  text-align:center;
  font-size:11px;
  color:#888;
  letter-spacing:.12em;
}

/* レスポンシブ */
@media (max-width:900px){
  .global-nav{display:none}
  .cast-detail-container{
    flex-direction:column;
    align-items:center;
    text-align:center;
  }
  .cast-detail-photo img{width:70%}
}
@media (max-width:768px){
  .site-header{padding:12px 16px}
  .logo-emblem{width:110px;height:110px}
  .logo-v-large{font-size:64px}
  .logo-text .logo-title{
    font-size:16px;
    letter-spacing:.18em;
  }
  .crimson-line{width:180px}
  .top-menu{
    bottom:60px;
    gap:24px;
  }
  .top-menu a{
    font-size:11px;
    letter-spacing:.18em;
  }
  .site-footer{font-size:10px}
}
.bg-moon {
  background: radial-gradient(circle at 15% 15%, rgba(180,0,40,.9) 0, rgba(120,0,20,.7) 20%, rgba(0,0,0,0) 40%);
  animation: moonPulse 10s ease-in-out infinite alternate;
}
body {
  background: #000 !important;
}
html, body {
  background-color: #000 !important;
}
.top-logo {
  width: 320px; /* ロゴの大きさ。好みで調整可能 */
  height: auto;
  display: block;
  margin: 0 auto 25px; /* 中央揃え＋下に余白 */
  filter: drop-shadow(0 0 25px rgba(255, 255, 255, 0.25));
}
.lb-overlay,
.lightboxOverlay {
  z-index: 99999 !important;
}
/* ★ Lightbox を最前面に強制して背景クリックを有効化 */
.lightboxOverlay,
.lb-overlay,
.lb-dataContainer,
.lb-outerContainer {
  z-index: 99999 !important;
}
.lightboxOverlay {
  cursor: pointer;
}
/* ★ Lightbox が閉じない最終原因の修正 */
.cast-photo img {
  pointer-events: auto !important;
}
/* Lightbox を完全最前面に固定 */
.lightboxOverlay,
.lb-overlay,
.lb-dataContainer,
.lb-outerContainer,
.lb-container {
  z-index: 999999 !important;
  pointer-events: auto !important;
}
.lightboxOverlay {
  cursor: pointer !important;
}
/* ★ CAST カードが Lightbox を邪魔しないようにする */
.cast-card {
  position: relative;
  z-index: 1 !important;
}
/* ★ 赤く光るリンク（ACCESS専用） */
.access-info a {
  color: #ff4d6d;
  text-decoration: none;
  font-weight: 600;
  letter-spacing: .05em;
  transition: color .3s ease, text-shadow .3s ease;
}

.access-info a:hover {
  color: #ff99aa;
  text-shadow: 0 0 8px rgba(255, 0, 50, .8), 0 0 12px rgba(255, 0, 80, .);
}