@charset "utf-8";

/* ==============================
   Base
============================== */
html { color-scheme: dark; }

body{
  margin:0;
  font-family:"Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic","Meiryo",sans-serif;
  line-height:1.8;
  color:#f5f3ef;
  background:
    radial-gradient(1200px 600px at 50% -10%, rgba(90,50,40,.35), transparent 65%),
    linear-gradient(180deg, #3b2a28 0%, #1a1312 100%);
}

h1,h2,h3{ margin-bottom:.5em; }

/* a11y */
.visually-hidden{
  position:absolute!important; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}

/* ==============================
   Layout
============================== */
.container{
  width:90%;
  max-width:1000px;
  margin:0 auto;
  padding:2em 0;
}

/* 共通セクション */
section{
  padding:3em 0;
  border-bottom:1px solid #333;
  scroll-margin-top:72px;
}

section h2{
  font-family:"Bebas Neue","Zen Kaku Gothic New",sans-serif;
  font-size:2.2rem;
  font-weight:800;
  letter-spacing:.04em;
  color:#c5162e;
  margin:0 0 .9em;
  line-height:1.25;
  position:relative;
  text-shadow:1px 1px 4px rgba(0,0,0,.55);
}

section h2::after{
  content:"";
  position:absolute;
  left:0;
  bottom:-8px;
  width:68px;
  height:3px;
  background:linear-gradient(90deg,#c5162e 0%,#d4af37 100%);
  box-shadow:0 1px 8px rgba(212,175,55,.35);
  border-radius:2px;
}

section h3{
  font-size:1.35rem;
  font-weight:700;
  letter-spacing:.02em;
  color:#0f5132;
  margin:0 0 .6em;
  line-height:1.35;
  text-shadow:0 1px 3px rgba(0,0,0,.35);
}

@media (max-width:480px){
  section h2{ font-size:1.8rem; }
  section h2::after{ width:52px; bottom:-6px; }
}

/* ==============================
   Header / Navigation
============================== */
header{
  background:rgba(24,16,14,.65);
  position:sticky;
  top:0;
  z-index:1000;
  box-shadow:0 2px 8px rgba(0,0,0,.6);
}

.nav-container{
  position:relative;
  max-width:1200px;
  margin:0 auto;
  padding:.7em 1em;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.8em;
  transition: padding .18s ease, gap .18s ease;
}

/* Logo */
.logo{
  display:inline-flex;
  flex-direction:column;
  align-items:flex-start;
  gap:.3rem;
  text-decoration:none;
  user-select:none;
  line-height:1;
  white-space:nowrap;
}

.logo-title{
  font-family:"Brush Script MT","Segoe Script","Harlow Solid","cursive";
  font-weight:400;
  letter-spacing:.03em;
  font-size:clamp(34px,5.2vw,60px);
  color:#c85b45;
  text-shadow:
    0 0 8px rgba(200,90,70,.8),
    0 0 22px rgba(255,120,80,.7),
    0 2px 4px rgba(0,0,0,.7);
}

.logo-subtitle{
  font-family:"Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic","Meiryo",sans-serif;
  font-weight:800;
  letter-spacing:.32em;
  font-size:clamp(14px,2.1vw,22px);
  color:#fff;
  text-shadow:
    0 0 10px rgba(255,160,90,.95),
    0 0 24px rgba(255,130,70,.7);
}

@media (max-width:480px){
  .logo{ gap:.2rem; }
  .logo-title{ font-size:28px; }
  .logo-subtitle{ font-size:12px; letter-spacing:.26em; }
}

/* Nav links */
.nav-links{
  list-style:none;
  display:flex;
  gap:clamp(.6rem,.9vw,1rem);
  margin:0;
  padding:0;
  flex-wrap:nowrap;
  white-space:nowrap;
  justify-content:flex-end;

  font-family:"Bebas Neue","Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic","Meiryo",sans-serif;
  font-size:.9rem;
  letter-spacing:.16em;
  text-transform:uppercase;
}

.nav-links li{ flex:0 0 auto; }

.nav-links a{
  color:#f5f3ef;
  text-decoration:none;
  font-size:clamp(.92rem,1vw,1rem);
  position:relative;
  padding:.12em 0;
  transition:color .3s;
}

.nav-links a::after{
  content:"";
  position:absolute;
  left:0;
  bottom:-3px;
  width:100%;
  height:2px;
  background:#d4af37;
  transform:scaleX(0);
  transform-origin:right;
  transition:transform .3s;
}

.nav-links a:hover{ color:#c5162e; }
.nav-links a:hover::after{
  transform:scaleX(1);
  transform-origin:left;
}

/* slight shrink for the last item */
.nav-links li:last-child a{ font-size:.95em; }

.hamburger{
  display:none;
  font-size:1.8rem;
  color:#fff;
  cursor:pointer;
  background:transparent;
  border:0;
  margin-left:.35rem;
}

/* ヘッダーcompact（スクロール時） */
header.is-compact .nav-container{ padding:.35em .9em; }

header.is-compact .nav-links{
  gap:clamp(.4rem,.6vw,.8rem);
}

header.is-compact .nav-links a{
  font-size:clamp(.85rem,.9vw,.95rem);
  padding:.08em 0;
}

header.is-compact .logo-title{
  font-size:clamp(22px,2.6vw,38px);
  letter-spacing:.09em;
}

header.is-compact .logo-subtitle{
  font-size:clamp(8px,.9vw,12px);
  opacity:.85;
}

@media (max-width:1200px){
  .nav-links{ gap:clamp(.6rem,1.4vw,1.2rem); }
  .nav-links a{ font-size:clamp(.9rem,1.1vw,1rem); }
  .logo-title{ font-size:clamp(26px,3.2vw,44px); }
  .logo-subtitle{ letter-spacing:.22em; }
}

/* Drawer: 1360px threshold */
@media (max-width:1360px){
  header .nav-links{
    display:none;
    flex-direction:column;
    position:absolute;
    top:60px;
    right:0;
    width:220px;
    padding:1em;
    background:#111;
  }
  header .nav-links.show{ display:flex; }
  header .hamburger{ display:block; }
}

@media (min-width:1361px){
  header .nav-links{ display:flex !important; }
  header .hamburger{ display:none !important; }
}

/* ==============================
   SNS links（X + YouTube）
============================== */
.social-links{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin-left:1rem;
  gap:.6rem;
}

.social-link{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  transition:transform .25s ease, opacity .25s ease;
}

.social-link svg{
  width:26px;
  height:26px;
  display:block;
}

.social-link path,
.social-link rect,
.social-link polygon{
  opacity:.9;
  transition:opacity .3s ease;
}

.social-link:hover{ transform:scale(1.08); }
.social-link:hover path,
.social-link:hover rect,
.social-link:hover polygon{ opacity:1; }

/* バッジ */
.social-link.badge{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  padding:.38rem .6rem;
  border-radius:999px;
  background:rgba(0,0,0,.55);
  border:1px solid rgba(212,175,55,.55);
  box-shadow:0 2px 6px rgba(0,0,0,.45);
  transition:transform .2s ease, box-shadow .2s ease, background .2s ease;
}

.social-link.badge svg{ width:20px; height:20px; }

.social-link.badge .label{
  letter-spacing:.02em;
  color:#fff;
  opacity:.95;
  font-size:.95rem;
}

.social-link.badge:hover{
  transform:translateY(-1px);
  background:rgba(197,22,46,.85);
  border-color:rgba(212,175,55,.8);
  box-shadow:0 4px 12px rgba(0,0,0,.55);
}

/* 個別カラー */
.x-link path{ fill:#fff; }
.yt-link rect{ fill:#c5162e; }
.yt-link polygon{ fill:#fff; }

@media (max-width:1360px){
  .social-links{
    position:absolute;
    right:54px;
    top:50%;
    transform:translateY(-50%);
    z-index:1100;
  }
  .social-link.badge{
    padding:.42rem;
    gap:0;
  }
  .social-link.badge .label{ display:none; }
}

/* ==============================
   Hero (poster)
============================== */
.hero-slider{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  background:transparent;
  min-height:420px;
  height:clamp(520px,82vh,1100px);
}

.hero-bg{
  position:absolute;
  inset:0;
  background-size:cover;
  background-position:center;
  filter:blur(18px) brightness(.72) sepia(.28) saturate(.95) hue-rotate(-8deg);
  transform:scale(1.06);
  z-index:0;
}

.hero-slider .slides{
  position:relative;
  width:100%;
  height:100%;
  z-index:1;
}

.hero-slider .slide{
  position:absolute;
  inset:0;
  opacity:0;
  transition:opacity .6s ease;
}

.hero-slider .slide.is-active{ opacity:1; }

.hero-slider .slide img{
  width:100%;
  height:auto;
  max-height:100%;
  object-fit:contain;
  background-color:transparent;
}

.hero-nav{
  position:absolute;
  top:50%;

  transform:translateY(-50%);
  width:42px;
  height:42px;
  border:1px solid #444;
  border-radius:50%;
  background:rgba(0,0,0,.45);
  color:#fff;
  font-size:24px;
  display:grid;
  place-items:center;
  cursor:pointer;
  transition:background .2s, border-color .2s;
  z-index:2;
}

.hero-nav:hover{
  background:rgba(0,0,0,.7);
  border-color:#c5162e;
}

.hero-nav.prev{ left:14px; }
.hero-nav.next{ right:14px; }

.hero-dots{
  position:absolute;
  left:50%;
  bottom:14px;
  transform:translateX(-50%);
  display:flex;
  gap:10px;
  z-index:2;
}

.hero-dots .dot{
  width:10px;
  height:10px;
  border-radius:50%;
  border:1px solid #0f5132;
  background:rgba(0,0,0,.4);
  cursor:pointer;
  padding:0;
}

.hero-dots .dot.is-active{ background:#d4af37; }

.hero-nav:focus,
.hero-dots .dot:focus,
.hero-nav:focus-visible,
.hero-dots .dot:focus-visible{
  outline:2px solid #d4af37;
  outline-offset:2px;
}

@media (max-width:768px){
  .hero-slider{ height:clamp(420px,68vh,820px); }
  .hero-slider .slide img{
    width:100%;
    height:100%;
    object-fit:contain;
  }
}

@media (max-width:480px){
  .hero-nav{ width:38px; height:38px; font-size:22px; }
  .hero-dots{ bottom:10px; gap:8px; }
}

@media (prefers-reduced-motion:reduce){
  .hero-slider .slide{ transition:none; }
}

@media (min-width:1024px){
  #hero.hero-slider{
    height:clamp(700px,95vh,1200px) !important;
  }
  #hero.hero-slider .slide img{
    width:100% !important;
    height:100% !important;
    object-fit:contain !important;
  }
}

/* ==============================
   Catchcopy
============================== */
#catchcopy{ position:relative; overflow:hidden; }

.catchcopy{
  background:transparent;
  text-align:center;
  padding:3em 1em;
  border-bottom:none;
}

.catchcopy h2{
  font-size:2rem;
  color:#c5162e;
  margin-bottom:.5em;
  text-shadow:1px 1px 4px rgba(0,0,0,.6);
}

.catchcopy h2::after{ content:none; }

.catchcopy p{
  font-size:1.2rem;
  color:#f0f0f0;
  text-shadow:1px 1px 3px rgba(0,0,0,.7);
}

.catchcopy-bg{
  display:block;
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  filter:brightness(.65);
  opacity:1;
  transition:opacity .6s ease;
  z-index:0;
}

#catchcopy .container{
  position:relative;
  z-index:1;
}

/* 念のためSP幅でも強制表示 */
@media (max-width:600px){
  #catchcopy .catchcopy-bg{ display:block !important; }
}

/* ==============================
   Trailer
============================== */
.trailer{
  background:rgba(24,16,14,.60);
  padding:3em 0 2.2em;
  border-bottom:1px solid #333;
}

.trailer h2{ margin-bottom:.8em; }

.video-wrapper{
  position:relative;
  width:100%;
  max-width:1000px;
  margin:0 auto .8em;
  background:rgba(0,0,0,.35);
  border-radius:8px;
  box-shadow:0 10px 30px rgba(0,0,0,.45);
  overflow:hidden;
}

.video-wrapper::before{
  content:"";
  display:block;
  padding-top:56.25%;
}

.video-wrapper iframe{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  border:0;
  display:block;
}

/* ==============================
   Theme song
============================== */
.theme-song{
  padding:3.2em 0 3.6em;
  border-bottom:none;
  text-align:center;
  background:
    radial-gradient(800px 400px at 50% 0%, rgba(212,175,55,.10), transparent 60%),
    #0d0d0d;
}

.theme-song h2{
  margin-bottom:1.2em;
  color:#c5162e;
  text-shadow:0 0 12px rgba(197,22,46,.45);
}

.theme-song h2::after{ content:none; }

.song-wrapper{
  display:grid;
  grid-template-columns:100%;
  row-gap:22px;
  justify-items:center;
  align-items:start;
  max-width:900px;
  margin:0 auto;
  padding:2em 1em;
  background:#201614;
  border-radius:8px;
  box-shadow:0 2px 8px rgba(0,0,0,.45);
}

.song-image{
  width:100%;
  display:grid;
  place-items:center;
  position:relative;
}

.song-image::before{
  content:"";
  position:absolute;
  inset:-10px;
  border-radius:16px;
  background:radial-gradient(60% 60% at 50% 40%, rgba(212,175,55,.20), transparent 70%);
  filter:blur(10px);
  z-index:0;
}

.song-image img{
  position:relative;
  z-index:1;
  display:block;
  margin:0 auto;
  width:320px;
  max-width:100%;
  border-radius:10px;
  box-shadow:0 8px 20px rgba(120,70,40,.35);
}

.song-text{
  text-align:center;
  max-width:740px;
  padding:0 1rem;
}

.song-text h3{
  font-size:clamp(1.9rem,2.4vw,2.2rem);
  color:#fff;
  margin:.6em 0 .4em;
  letter-spacing:.06em;
  text-shadow:0 1px 3px rgba(0,0,0,.45);
}

.song-text p{
  font-size:1.05rem;
  line-height:1.8;
  color:#ccc;
  margin:0 auto;
}

.song-list{
  margin:1.1em auto 0;
  padding-left:0;
  list-style:none;
  color:#ccc;
  line-height:1.75;
}

.song-list li{ margin-bottom:.65em; }
.song-list strong{ color:#fff; }

@media (max-width:520px){
  .song-image img{ max-width:92vw; }
  .song-text{ padding:0 .2rem; }
}

/* ==============================
   Comments
============================== */
.comments{ border-bottom:1px solid #333; }
.comments h2{ margin-bottom:1em; }

.comment-card{
  margin-bottom:1.5em;
  padding:1.2em;
  background:rgba(45,30,28,.85);
  border-radius:10px;
  box-shadow:0 2px 6px rgba(0,0,0,.45);
}

.comment-card h3{
  font-size:1.2rem;
  color:#c5162e;
  margin-bottom:.4em;
}

.comment-card blockquote{
  margin:0 0 .6em;
  padding:.8em 1em;
  border-left:3px solid #d4af37;
  background:rgba(0,0,0,.25);
  border-radius:6px;
}

.comment-card blockquote p{
  margin:0;
  line-height:1.8;
  color:#ddd;
}

.comment-name{
  text-align:right;
  font-weight:bold;
  color:#e5d7c9;
}

/* ==============================
   Tickets
============================== */
.tickets{
  padding:3em 0;
  border-bottom:1px solid #333;
  background:rgba(45,30,28,.85);
  text-align:center;
}

.tickets h2{
  color:#c5162e;
  text-shadow:0 0 12px rgba(197,22,46,.45);
  margin-bottom:1em;
}

/* チケット情報の見出し下の線を消す */
#tickets h2::after{ content:none !important; }

.ticket-note{
  color:#ccc;
  margin-bottom:1.2em;
}

.ticket-table{
  margin:0 auto 1.5em;
  border-collapse:collapse;
  min-width:260px;
}

.ticket-table th,
.ticket-table td{
  border:1px solid rgba(212,175,55,.35);
  padding:.6em 1em;
  color:#f5f3ef;
}

.ticket-table th{
  background:rgba(212,175,55,.1);
  color:#d4af37;
  font-weight:700;
}

.ticket-links{
  display:flex;
  gap:1em;
  justify-content:center;
  flex-wrap:wrap;
}

.ticket-links .btn{
  background:#c5162e;
  color:#fff;
  padding:.7em 1.4em;
  border-radius:999px;
  text-decoration:none;
  font-weight:600;
  transition:background .25s, box-shadow .25s;
}

.ticket-links .btn:hover{
  background:#a31226;
  box-shadow:0 0 0 2px rgba(212,175,55,.35);
}

.ticket-links .btn.secondary{ background:#444; }
.ticket-links .btn.secondary:hover{ background:#666; }

/* ==============================
   Duo Shot（FINAL 2025-10-07）
============================== */
#duo.duo-shot{
  position: relative;
  border-bottom: 1px solid #333;
  background:
    radial-gradient(900px 420px at 50% 0%, rgba(212,175,55,.08), transparent 60%),
    rgba(24,16,14,.60);
  padding: 0;
  overflow: hidden;
}

#duo.duo-shot picture,
#duo.duo-shot img{
  display: block;
  width: 100%;
  max-height: min(86vh, 980px);
  aspect-ratio: 5 / 3;
  object-fit: cover;
  object-position: center 40%;
  border-radius: 0;
  box-shadow: inset 0 -80px 120px rgba(0,0,0,.35);
}

/* キャプション：左端ピタ & 下寄せ */
#duo .duo-caption{
  position: absolute;
  left: 1%;
  right: auto;
  bottom: 24px;
  margin: 0;
  padding: 0;
  display: block;
  color: #fff;
  text-shadow: 0 2px 8px rgba(0,0,0,.6);
  pointer-events: none;
}

#duo .duo-caption span{
  font-size: clamp(14px, 2vw, 20px);
  color: #e5d7c9;
  opacity: .95;
  line-height: 1.9;
  letter-spacing: .02em;
  text-align: left;
  display: block;
}

#duo .duo-caption .l2{ margin-left: 5.2em; }

/* SP：中央寄せ */
@media (max-width: 560px){
  #duo .duo-caption{
    left: 0;
    right: 0;
    margin: 0 auto;
    padding: 0 1rem;
    text-align: center;
  }
  #duo .duo-caption span{
    text-align: center;
    display: inline;
    line-height: 1.8;
  }
  #duo .duo-caption .l2{ margin-left: 0; }
}

/* ==============================
   Cast（下段テキストブロック）
============================== */
.other-cast{
  max-width: 900px;
  margin: 1.5em auto 0;
  padding: 1.2em 1rem;
  background: rgba(45,30,28,.35);
  border: 1px solid rgba(212,175,55,.18);
  border-radius: 10px;
}

.cast-list{
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
}

.cast-list li{
  width: calc(100% / 3);
  line-height: 1.75;
}

@media (max-width: 900px){
  .cast-list li{ width: 50%; }
}

@media (max-width: 560px){
  .cast-list li{ width: 100%; }
}

.cast-list .role-name { color: #ddd; }
.cast-list .actor-name { color: #fff; font-weight: 700; }

/* 主演ブロック */
.lead-actor{
  text-align: center;
  margin: 2.5em auto;
  max-width: 600px;
}

.lead-actor h3{
  font-size:1.8rem;
  color:#c5162e;
  margin-bottom:.3em;
}

.lead-actor .lead-label{
  font-size:1rem;
  color:#0e0f10;
  background:#d4af37;
  padding:.2em .6em;
  border-radius:4px;
  margin-left:6px;
}

.lead-actor .role{
  font-size:1.05rem;
  line-height:1.8;
  color:#ddd;
}

.lead-actor img{
  display: block;
  margin: 0 auto;
  width: 600px;
  height: 380px;
  object-fit: cover;
  object-position: center;
  border-radius: 10px;
  box-shadow: 0 6px 16px rgba(0,0,0,0.6);
}

/* HOTFIX: 主演画像がスマホで横はみ出す問題 */
@media (max-width: 560px) {
  #cast .lead-actor{
    max-width: 100% !important;
    margin: 2em auto !important;
    padding: 0 12px;
  }
  #cast .lead-actor img{
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    object-fit: cover !important;
    display: block;
  }
}

/* ==============================
   Events（登壇イベント）
============================== */
.events{
  padding:3em 0;
  border-bottom:1px solid #333;
  background:rgba(24,16,14,.65);
}

.events h2{ margin-bottom:1em; }

.events-note{
  margin:0 0 1.8em;
  color:#ccc;
  font-size:.98rem;
}

/* 縦並びアーカイブ用 */
.events-list{
  margin:0;
  padding:0;
  display:flex;
  flex-direction:column;
  gap:1.3rem;
}

.event-line{
  padding-bottom:1.1em;
  border-bottom:1px solid rgba(255,255,255,.14);
}

.event-line:last-child{
  border-bottom:none;
  padding-bottom:0;
}

.event-main{
  margin:0 0 .25em;
  font-size:1.02rem;
  font-weight:600;
  display:flex;
  flex-wrap:wrap;
  gap:.6em;
  align-items:baseline;
}

.event-date{
  letter-spacing:.06em;
  color:#f0e0c0;
}

.event-type{
  padding-left:.7em;
  border-left:1px solid rgba(212,175,55,.6);
}

.event-sub{
  margin:0 0 .25em;
  font-size:.9rem;
  color:#ccc;
}

.event-guests-line{
  margin:0;
  font-size:.9rem;
  color:#f5f3ef;
  line-height:1.7;
}

.event-guests-label{
  font-weight:600;
  color:#f0e0c0;
  margin-right:.3em;
}

@media (max-width:768px){
  .event-line{ padding-bottom:1.3em; }
  .event-type{ border-left:none; padding-left:0; }
  .event-sub,
  .event-guests-line{ font-size:.88rem; }
}

/* Events summary（上映終了のお知らせ） */
.events-summary{
  padding:2.4em 0 1.6em;
  background:rgba(24,16,14,.9);
  border-bottom:1px solid #333;
  text-align:center;
}

.events-summary-title{
  margin:0 0 .6em;
  font-size:1.1rem;
  letter-spacing:.15em;
}

.events-summary-text{
  margin:0;
  font-size:.95rem;
  line-height:1.9;
}

@media (max-width:640px){
  .events-summary{ padding:2em 1rem 1.4em; }
  .events-summary-text{ text-align:left; }
}

/* Events：折りたたみ（過去ログ） */
.events-upcoming{ margin: 0 0 1.2em; }

.event-upcoming{
  border-bottom: none;
  padding: 1.05em 1.1em;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(212,175,55,.22);
  border-radius: 10px;
}

.event-more{
  margin: .5em 0 0;
  font-size: .9rem;
  color: #ccc;
}

.event-more a{
  color: #d4af37;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.events-archive{
  border: 1px solid rgba(212,175,55,.18);
  border-radius: 10px;
  background: rgba(45,30,28,.55);
  overflow: hidden;
}

.events-archive > summary{
  cursor: pointer;
  padding: 1em 1.05em;
  color: #f0e0c0;
  font-weight: 700;
  letter-spacing: .08em;
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: rgba(0,0,0,.12);
}

.events-archive > summary::-webkit-details-marker{ display: none; }

.events-archive > summary::after{
  content: "＋";
  opacity: .9;
  font-size: 1.05em;
  transform: translateY(-1px);
}

.events-archive[open] > summary::after{ content: "－"; }

.events-archive-body{ padding: 1em 1.05em 1.2em; }

.events-archive > summary:hover{ background: rgba(0,0,0,.18); }

/* 開催予定セクションの見出し・注記 */
.events-upcoming-title{
  margin: 1.2em 0 .35em;
  font-size: 1.05rem;
  letter-spacing: .06em;
}

.events-upcoming-note{
  margin: 0 0 .9em;
  color: rgba(245,243,239,.78);
  font-size: .95rem;
}

/* バッジ（開催予定） */
.event-badge{
  display: inline-flex;
  align-items: center;
  padding: .18em .6em;
  border-radius: 999px;
  font-size: .78rem;
  letter-spacing: .08em;
  margin-right: .6em;
  vertical-align: middle;
  border: 1px solid rgba(255,255,255,.18);
  background: rgba(255,255,255,.06);
  color: rgba(245,243,239,.92);
}

.event-badge.is-upcoming{
  border-color: rgba(212,175,55,.55);
  background: rgba(212,175,55,.12);
  color: #ffd77a;
}

/* ==============================
   News
============================== */
.news{
  padding:3em 0;
  border-bottom:1px solid #333;
  background:rgba(24,16,14,.75);
}

.news-grid{
  display:flex;
  flex-wrap:wrap;
  gap:1.3rem;
  justify-content:center;
}

.news-card{
  flex:1 1 260px;
  max-width:calc(33.333% - 1rem);
  background:rgba(45,30,28,.92);
  border-radius:10px;
  padding:1.1em 1.15em 1.25em;
  border:1px solid rgba(212,175,55,.18);
  box-shadow:0 2px 8px rgba(0,0,0,.5);
  transition:transform .25s, box-shadow .25s, border-color .25s;
}

.news-card:hover{
  transform:translateY(-3px);
  box-shadow:0 6px 18px rgba(0,0,0,.6);
  border-color:rgba(212,175,55,.55);
}

.news-card h3{
  font-size:.95rem;
  letter-spacing:.08em;
  margin:0 0 .45em;
  color:#f5f3ef;
}

.news-card p{
  margin:0;
  font-size:.95rem;
  line-height:1.7;
  color:#f0e6dc;
}

.news-card p + p{ margin-top:.4em; }

.news-card a{
  color:#d4af37;
  text-decoration:underline;
  text-underline-offset:2px;
}

@media (max-width:960px){
  .news-card{ max-width:calc(50% - 1rem); }
}

@media (max-width:640px){
  .news{ padding:2.4em 0; }
  .news-grid{ gap:1rem; }
  .news-card{ max-width:100%; }
}

/* News：最新3件のみ表示（残りは折りたたみ） */
.news-archive{
  margin: 1.2rem auto 0;
  border: 1px solid rgba(212,175,55,.18);
  border-radius: 10px;
  background: rgba(45,30,28,.55);
  overflow: hidden;
}

.news-archive > summary{
  cursor: pointer;
  padding: 1em 1.05em;
  color: #f0e0c0;
  letter-spacing: .08em;
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: rgba(0,0,0,.12);
}

.news-archive > summary::-webkit-details-marker{ display: none; }

.news-archive > summary::after{
  content: "＋";
  opacity: .9;
  font-size: 1.05em;
  transform: translateY(-1px);
}

.news-archive[open] > summary::after{ content: "－"; }

.news-archive-body{ padding: 1em 1.05em 1.2em; }

.news-archive > summary:hover{ background: rgba(0,0,0,.18); }

/* ==============================
   Screenings（上映情報／劇場リスト）
============================== */
#schedule.screenings{
  padding:3em 0;
  border-bottom:1px solid #333;
  background:rgba(24,16,14,.75);
}

#schedule.screenings .screenings-lead{
  margin:0 0 1.8em;
  color:#eee;
  font-size:.98rem;
}

