/* 選択されたシネマ案。写真と文字の元データを維持して縦長に組む。 */
.keyvisual { height: auto; min-height: 100svh; display: flex; flex-direction: column; align-items: center; }
.kv-poster { width: min(100%, 430px); aspect-ratio: 390 / 800; flex: none; }
.kv-photo { width: 270%; left: -73%; top: 0; mask-image: linear-gradient(to bottom, #000 0%, #000 73%, transparent 100%); }
.kv-poster::before { inset: 0 45% 25% 0; background: linear-gradient(90deg, #000b, transparent); }
/* 髪の左輪郭は写真幅の約29%。余白の中間に文字の中心を置く。 */
.kv-copy { left: 14.5%; transform: translateX(-50%); }
.kv-program, .kv-logo, .kv-date, .kv-place, .kv-scroll { z-index: 2; }
.kv-program { top: 67%; font-size: 5.64cqw; }
.kv-logo { top: 71%; }
.kv-date { top: 83%; font-size: 6.92cqw; }
.kv-place { top: 88%; font-size: 5.13cqw; }
.kv-scroll { position: absolute; bottom: 1.5%; width: 100%; text-align: center; font: 500 12px/1.2 var(--en); letter-spacing: .16em; text-decoration: none; }
.kv-scroll span { display: block; margin-top: 6px; font-size: 20px; line-height: 1; }
.keyvisual-menu { width: min(100% - 32px, 430px); padding: 4px 0 14px; }
.keyvisual-controls { display: flex; justify-content: flex-end; }
.keyvisual-controls button { position: relative; display: inline-grid; place-items: center; appearance: none; -webkit-appearance: none; width: 44px; height: 44px; padding: 0; margin: 0; color: #909090; border: 0; background: transparent; box-shadow: none; -webkit-tap-highlight-color: transparent; }
.keyvisual-controls .ui-icon { width: 17px; height: 17px; }
.keyvisual-controls button:hover, .keyvisual-controls button:focus-visible { color: #fff; }
.keyvisual-controls button:focus { outline: 0; }
.keyvisual-controls button:focus-visible::after { content: ''; position: absolute; width: 17px; bottom: 7px; border-bottom: 1px solid currentColor; }
#sound-toggle .sound-on, #sound-toggle[aria-pressed="true"] .sound-off { display: none; }
#sound-toggle[aria-pressed="true"] .sound-on { display: initial; }
.keyvisual-nav { position: relative; left: auto; right: auto; bottom: auto; width: 100%; min-height: 52px; justify-content: center; flex-wrap: nowrap; gap: clamp(12px, 3.8vw, 20px); padding: 0; font: 600 12px/1 var(--en); letter-spacing: .02em; }
.keyvisual-nav a { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; color: #eee; }
.music-stop { position: absolute; display: grid; place-items: center; width: 44px; height: 44px; border: 0; padding: 0; background: #0009; opacity: 1; transition: opacity 300ms ease; }
.music-stop.is-dismissing { opacity: 0; pointer-events: none; }
.overview { display: block; }
.chapter-photo { margin-block: 28px; overflow: hidden; }
.chapter-photo img { display: block; width: 100%; object-fit: cover; }
.overview-photo img { height: clamp(238px, 40vw, 480px); object-position: 50% 50%; }
.venue-photo img { height: clamp(160px, 28vw, 300px); object-position: 55% 50%; }
.access-station { margin-top: 24px; font-size: 16px; }
.access-map { margin-top: 28px; background: #e8e8e8; }
.access-map iframe { display: block; width: 100%; height: clamp(270px, 40vw, 400px); border: 0; }
.map-caption { text-align: right; margin-top: 8px; font-size: 14px; }
.checked-date { display: block; margin-top: 6px; color: #999; font-size: 12px; }
.nearby-parking { margin-top: 24px; border-block: 1px solid #45413d; }
.nearby-parking summary { align-items: center; font-size: 15px; }
.parking-options { list-style: none; padding: 0; margin: 0; }
.parking-options li { padding-block: 22px 14px; border-top: 1px solid #45413d; }
.parking-options h3 { margin: 0 0 8px; font: 700 16px/1.6 var(--jp); }
.parking-options p { margin: 0; color: #eee; font-size: 14px; line-height: 1.8; }
.parking-options .parking-meta { color: #aaa; font-size: 13px; }
.parking-links { display: flex; flex-wrap: wrap; gap: 0 20px; margin-top: 4px; font-size: 13px; }
.parking-links a { display: inline-flex; align-items: center; min-height: 44px; white-space: nowrap; }
.parking-checked { margin: 0; padding-bottom: 20px; color: #999; font-size: 12px; line-height: 1.8; }
.shopping-photo img { height: clamp(260px, 38vw, 460px); object-position: 50% 55%; }
.overview-facts { display: grid; grid-template-columns: 1fr 1fr; column-gap: 40px; margin-top: 0; }
.overview-facts > div { display: block; border-top: 0; border-bottom: 1px solid var(--line); padding-block: 20px; }
.overview-facts dt { margin-bottom: 8px; font-size: .875rem; font-weight: 500; color: #65625c; }
.overview-facts dd { font-weight: 700; }
.overview-facts .small { font-weight: 400; }
.event-actions { margin-top: 20px; font-size: 14px; }
.event-actions a { display: inline-flex; align-items: center; min-height: 44px; }
.event-weather { margin-top: 28px; border-top: 1px solid var(--line); padding-top: 24px; }
.weather-heading { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; }
.weather-heading h3 { font: 700 16px/1.4 var(--jp); }
.weather-heading a { font: 500 12px/1.4 var(--en); color: #65625c; }
.weather-status { margin-top: 12px; font-size: 14px; color: #65625c; }
.weather-values { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 16px; margin: 22px 0 0; }
.weather-values dt { font-size: 13px; color: #65625c; margin-bottom: 6px; }
.weather-values dd { font-size: 20px; font-weight: 700; margin: 0; }
.section-number { font-size: 1em; line-height: inherit; color: #ed0014; letter-spacing: inherit; font-variant-numeric: lining-nums; margin: 0; }
.section-dark .section-number { color: #fff; }
.section-label { gap: .4em; }
.photo-credit { margin-top: 14px; color: #bdb9b0; font-size: 12px; line-height: 1.7; }
@media (max-width: 760px) {
  #overview { padding-top: 28px; }
  h2.section-label { font-size: clamp(1.25rem, 6.67vw, 2rem); }
  .section-subtitle { margin-top: 8px; }
  .chapter-photo { width: calc(100% + 40px); max-width: none; margin-inline: -20px; margin-block: 24px; }
  .overview-facts { column-gap: 24px; }
  .overview-facts > div { padding-block: 18px; }
  .reservation-note { background: transparent; padding: 0; }
  .reservation-note > strong { padding: 0; border: 0; color: #d50012; font-size: 1rem; }
  .reservation-note p { font-size: .875rem; }
  .access-grid { margin-top: 24px; }
}
@media (max-width: 380px) {
  .chapter-photo { width: calc(100% + 32px); margin-inline: -16px; }
}
@media print { .kv-scroll, .keyvisual-menu { display: none; } }