.screenings-meta{
  margin:0 0 2em;
  font-size:.92rem;
  color:#ddd;
}

.screenings-meta dl{
  display:flex;
  flex-wrap:wrap;
  gap:1.2rem 2.4rem;
}

.screenings-meta-item{
  display:flex;
  gap:.6rem;
  align-items:baseline;
}

.screenings-meta dt{
  font-size:.86rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:#f0e0c0;
}

.screenings-meta dd{ margin:0; }

.screenings-list{
  display:flex;
  flex-wrap:wrap;
  gap:1.4rem;
  justify-content:center;
}

.screening-card{
  flex:1 1 260px;
  max-width:calc(50% - .7rem);
  background:rgba(12,8,8,.9);
  border-radius:10px;
  padding:1.2em 1.2em 1.4em;
  border:1px solid rgba(212,175,55,.18);
  box-shadow:0 2px 8px rgba(0,0,0,.5);
  position:relative;
}

.screening-header{
  display:flex;
  flex-direction:column;
  gap:.1rem;
  margin-bottom:.5em;
}

.screening-area{
  font-size:.86rem;
  letter-spacing:.12em;
  color:#ccc;
}

.screening-theater{
  font-size:1.1rem;
  font-weight:600;
}

.screening-period{
  font-size:.95rem;
  margin:0 0 .4em;
}

.screening-status{
  font-size:.78rem;
  display:inline-block;
  margin:0 0 .4em;
  padding:.15em .65em;
  border-radius:999px;
}

.screening-note{
  font-size:.9rem;
  margin:0;
  color:#ddd;
}

.screening-card.is-finished .screening-status{
  background:rgba(180,180,180,.2);
  border:1px solid rgba(255,255,255,.5);
  color:#f5f5f5;
}

.screening-card.is-coming-soon .screening-status{
  background:rgba(197,22,46,.25);
  border:1px solid rgba(197,22,46,.7);
  color:#ffd9d9;
}

@media (max-width:768px){
  .screenings-list{ flex-direction:column; }
  .screening-card{ max-width:100%; }
}
/* 上映中（延長） */
.screening-card.is-now-showing .screening-status{
  background: rgba(212,175,55,.22);
  border: 1px solid rgba(212,175,55,.85);
  color: #fff3c4;
  box-shadow: 0 0 0 1px rgba(212,175,55,.12), 0 6px 16px rgba(0,0,0,.35);
}

/* ハイライト共通（囲って目立たせる） */
.screening-highlight{
  margin: .7em 0 .9em;
  padding: .75em .9em;
  border-radius: 10px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.12);
}

.screening-highlight-title{
  margin: 0 0 .35em;
  font-size: .9rem;
  letter-spacing: .08em;
}

.screening-highlight-text{
  margin: 0;
  font-size: .92rem;
  color: #eae6de;
}

/* 延長決定だけ色を変えて強調 */
.screening-highlight.is-extended{
  background: rgba(212,175,55,.10);
  border: 1px solid rgba(212,175,55,.40);
}

.screening-highlight.is-extended .screening-highlight-title{
  color: #ffd77a;
}

/* ==============================
   Story stills slider（劇中写真）
============================== */
.story-stills{
  margin:2em auto 0;
  max-width:1000px;
}

.story-stills-inner{
  width:100%;
  background:#000;
  border-radius:10px;
  overflow:hidden;
  box-shadow:0 4px 16px rgba(0,0,0,.6);
  position:relative;
}

.story-stills-inner::before{
  content:"";
  display:block;
  padding-top:56.25%;
}

.story-still{
  position:absolute;
  inset:0;
  opacity:0;
  transition:opacity 1.5s ease;
}

.story-still.is-active{ opacity:1; }

.story-still img{
  display:block;
  width:100%;
  height:auto;
}

@media (max-width:768px){
  #story .story-stills{
    width:100vw;
    max-width:none;
    margin-top:1.6em;
    margin-left:calc(50% - 50vw);
    margin-right:calc(50% - 50vw);
  }
  #story .story-stills-inner{ border-radius:0; }
}

/* ==============================
   Footer
============================== */
footer{
  background:rgba(24,16,14,.65);
  text-align:center;
  padding:1em;
  font-size:.9rem;
  color:#aaa;
}

/* ==============================
   Legacy / 未使用の可能性が高いもの
   （HTMLを見て確定したら削除候補）
============================== */
/*
  - cast-grid / cast-card（コメント的に未使用）
  - lead-actors（複数主演の旧レイアウト）
*/
