@charset "UTF-8";

/* 各ページ固有のスタイル。share.css の後に読み込む。

   目次
   01 お問い合わせ・規約の補助スタイル
   02 トップページ
   03 ガリレオパークについて
   04 イベント・ブログ・ニュース：一覧と詳細
   05 スペース紹介・予約
   06 お問い合わせ・Contact Form 7
   07 利用規約・プライバシー・クッキーポリシー
   08 イベント：未登録画像・終了表示・ゲスト写真
*/

/* ==========================================================================
   01 お問い合わせ・規約の補助スタイル
   ========================================================================== */

/*　privacy-------------------------------------------------------------------------*/
.privacy {
  text-align: left;
  padding-bottom: 6rem;
  width: 100%;
  margin-right: auto;
  margin-left: auto;
}
.privacy h2 {
  font-size: 2rem;
  margin-top: 5rem;
  margin-bottom: 1.5rem;
}
.privacy h3 {
  font-size: 1.8rem;
  margin-top: 2rem;
  margin-bottom: 1.5rem;
}
.privacy h4 {
  font-size: 1.7rem;
  margin-top: 2rem;
  margin-bottom: 1.5rem;
}
.privacy h5 {
  font-size: 1.6rem;
  margin-top: 2rem;
  margin-bottom: 1.5rem;
}
.privacy h6 {
  font-size: 1.5rem;
  margin-top: 2rem;
  margin-bottom: 1.5rem;
}
.privacy p {
  margin-bottom: 1.5rem;
}
.privacy ul {
  margin-top: 1rem;
  margin-bottom: 1rem;
  padding-left: 3rem;
  line-height: 1.6;
}
.privacy ul li {
  margin-bottom: 0.7rem;
}
.privacy ol {
  margin-top: 1rem;
  margin-bottom: 1rem;
  padding-left: 3rem;
  line-height: 1.6;
}
.privacy ol li {
  margin-bottom: 0.7rem;
}
.privacy a {
  text-decoration: underline;
}

/***********
 * お問い合わせ
 * *********/
.contact {
  padding-block-end: 10rem;
}
.contact p {
  text-align: center;
}
/ .contact__mc {
  text-align: center;
  border-bottom: 1px solid #939393;
  padding-bottom: 10rem;
}
.contact_tel {
  text-align: center;
  padding-top: 6rem;
  padding-bottom: 7rem;
  border-bottom: 1px solid #939393;
}
.contact_tel h2 {
  margin-bottom: 2rem;
}
.contact_tel .tel {
  font-family: 'Outfit', sans-serif;
  font-weight: 700;
  padding-block: 0;
  font-size: 4rem;
  line-height: 1;
}
.contact_tel .tel a {
  text-decoration: none;
}
.contact_tel .tel i {
  margin-inline-end: 1rem;
}
.contact_tel .tel i img {
  margin-block-start: -0.8rem;
}
.form {
  padding-top: 5rem;
}
.form h2 {
  text-align: center;
}
.form p {
  margin-bottom: 0;
}
.form_title {
  margin-block-end: 3rem;
}

.form__inner {
  width: 100%;
  max-width: 73rem;
  margin-right: auto;
  margin-left: auto;
}
.form__inner dl {
  display: flex;
  margin-bottom: 2.3rem;
  text-align: left;
  align-items: center;
}
.form__inner dl dt {
  width: 25%;
  font-size: 1.3rem;
}
.form__inner span.red {
  color: red;
}
.form__inner dl dd {
  width: 75%;
}
.form__inner dl dd #preview {
  width: 100%;
  height: auto;
}
.form__inner dl dd a {
  text-decoration: underline;
}
.ex p {
  text-align: left;
  font-size: 1.3rem;
  margin-block-end: 0.5rem;
}
.confirm .form__inner dl {
  text-align: left;
  border-bottom: 1px solid #cccccc;
}
.form.confirm p {
  text-align: left;
}


.form.finish p {
  margin-block-end: 3rem;
}

.confirm .btn p {
  display: flex;
  justify-content: center;
}
.form__inner .btn {
  padding-top: 8rem;
}
.form__inner .btn input {
  background: var(--gold-gra);
  width: 26rem;
  padding-top: 1rem;
  padding-bottom: 1rem;
  color: #111111;
  text-shadow: 1px 1px 1px #ffffff;
  border-radius: 6rem;
  margin-block-end: 2rem;
  font-size: 1.5rem;
  cursor: pointer;
  transition: 0.6s;
}
.form__inner .btn input:hover {
  background-position: right center;
  background-size: 200%;
  transition: 0.6s;
}

.finish__inner {
  text-align: left;
}
.finish__inner h2 {
  font-family: var(--title-font);
  font-size: 2.4rem;
  margin-block-end: 4rem;
  text-align: center;
}
.finish__inner p {
  margin-block-end: 2rem;
}
#formWrap {
}
#formWrap dl {
  border-bottom: 1px solid #cccccc;
}
#formWrap dt {
  width: 28%;
}
#formWrap dd {
  width: 72%;
}
/* home ------------------------------------------------------------------------------*/

/*　Media Queries　-------------------------------------------------------*/
@media (max-width: 1280px) {
}
@media (max-width: 1120px) {
}
@media (max-width: 919px) {
}
@media (max-width: 767px) {
  /**********
   * お問い合わせ
   * *************/
  .contact__page {
    padding-top: 3rem;
  }
  .contact__mc {
    padding-bottom: 5rem;
  }
  .contact_tel {
    padding-top: 3.5rem;
    padding-bottom: 3.5rem;
  }
  .contact_tel h2 {
    font-size: 2rem;
    margin-block-end: 1rem;
  }
  .contact_tel .tel {
    font-family: 'Arial';
    padding-block: 0;
    font-size: 2.4rem;
  }
  .contact_tel .tel img {
    width: 2.3rem;
    height: auto;
  }
  .form {
    padding-top: 5rem;
  }
  .form h2 {
    font-size: 2rem;
    margin-block-end: 2rem;
  }
  .contact__page h2 {
    margin-bottom: 2rem;
  }
  .contact__page .form h2 {
    margin-bottom: 1rem;
  }
  .form__inner dl {
    display: block;
    margin-bottom: 2rem;
  }
  .form__inner dl dt {
    width: 100%;
    text-align: center;
    margin-bottom: 0.5rem;
  }
  .form__inner dl dt sup {
    color: red;
  }
  .form__inner dl dd {
    width: 100%;
  }
  .form__inner dl dd.file {
    text-align: center;
    padding-top: 3rem;
  }
  .form__inner dl dd #preview {
    width: 100%;
    height: auto;
    padding: 2rem;
  }
  .form__inner .btn {
    padding-top: 4rem;
  }
  #formWrap dt {
    width: 100%;
    text-align: left;
  }
  #formWrap dd {
    width: 100%;
  }
  a.privacy {
    display: block;
    margin: 0.5rem auto;
  }
  .privacypolicy h2 {
    font-size: 2.4rem;
  }
  .cookie__block h2 {
    font-size: 2.4rem;
  }
}
@media (max-width: 576px) {
}
@media (max-width: 414px) {
}
@media (max-width: 320px) {
}

/* ==========================================================================
   02 トップページ
   ========================================================================== */

/* トップページ専用：ヒーロー・イベント・スペース・紹介・ブログ・ニュース */
.hero {
  position: relative;
  width: 100%;
  aspect-ratio: 1366/768;
  background: #292a2a;
  isolation: isolate;
}

.hero-slides,
.hero-slide {
  position: absolute;
  inset: 0;
}

.hero-slide {
  opacity: 0;
  /* フェードアウトが終わってから非表示にし、前後の画像を重ねて切り替える。 */
  transition:
    opacity 1.2s ease-in-out,
    visibility 0s linear 1.2s;
  visibility: hidden;
  pointer-events: none;
}

.hero-slide.is-active {
  opacity: 1;
  visibility: visible;
  transition-delay: 0s;
  pointer-events: auto;
}

.hero-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
@media (max-width: 767px) {
  .hero-slide:nth-child(8) img {
    object-fit: contain;
  }
}
.hero-slide-link {
  display: block;
  width: 100%;
  height: 100%;
}

.hero-slide-link:focus-visible {
  outline: 3px solid #fff;
  outline-offset: -6px;
}

.hero-controls {
  position: absolute;
  right: 30px;
  bottom: 32px;
  display: flex;
  align-items: center;
  gap: 12px;
}

.hero-play {
  border: 0;
  background: #0005;
  color: #fff !important;
  min-width: 36px;
  height: 36px;
  border-radius: 50%;
  font-size: 16px !important;
}

.hero-dots {
  display: flex;
  gap: 0;
}

.hero-dots button {
  position: relative;
  width: 20px;
  height: 36px;
  border: 0;
  background: none;
  padding: 0;
}

.hero-dots button::after {
  content: '';
  position: absolute;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: #fff;
  inset: 12px 4px;
}

.hero-dots button[aria-pressed='true']::after {
  background: var(--red);
}

/* 見出し・一覧へのリンク */
.section-heading {
  display: flex;
  gap: 48px;
  align-items: center;
  margin-bottom: 54px;
}

.section-heading > .section-title,
.blog-top > .section-title,
.news-layout > div {
  flex: 0 0 var(--heading-width, 320px);
  min-width: 0;
}

.section-heading > p,
.blog-feature,
.news-list {
  flex: 1;
  min-width: 0;
}

.section-heading > p {
  font-size: var(--body-font-size);
  line-height: 1.7;
  margin: 8px 0 0;
}

.section-title {
  font-weight: 700;
  margin: 0;
}

.section-title .en {
  display: block;
  color: var(--red);
  font-family: Urbanist, Arial, sans-serif;
  font-size: 100px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
}

.section-title .en > span {
  color: #000;
}

.section-title .ja {
  display: block;
  font-size: var(--body-font-size);
  line-height: 1.5;
  margin-top: 6px;
  letter-spacing: 0;
}

.section-action {
  display: flex;
  justify-content: center;
  margin-top: 60px;
}

.outline-link {
  position: relative;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  min-height: 76px;
  padding: 16px 30px;
  border: 1px solid var(--red);
  border-radius: 50px;
  background: #fff;
  color: #000;
  font-size: 17px;
  font-weight: 700;
  transition:
    background 0.2s,
    color 0.2s;
}

.outline-link > span {
  position: absolute;
  right: -18px;
  top: 50%;
  width: 40px;
  height: 1px;
  background: var(--red);
}

.outline-link > span::before {
  content: '';
  position: absolute;
  left: 0;
  top: -5px;
  width: 10px;
  height: 10px;
  background: var(--red);
  border-radius: 50%;
}

.site .outline-link:hover {
  background: var(--red);
  color: #fff;
}
.site .outline-link:hover > span::before {
  background: #fff;
  animation: iconMove 0.6s ease 0.1s forwards;
}

/* イベント */
.home-event {
  padding-top: 70px;
  padding-bottom: 78px;
}

.event-list,
.blog-list {
  --card-gap: 36px;
  display: flex;
  flex-wrap: wrap;
  gap: var(--card-gap);
}

.event-card,
.blog-card {
  flex: 0 0 calc((100% - var(--card-gap) - var(--card-gap)) / 3);
  min-width: 0;
}

.event-card a,
.blog-card a {
  display: block;
}

.event-image {
  position: relative;
  overflow: hidden;
  margin-right: 10px;
  box-shadow: 10px 10px var(--red);
  margin-bottom: 23px;
}

.event-image > img {
  display: block;
  width: 100%;
  aspect-ratio: 342/202;
  object-fit: cover;
  transition:
    transform 0.3s,
    opacity 0.3s;
}

.event-card a:is(:hover, :focus-visible) .event-image > img {
  transform: scale(1.04);
}

.event-status {
  position: absolute;
  left: 10px;
  bottom: 10px;
  display: flex;
  width: 58px;
  height: 58px;
  border-radius: 50%;
  align-items: center;
  justify-content: center;
  background: var(--red);
  color: #fff;
  font-size: 11px;
  line-height: 1.2;
  font-weight: 700;
  text-align: center;
}

.event-status.upcoming {
  background: #0063ff;
}

.event-copy {
  padding-inline: 8px;
}

.event-copy h3,
.blog-copy h3 {
  font-size: 17px;
  line-height: 1.5;
  font-weight: 700;
  margin: 0;
}

.event-copy .event-date {
  font-size: var(--body-font-size);
  color: var(--red);
  line-height: 1.4;
  margin: 0;
}

.excerpt {
  font-size: var(--body-font-size);
  line-height: 1.5;
  margin: 0;
}

/* スペース：マップ上のボタンで対応する写真を拡大 */
.home-space {
  padding-bottom: 136px;
}

.home-space .section-heading {
  margin-bottom: 34px;
}

.space-layout {
  display: flex;
  gap: 62px;
  align-items: center;
}

.space-layout > .space-map {
  flex: 1 1 0;
  min-width: 0;
}

.space-layout > .space-list {
  flex: 1.04 1 0;
  min-width: 0;
}

.space-map {
  position: relative;
}

.space-map > img {
  display: block;
  width: 100%;
}
.space-map a img {
  transform: scale(1.0);
  transition: 0.6s;
}
.space-map a:hover img {
  transform: scale(1.2);
  transition: 0.6s;
}
.map-point {
  position: absolute;
  width: 14%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
}

.map-point img {
  display: block;
  width: 100%;
}

.map-studio {
  left: 18%;
  top: 44%;
}

.map-court {
  left: 45%;
  top: 44%;
}

.map-theater {
  left: 76%;
  top: 44%;
}

.map-museum {
  left: 64%;
  top: 78%;
}

.space-list {
  --space-gap: 16px;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-gap);
}

.space-list > a {
  flex: 0 0 calc((100% - var(--space-gap)) / 2);
  min-width: 0;
  display: block;
  position: relative;
  overflow: hidden;
}

.space-list img {
  display: block;
  width: 100%;
  aspect-ratio: 260/173;
  object-fit: cover;
  transition: transform 0.3s;
}

.space-layout:has(.map-studio:is(:hover, :focus-visible)) .space-list a[href$='#studio'] img,
.space-layout:has(.map-museum:is(:hover, :focus-visible)) .space-list a[href$='#museum'] img,
.space-layout:has(.map-court:is(:hover, :focus-visible)) .space-list a[href$='#court'] img,
.space-layout:has(.map-theater:is(:hover, :focus-visible)) .space-list a[href$='#theater'] img {
  transform: scale(1.04);
}

.space-list span {
  position: absolute;
  bottom: 0;
  right: 0;
  min-width: 79px;
  padding: 3px 12px;
  background: var(--red);
  color: #fff;
  font-family: Urbanist, Arial, sans-serif;
  font-size: 18px;
  font-weight: 700;
  text-align: center;
}

.home-space .section-action {
  margin-top: 42px;
}

/* ガリレオパークの紹介 */
.home-about {
  background: var(--red);
  padding: 51px 0 65px;
}

.about-panel {
  position: relative;
  overflow: hidden;
  border-radius: 16px;
  padding: 43px 40px 40px;
  background: #fff url('../images/home/about-stripe-left.png') top left/474px auto no-repeat;
}

.about-panel::before {
  content: '';
  position: absolute;
  bottom: 0;
  right: 0;
  width: 386px;
  height: 387px;
  background: url('../images/home/about-stripe-right.png') right bottom/contain no-repeat;
  pointer-events: none;
}

.about-layout,
.about-panel > .section-action {
  position: relative;
}

.about-layout {
  --about-copy-width: 370px;
  --about-gap: 48px;
  display: flex;
  gap: var(--about-gap);
  align-items: center;
}

.about-copy {
  flex: 0 0 var(--about-copy-width);
  min-width: 0;
}

.about-copy > p {
  font-size: var(--body-font-size);
  line-height: 1.8;
  margin: 18px 0 0;
}

.about-video {
  display: block;
  width: calc(100% - var(--about-copy-width) - var(--about-gap));
  min-width: 0;
  aspect-ratio: 16/9;
  object-fit: cover;
  background: #151515;
}

.about-panel .section-action {
  margin-top: 25px;
}

.about-panel .outline-link {
  min-width: 390px;
}

/* ブログ */
.home-blog {
  padding-block: 90px 110px;
}

.blog-top {
  display: flex;
  gap: 48px;
  align-items: flex-start;
  margin-bottom: 48px;
}

.blog-feature > a {
  --feature-gap: 24px;
  display: flex;
  flex-direction: row-reverse;
  gap: var(--feature-gap);
  align-items: flex-end;
}

.blog-feature .blog-image {
  flex: 0 0 calc((100% - var(--feature-gap)) / 2);
  width: calc((100% - var(--feature-gap)) / 2);
  min-width: 0;
}

.blog-feature .blog-copy {
  flex: 1;
  min-width: 0;
}

.blog-list {
  --card-gap: 16px;
}

.blog-image {
  overflow: hidden;
}

.blog-image img {
  width: 100%;
  aspect-ratio: 352/202;
  object-fit: cover;
  display: block;
  transition:
    transform 0.3s,
    opacity 0.3s;
}

.blog-card .blog-image {
  margin-bottom: 12px;
}

.blog-feature a:is(:hover, :focus-visible) .blog-image img,
.blog-card a:is(:hover, :focus-visible) .blog-image img {
  transform: scale(1.04);
}

.blog-category {
  font-size: var(--body-font-size);
  line-height: 1.5;
  margin: 2px 0 5px;
}

/* ニュース */
.home-news {
  background: #f5f5f5;
  padding: 64px 0 54px;
}

.news-layout {
  display: flex;
  gap: 48px;
}

.news-layout .section-title .en {
  font-size: 88px;
}

.outline-link.compact {
  font-size: 16px;
  min-height: 52px;
  padding: 9px 33px;
  margin-top: 34px;
}

.news-list {
  list-style: none;
  padding: 0;
  margin: 0;
  border-top: 1px solid #555;
}

.news-list li {
  border-bottom: 1px solid #555;
}

.news-list a {
  display: flex;
  align-items: center;
  gap: 18px;
  min-height: 64px;
  padding: 13px 8px;
  font-size: var(--body-font-size);
  line-height: 1.5;
}

.news-list a:hover {
  color: var(--red);
}

.news-list a > span {
  flex: 1;
  min-width: 0;
}

.news-list time {
  flex: 0 0 120px;
  font-variant-numeric: tabular-nums;
  font-size: var(--body-font-size);
}

/* 画面幅ごとのトップページ調整 */
@media (min-width: 1600px) {
  .hero {
    max-height: 1000px;
  }
}

@media (max-width: 1199px) {
  .section-heading,
  .blog-top,
  .news-layout {
    --heading-width: 280px;
    gap: 30px;
  }

  .section-title .en {
    font-size: 88px;
  }

  .space-layout {
    gap: 36px;
  }

  .about-layout {
    --about-copy-width: 34%;
    --about-gap: 35px;
  }

  .about-copy > p {
    font-size: var(--body-font-size);
  }

  .event-list {
    --card-gap: 25px;
  }
}

@media (max-width: 991px) {
  .section-heading,
  .blog-top,
  .news-layout {
    --heading-width: 230px;
    gap: 24px;
  }

  .section-title .en {
    font-size: 76px;
  }

  .section-title .ja {
    font-size: var(--body-font-size);
  }

  .section-heading > p {
    font-size: var(--body-font-size);
  }

  .event-copy h3,
  .blog-copy h3 {
    font-size: 15px;
  }

  .event-status {
    width: 50px;
    height: 50px;
    font-size: 12px;
  }

  .event-copy {
    padding: 0;
  }

  .about-panel {
    padding: 35px 28px;
  }

  .about-layout {
    --about-copy-width: calc((100% - 28px) / 2.25);
    --about-gap: 28px;
  }

  .about-copy > p {
    font-size: var(--body-font-size);
  }

  .home-blog {
    padding-block: 75px;
  }

  .blog-feature > a {
    --feature-gap: 18px;
  }

  .news-list a {
    font-size: var(--body-font-size);
    gap: 10px;
  }

  .news-list time {
    flex-basis: 100px;
    font-size: var(--body-font-size);
  }

  .news-layout .section-title .en {
    font-size: 76px;
  }
}

@media (max-width: 767px) {
  .hero {
    aspect-ratio: 4/5;
    max-height: 740px;
    min-height: 440px;
  }

  .hero-slide:first-child img {
    object-position: 46% center;
  }

  .hero-controls {
    right: 16px;
    bottom: 18px;
    gap: 8px;
  }

  .hero-dots button {
    width: 24px;
    height: 44px;
  }

  .hero-dots button::after {
    width: 10px;
    height: 10px;
    inset: 17px 7px;
  }

  .hero-play {
    width: 40px;
    height: 40px;
  }

  .section-heading {
    display: block;
    margin-bottom: 30px;
  }

  .section-heading > p {
    margin-top: 22px;
    line-height: 1.9;
  }

  .section-title .en,
  .news-layout .section-title .en {
    font-size: 72px;
    letter-spacing: -2px;
  }

  .section-title .ja {
    font-size: var(--body-font-size);
    margin-top: 4px;
  }

  .home-event {
    padding-top: 48px;
    padding-bottom: 66px;
  }

  .event-list {
    --card-gap: 36px;
  }

  .event-card,
  .blog-card {
    flex-basis: 100%;
  }

  .event-image {
    margin-right: 8px;
    box-shadow: 8px 8px var(--red);
    margin-bottom: 20px;
  }

  .event-image > img {
    aspect-ratio: 342/202;
  }

  .event-copy h3,
  .blog-copy h3 {
    font-size: 16px;
  }

  .event-copy .event-date {
    font-size: var(--body-font-size);
    margin: 3px 0 5px;
  }

  .excerpt {
    font-size: var(--body-font-size);
    line-height: 1.7;
  }

  .event-status {
    width: 56px;
    height: 56px;
    font-size: 13px;
  }

  .section-action {
    margin-top: 34px;
  }

  .outline-link {
    min-height: 62px;
    font-size: 14px;
    padding: 14px 23px;
    max-width: calc(100% - 16px);
  }

  .outline-link > span {
    width: 29px;
    right: -14px;
  }

  .home-space {
    padding-bottom: 65px;
  }

  .home-space .section-heading {
    margin-bottom: 28px;
  }

  .space-layout {
    flex-direction: column;
    align-items: stretch;
    gap: 30px;
  }

  .space-layout > .space-map,
  .space-layout > .space-list {
    flex: none;
  }

  .space-map {
    max-width: 500px;
    width: 100%;
    margin: auto;
  }

  .space-list {
    --space-gap: 12px;
  }

  .space-list span {
    font-size: 15px;
    min-width: 68px;
    padding: 3px 9px;
  }

  .home-space .section-action {
    margin-top: 32px;
  }

  .home-about {
    padding: 28px 0;
  }

  .about-panel {
    padding: 26px 22px 30px;
    border-radius: 12px;
    background-size: 300px;
  }

  .about-panel::before {
    width: 260px;
    height: 260px;
  }

  .about-layout {
    flex-direction: column;
    align-items: stretch;
    gap: 26px;
  }

  .about-copy {
    flex: none;
  }

  .about-video {
    width: 100%;
  }

  .about-copy > p {
    font-size: var(--body-font-size);
    line-height: 1.9;
    margin-top: 20px;
  }

  .about-panel .outline-link {
    min-width: 0;
    font-size: 13px;
    padding: 14px 18px;
  }

  .about-panel .section-action {
    margin-top: 28px;
  }

  .home-blog {
    padding-block: 55px 62px;
  }

  .blog-top {
    display: block;
    margin-bottom: 30px;
  }

  .blog-feature {
    margin-top: 28px;
  }

  .blog-feature > a {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }

  .blog-feature .blog-image {
    flex: none;
    width: 100%;
    aspect-ratio: 352/202;
  }

  .blog-list {
    --card-gap: 30px;
  }

  .blog-category {
    font-size: var(--body-font-size);
  }

  .home-news {
    padding: 45px 0;
  }

  .news-layout {
    flex-direction: column;
    gap: 28px;
  }

  .news-layout > div {
    flex: none;
  }

  .outline-link.compact {
    margin-top: 22px;
    min-height: 45px;
    font-size: 14px;
  }

  .news-list a {
    flex-direction: column;
    align-items: stretch;
    gap: 4px;
    padding: 16px 0;
    font-size: var(--body-font-size);
  }

  .news-list time {
    flex: none;
    font-size: var(--body-font-size);
  }
}

/* ==========================================================================
   03 ガリレオパークについて
   ========================================================================== */

/* About専用：タイトル帯・運営会社情報・パートナー紹介 */
/* 運営会社：見出し・ロゴ・会社情報 */

a.btn-red {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 14px 28px;
  border: 2px solid transparent;
  border-radius: 100px;
  background-color: #d93025;
  color: #fff;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
  text-decoration: none;
  transition: background-color 0.2s ease;
  margin-top: 25px;
}

a.btn-red:hover {
  background-color: #b9251c;
  color: #fff;
}

a.btn-red:focus-visible {
  outline: 3px solid #222;
  outline-offset: 4px;
}

@media (prefers-reduced-motion: reduce) {
  a.btn-red {
    transition: none;
  }
}

.company-section {
  padding-top: 72px;
  padding-bottom: 120px;
}
.concept-section {
  padding-top: 72px;
  padding-bottom: 120px;
  padding-inline: 5px;
}
.concept-title {
  font-size: 30px;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
  margin-bottom: 3rem;
}

.company-title {
  font-size: 30px;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
}

.company-logo {
  display: block;
  width: 279px;
  margin: 91px auto 92px;
}

.company-profile {
  width: 100%;
  max-width: 720px;
  margin: 0 auto;
  border: 1px solid #777;
  box-shadow: 10px 10px var(--red);
  background: #fff;
  font-size: var(--body-font-size);
  line-height: 24px;
}

.company-row {
  display: flex;
  min-height: 58px;
  border-bottom: 1px solid #777;
}

.company-row:last-child {
  border-bottom: 0;
}

.company-row dt {
  display: flex;
  align-items: center;
  flex: 0 0 168px;
  padding: 12px 22px;
  border-right: 1px solid #777;
  font-weight: 400;
}

.company-row dd {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  flex: 1;
  min-width: 0;
  padding: 12px 35px;
  margin: 0;
}

.company-row address {
  margin: 0;
  font-style: normal;
}

.company-profile a:hover {
  color: var(--red);
  text-decoration: underline;
}

/* パートナー紹介 */
.partners-section {
  padding-top: 115px;
  padding-bottom: 115px;
}

.partners-title {
  text-align: center;
}

.partners-title img {
  display: block;
  width: 140px;
  margin: 0 auto;
}

.partner-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: start;
  gap: 40px;
  max-width: 1000px;
  margin: 60px auto 0;
}

.partner-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  flex: 0 1 352px;
  min-width: 0;
}

.partner-logo {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 70px;
}

.partner-logo img {
  display: block;
  max-width: 170px;
  max-height: 60px;
  object-fit: contain;
}

/* 提供画像の透明余白を表示枠で調整し、ロゴ本体の大きさをそろえる。 */
.partner-logo .partner-logo-haretombo {
  width: 170px;
  height: 70px;
  max-height: 70px;
  object-fit: cover;
  object-position: center 55%;
}

.partner-card > p {
  width: 100%;
  margin: 24px 0 33px;
  text-align: center;
  font-feature-settings: normal;
  font-size: var(--body-font-size);
  height: 30px;
}

.partner-link {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 288px;
  max-width: 100%;
  min-height: 45px;
  padding: 10px 16px;
  margin-top: auto;
  border: 1px solid var(--red);
  border-radius: 30px;
  background: var(--red);
  color: #fff !important;
  font-size: 16px;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
  transition:
    background-color 0.3s,
    color 0.3s;
}

.partner-link:is(:hover, :focus-visible) {
  background: #fff;
  color: var(--red) !important;
}

/* タブレット表示 */
@media (max-width: 991px) {
  .company-section {
    padding-top: 80px;
  }
  .concept-section {
    padding-top: 80px;
  }
  .company-logo {
    margin-block: 65px 70px;
  }

  .partner-list {
    gap: 24px;
  }

  .partners-section {
    padding-bottom: 120px;
  }
}

/* スマホ表示 */
@media (max-width: 767px) {
  .concept-title {
    margin-bottom: 1.5rem;
  }
  .company-section {
    padding-top: 55px;
  }
  .concept-section {
    padding-top: 55px;
  }
  .company-title {
    font-size: 24px;
  }

  .company-logo {
    width: 240px;
    margin-block: 45px 50px;
  }

  .company-profile {
    box-shadow: 6px 6px var(--red);
    font-size: var(--body-font-size);
    line-height: 1.8;
  }

  .company-row,
  .company-row:first-child {
    min-height: 0;
  }

  .company-row dt {
    flex-basis: 84px;
    padding: 16px 12px;
  }

  .company-row dd {
    padding: 16px 14px;
  }

  .partners-section {
    padding-top: 75px;
    padding-bottom: 75px;
  }

  .partners-title img {
    width: 120px;
  }

  .partner-list {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 65px;
    margin-top: 60px;
  }

  .partner-card {
    flex: none;
    width: 100%;
    max-width: 352px;
  }

  .partner-card > p {
    margin-block: 22px 25px;
    font-size: var(--body-font-size);
    line-height: 1.9;
  }

  .partner-link {
    font-size: 14px;
    min-height: 48px;
  }
}

/* ==========================================================================
   04 イベント・ブログ・ニュース：一覧と詳細
   ========================================================================== */

/* 汎用固定ページの日本語タイトル。長いタイトルは帯の中で折り返す。 */
.page-banner-title-ja {
  max-width: 100%;
  font-family: inherit;
  font-size: clamp(26px, 4vw, 40px);
  line-height: 1.5;
  text-align: center;
  overflow-wrap: anywhere;
}

/* 一覧：イベントは3列、ブログは2列。すべてFlexboxで配置。 */
.event-index {
  padding-top: 156px;
  padding-bottom: 136px;
}
.post-cards {
  display: flex;
  flex-wrap: wrap;
  gap: 100px 16px;
}
.post-card {
  flex: 0 0 calc((100% - 32px) / 3);
  min-width: 0;
}
.post-card > a {
  display: block;
}
.post-photo {
  overflow: hidden;
}
.post-photo img {
  display: block;
  width: 100%;
  aspect-ratio: 352 / 202;
  object-fit: cover;
  transition:
    transform 0.3s,
    opacity 0.3s;
}
.post-card a:is(:hover, :focus-visible) .post-photo img {
  transform: scale(1.04);
}
.post-card h2 {
  margin: 16px 0 10px;
  font-size: 18px;
  line-height: 1.5;
  font-weight: 700;
}
.post-card .post-meta {
  margin: 0 0 8px;
  font-size: var(--body-font-size);
  line-height: 1.5;
}
.post-excerpt {
  margin: 0;
  font-size: var(--body-font-size);
  line-height: 1.7;
  font-feature-settings: normal;
}
/* 記事追加前の2ページ目以降は、リンクにせず無効なボタンで表示。 */
.pagination {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 90px;
  font-family: Urbanist, Arial, sans-serif;
  font-size: 20px;
  line-height: 1.4;
}
.pagination > * {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  min-height: 32px;
  padding: 0;
  border: 0;
  background: none;
}
.pagination button:disabled {
  color: var(--ink);
  opacity: 1;
  cursor: default;
}
/* ブログ：本文とサイドバー */
.article-columns {
  display: flex;
  align-items: flex-start;
  gap: 92px;
}
.article-main {
  flex: 1;
  min-width: 0;
}
.blog-index-page .article-columns {
  padding-top: 130px;
  padding-bottom: 174px;
}
.article-main .post-cards {
  gap: 62px 32px;
}
.article-main .post-card {
  flex-basis: calc((100% - 32px) / 2);
}
.article-sidebar {
  flex: 0 0 260px;
  min-width: 0;
}
.article-sidebar section + section {
  margin-top: 52px;
}
.article-sidebar h2 {
  font-size: 20px;
  line-height: 1.5;
  font-weight: 700;
  padding-bottom: 8px;
  margin: 0 0 30px;
  border-bottom: 1px solid #111;
}
.article-sidebar ul {
  list-style: none;
  padding: 0;
  margin: 0;
  font-size: var(--body-font-size);
  line-height: 1.4;
}
.article-sidebar section:first-child li + li {
  margin-top: 14px;
}
.article-sidebar a:hover,
.article-sidebar a[aria-current] {
  color: var(--red);
  text-decoration: underline;
}
.filter-status {
  margin-bottom: 30px;
  padding: 16px;
  background: #f5f5f5;
  font-size: var(--body-font-size);
}
/* ニュース一覧 */
.news-index {
  padding-top: 136px;
  padding-bottom: 114px;
}
.news-rows {
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 1px solid #777;
}
.news-rows li {
  border-bottom: 1px solid #777;
}
.news-rows a {
  display: flex;
  align-items: center;
  gap: 32px;
  min-height: 63.5px;
  padding: 12px 8px;
  font-size: var(--body-font-size);
  line-height: 1.5;
}
.news-rows time {
  flex: 0 0 106px;
  font-size: var(--body-font-size);
}
.news-rows span {
  flex: 1;
  min-width: 0;
}
.news-rows a:hover {
  color: var(--red);
}
.news-index .pagination {
  margin-top: 60px;
}
/* 詳細記事 */
.article-cover {
  display: block;
  width: 100%;
}
.article-title {
  font-size: 30px;
  font-weight: 400;
  line-height: 1.5;
  margin: 24px 0 16px;
}
.article-body > .article-date {
  margin: 0 0 38px;
  font-size: var(--body-font-size);
  line-height: 1.5;
}
.article-body > p,
.event-guest p,
.event-notes p {
  font-size: var(--body-font-size);
  line-height: 1.7;
  font-feature-settings: normal;
  margin: 0 0 30px;
}
.article-body > p:last-child {
  margin-bottom: 0;
}
.news-post {
  padding-top: 114px;
  padding-bottom: 124px;
}
.news-post .article-title {
  margin-top: 0;
}
.blog-post {
  max-width: 720px;
  padding-bottom: 104px;
}
/* ブログ詳細：本文末尾に前後の記事ボタンを横並びで配置。 */
.post-navigation {
  display: flex;
  justify-content: center;
  gap: 32px;
  margin-top: 48px;
  padding-inline: 10px;
}
.post-navigation .round-link {
  flex: 1;
  min-width: 0;
  max-width: 240px;
  padding-inline: 24px;
}
/* 「前の記事」の線と丸は左側へ反転する。 */
.post-navigation .post-navigation-prev > span {
  right: auto;
  left: -10px;
  transform: scaleX(-1);
}
.article-inline-image {
  display: block;
  width: 360px;
  max-width: 100%;
  aspect-ratio: 360 / 244;
  object-fit: cover;
  margin: 40px 0;
}
/* イベント概要・ゲスト・注意事項・会場アクセス */
.event-post {
  padding-bottom: 280px;
}
.event-post h3 {
  text-align: center;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.5;
  margin: 0 0 16px;
}
.event-summary {
  margin-top: 68px;
}
.event-facts {
  border: 1px solid #555;
  margin: 0;
  font-size: var(--body-font-size);
  line-height: 1.6;
}
.event-facts > div {
  display: flex;
  min-height: 50px;
}
.event-facts > div + div {
  border-top: 1px solid #555;
}
.event-facts dt {
  flex: 0 0 166px;
  font-weight: 400;
  border-right: 1px solid #555;
  padding: 14px 22px;
}
.event-facts dd {
  flex: 1;
  min-width: 0;
  margin: 0;
  padding: 14px 32px;
}
.event-guest {
  margin-top: 50px;
}
.guest-columns {
  display: flex;
  gap: 18px;
  align-items: flex-start;
}
.guest-placeholder {
  flex: 0 0 260px;
  height: 226px;
  background: #e8e8e8;
}
.guest-columns > div:last-child {
  flex: 1;
  min-width: 0;
}
.event-guest h4 {
  font-size: 20px;
  font-weight: 700;
  margin: 0 0 8px;
}
.event-guest .guest-role {
  font-size: var(--body-font-size);
  line-height: 1.4;
  margin-bottom: 30px;
}
.event-notes {
  padding: 30px 16px;
  margin-top: 46px;
  background: #f7f7f7;
}
.event-notes h3 {
  margin-bottom: 32px;
}
.event-notes p {
  font-size: var(--body-font-size);
  margin-bottom: 16px;
}
.event-notes p:last-child {
  margin-bottom: 0;
}
.event-venue {
  margin-top: 68px;
}
.event-venue .access-map {
  height: 556px;
}
@media (max-width: 1100px) {
  .article-columns {
    gap: 44px;
  }
  .article-sidebar {
    flex-basis: 220px;
  }
  .post-card h2 {
    font-size: 16px;
  }
  .post-excerpt,
  .post-card .post-meta,
  .article-sidebar ul {
    font-size: var(--body-font-size);
  }
}
@media (max-width: 767px) {
  .event-index,
  .blog-index-page .article-columns,
  .news-index,
  .news-post {
    padding-top: 56px;
    padding-bottom: 80px;
  }
  .post-cards,
  .article-main .post-cards {
    gap: 40px 20px;
  }
  .post-card,
  .article-main .post-card {
    flex-basis: 100%;
  }
  .article-columns {
    flex-direction: column;
    gap: 64px;
  }
  .article-main,
  .article-sidebar {
    flex: none;
    width: 100%;
  }
  .article-sidebar h2 {
    font-size: 18px;
    margin-bottom: 20px;
  }
  .pagination {
    gap: 6px;
    margin-top: 48px;
    font-size: 16px;
  }
  .pagination > * {
    min-width: 22px;
  }
  .news-rows a {
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    padding: 18px 0;
    font-size: var(--body-font-size);
  }
  .news-rows time {
    flex: none;
    font-size: var(--body-font-size);
  }
  .article-title {
    font-size: 23px;
  }
  .article-body > p,
  .event-guest p {
    font-size: var(--body-font-size);
    line-height: 1.9;
  }
  .article-body > .article-date {
    font-size: var(--body-font-size);
    margin-bottom: 30px;
  }
  .blog-post {
    padding-bottom: 0;
  }
  /* 小さい画面でも線と丸がボタンの文字に重ならない長さにする。 */
  .post-navigation .round-link > span {
    width: 24px;
  }
  .event-facts dt {
    flex-basis: 84px;
    padding: 12px 10px;
  }
  .event-facts dd {
    padding: 12px;
  }
  .guest-columns {
    flex-direction: column;
    gap: 24px;
  }
  .guest-placeholder {
    flex: none;
    width: 220px;
    height: 190px;
  }
  .event-venue .access-map {
    height: 340px;
  }
  .event-post {
    padding-bottom: 80px;
  }
}

/* ==========================================================================
   05 スペース紹介・予約
   ========================================================================== */

/* スペース紹介・予約ページに共通する見出しと料金表 */
.room-heading {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 60px;
  padding: 10px 16px;
  margin: 0;
  background: var(--red);
  color: #fff;
  font-family: Urbanist, Arial, sans-serif;
  font-weight: 700;
  font-size: 26px;
  line-height: 1.4;
}
.room-pricing {
  margin-top: 40px;
}
.room-pricing h3 {
  margin: 0 0 12px;
  font-size: var(--body-font-size);
  font-weight: 700;
}
.room-pricing dl {
  margin: 0;
  border: 1px solid #555;
  font-size: var(--body-font-size);
  line-height: 1.5;
}
.room-pricing dl > div {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  min-height: 43px;
  padding: 10px 12px;
}
.room-pricing dl > div + div {
  border-top: 1px solid #555;
}
.room-pricing dd {
  margin: 0;
  white-space: nowrap;
}
.drawing-download {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  margin-top: 12px;
  gap: 4px;
  font-size: var(--body-font-size);
}
.drawing-download a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: 0;
  background: none;
  padding: 0;
}
/* スペース導入：案内ボタン・動画・フロアマップ */
.space-content {
  padding-top: 110px;
}
.space-content p {
  font-size: var(--body-font-size);
  line-height: 1.8;
  font-feature-settings: normal;
}
.space-intro > p:first-child {
  font-size: var(--body-font-size);
  line-height: 1.75;
  margin: 0;
}
.room-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  margin: 30px 0 40px;
}
.room-nav a {
  flex: 0 1 114px;
}
.room-nav img {
  display: block;
  width: 100%;
}
.room-nav a img {
  transform: scale(1.0);
  transition: 0.6s;
}
.room-nav a:hover img {
  transform: scale(1.1);
  transition: 0.6s;
}
.space-intro .space-hours {
  margin: 0;
  padding: 14px 10px;
  font-size: var(--body-font-size);
  font-weight: 700;
  text-align: center;
  background: var(--red);
  color: #fff;
}
.space-hours a {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.mobile-break {
  display: none;
}

.space-video {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  background: #222;
  object-fit: cover;
}
.floor-plan {
  position: relative;
  margin-top: 20px;
}
.floor-plan > img {
  display: block;
  width: 100%;
}
.floor-point {
  position: absolute;
  width: 11%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
}
.floor-point img {
  display: block;
  width: 100%;
}
.floor-studio {
  left: 18%;
  top: 44%;
}
.floor-court {
  left: 45%;
  top: 44%;
}
.floor-theater {
  left: 76%;
  top: 44%;
}
.floor-museum {
  left: 64%;
  top: 78%;
}

.floor-plan a img {
  transform: scale(1.0);
  transition: 0.6s;
}
.floor-plan a:hover img {
  transform: scale(1.1);
  transition: 0.6s;
}

.interior-notes {
  padding: 22px;
  border: 1px solid #ccc;
  border-radius: 4px;
  margin-top: 40px;
}
.interior-notes h2 {
  font-size: 18px;
  text-align: center;
  font-weight: 700;
  margin: 0 0 18px;
}
.interior-notes p {
  margin: 0;
}
/* 各スペース：手動で切り替えられる写真ギャラリー */
.space-room {
  margin-top: 70px;
}
.space-room + .space-room {
  margin-top: 100px;
}
.space-room > p {
  margin: 20px 0 0;
}
.room-gallery {
  position: relative;
  margin-top: 28px;
}
.room-slides {
  aspect-ratio: 1440 / 770;
  overflow: hidden;
  background: #eee;
}
.room-slide {
  display: block;
  width: 100%;
  height: 100% !important;
  object-fit: cover;
}
.room-slide[hidden] {
  display: none;
}
.gallery-controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.gallery-controls[hidden] {
  display: none;
}
.gallery-controls button {
  position: absolute;
  top: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border: 0;
  padding: 0 0 3px;
  border-radius: 50%;
  background: var(--red);
  color: #fff;
  font-size: 30px;
  line-height: 1;
  transform: translateY(-50%);
}
.gallery-prev {
  left: -24px;
}
.gallery-next {
  right: -24px;
}
.space-content .gallery-count {
  position: absolute;
  bottom: 10px;
  right: 12px;
  padding: 3px 8px;
  margin: 0;
  border-radius: 20px;
  background: #0009;
  color: #fff;
  font-size: 12px;
}
.anchor-target {
  display: block;
  scroll-margin-top: 110px;
}
/* 予約：説明と写真を2列にし、下に料金・カレンダー接続領域を配置 */
.reserve-content {
  padding-top: 110px;
  padding-bottom: 200px;
}
.reserve-intro {
  margin: 0 0 62px;
  font-size: var(--body-font-size);
}
.reserve-room + .reserve-room {
  margin-top: 100px;
}
.reserve-overview {
  display: flex;
  align-items: flex-start;
  gap: 16px;
}
.reserve-copy,
.reserve-photo {
  flex: 1;
  min-width: 0;
}
.reserve-copy .room-heading {
  min-height: 50px;
}
.room-detail-link {
  display: block;
  text-align: right;
  font-size: var(--body-font-size);
  font-weight: 700;
  margin: 4px 0 12px;
}
.room-detail-link:hover {
  color: var(--red);
}
.reserve-copy p {
  font-size: var(--body-font-size);
  line-height: 1.9;
  font-feature-settings: normal;
  margin: 0 0 20px;
}
.red-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 36px;
  padding: 6px 24px;
  border-radius: 30px;
  background: var(--red);
  color: #fff !important;
  font-size: 15px;
  font-weight: 700;
}
.red-pill:hover {
  opacity: 0.8;
}
.reserve-photo > img {
  display: block;
  width: 100%;
}
.reserve-room .room-pricing {
  margin-top: 30px;
}
/* カレンダーは後で埋め込むため、PDFどおりの枠のみ用意。 */
.booking-frame {
  margin-top: 50px;
  min-height: 440px;
}
.booking-skeleton {
  display: flex;
  flex-direction: column;
  height: 440px;
  border: 1px solid #777;
}
.booking-skeleton > div {
  display: flex;
  flex: 1;
}
.booking-skeleton > div + div {
  border-top: 1px solid #777;
}
.booking-skeleton span {
  flex: 1;
}
.booking-skeleton span + span {
  border-left: 1px solid #777;
}
@media (max-width: 767px) {
  .space-content,
  .reserve-content {
    padding-top: 56px;
    padding-bottom: 80px;
  }
  .space-content p,
  .space-intro > p:first-child {
    font-size: var(--body-font-size);
  }
  .room-nav {
    gap: 12px;
  }
  .space-intro .space-hours {
    font-size: var(--body-font-size);
    padding-inline: 6px;
  }
  .interior-notes {
    padding: 18px;
  }
  .room-heading {
    font-size: 23px;
    min-height: 50px;
  }
  .space-room,
  .space-room + .space-room {
    margin-top: 64px;
  }
  .gallery-prev {
    left: -14px;
  }
  .gallery-next {
    right: -14px;
  }
  .gallery-controls button {
    width: 30px;
    height: 30px;
  }
  .room-pricing dl {
    font-size: var(--body-font-size);
  }
  .drawing-download {
    font-size: var(--body-font-size);
  }
  .reserve-intro {
    font-size: var(--body-font-size);
    margin-bottom: 40px;
  }
  .reserve-overview {
    flex-direction: column;
    gap: 24px;
  }
  .reserve-copy,
  .reserve-photo {
    width: 100%;
    flex: none;
  }
  .reserve-copy p {
    font-size: var(--body-font-size);
  }
  .reserve-room + .reserve-room {
    margin-top: 70px;
  }
  .booking-frame {
    margin-top: 30px;
    min-height: 300px;
  }
  .booking-skeleton {
    height: 300px;
  }
}

/* ==========================================================================
   06 お問い合わせ・Contact Form 7
   ========================================================================== */

/* お問い合わせ：電話案内と入力フォーム */
.contact-content {
  padding-top: 172px;
  padding-bottom: 164px;
}
.contact-intro,
.contact-description {
  text-align: center;
  font-size: var(--body-font-size);
  line-height: 1.9;
  margin: 0;
}
.contact-phone {
  text-align: center;
  padding: 70px 0 32px;
  border-bottom: 1px solid #777;
}
.contact-phone h2,
.contact-mail > h2 {
  font-size: 24px;
  font-weight: 700;
  text-align: center;
  margin: 0 0 32px;
}
.contact-phone > a {
  font-family: Urbanist, Arial, sans-serif;
  font-size: 30px;
  font-weight: 800;
  line-height: 1;
}
.contact-phone p {
  margin: 0;
  font-size: var(--body-font-size);
}
.contact-mail {
  padding-top: 48px;
}
.contact-description {
  margin-bottom: 44px;
}
.contact-form,
.contact-confirm {
  max-width: 720px;
  margin-inline: auto;
}
.contact-form fieldset {
  border: 0;
  padding: 0;
  margin: 0;
  min-width: 0;
}
.contact-row {
  display: flex;
  align-items: flex-start;
  gap: 24px;
  margin-bottom: 34px;
}
.contact-row > label,
.contact-row > span,
.contact-row > p {
  flex: 0 0 160px;
  margin: 12px 0 0;
  font-size: var(--body-font-size);
  line-height: 1.5;
}
.required {
  color: #e21b19;
}
.contact-row > input,
.contact-row > textarea,
.contact-row > div {
  flex: 1;
  min-width: 0;
}
.contact-form input:not([type='checkbox']),
.contact-form textarea {
  width: 100%;
  border: 1px solid #bcbcbc;
  border-radius: 8px;
  background: #f3f3f3;
  padding: 10px 14px;
  min-height: 44px;
  font-size: 16px;
  line-height: 1.5;
}
.contact-form textarea {
  min-height: 310px;
  resize: vertical;
}
.contact-form input:focus-visible,
.contact-form textarea:focus-visible {
  outline: 2px solid #1262da;
  outline-offset: 3px;
}
.consent-row {
  align-items: center;
  margin-top: 40px;
  margin-bottom: 64px;
}
.consent-row > span {
  margin: 0;
}
.consent-row > div {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px;
  font-size: var(--body-font-size);
}
.consent-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 0;
}
.consent-label input {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  accent-color: var(--red);
}
.site .consent-row a {
  color: #007aff;
  text-decoration: underline;
}
.contact-action {
  display: flex;
  justify-content: center;
  margin-bottom: 20px;
}
.contact-submit {
  min-width: 256px;
  min-height: 56px;
  max-width: 100%;
  padding: 14px 32px;
  border: 0;
  border-radius: 40px;
  background: #000;
  color: #fff !important;
  font-size: 15px;
}
.contact-submit:hover {
  background: var(--red);
}
/* 確認画面：入力値は画面内だけに保持し、接続先未設定の間は送信しない。 */
.contact-confirm h3 {
  text-align: center;
  font-size: 24px;
  margin: 0 0 30px;
}
.confirmation-values {
  margin: 0 0 32px;
  border-top: 1px solid #ccc;
}
.confirmation-values > div {
  display: flex;
  gap: 24px;
  padding: 20px 0;
  border-bottom: 1px solid #ccc;
  font-size: var(--body-font-size);
}
.confirmation-values dt {
  flex: 0 0 160px;
}
.confirmation-values dd {
  flex: 1;
  min-width: 0;
  margin: 0;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.contact-confirm > p {
  font-size: var(--body-font-size);
  line-height: 1.8;
}
@media (max-width: 767px) {
  .contact-content {
    padding-top: 60px;
    padding-bottom: 80px;
  }
  .contact-intro,
  .contact-description {
    font-size: var(--body-font-size);
  }
  .contact-phone {
    padding-top: 44px;
  }
  .contact-phone h2,
  .contact-mail > h2 {
    font-size: 20px;
  }
  .contact-row {
    flex-direction: column;
    gap: 10px;
    margin-bottom: 26px;
  }
  .contact-row > label,
  .contact-row > span,
  .contact-row > p {
    flex: none;
    margin-top: 0;
    font-size: var(--body-font-size);
  }
  .contact-row > input,
  .contact-row > textarea,
  .contact-row > div {
    flex: none;
    width: 100%;
  }
  .consent-row {
    align-items: flex-start;
    margin-bottom: 40px;
  }
  .confirmation-values > div {
    flex-direction: column;
    gap: 8px;
  }
  .confirmation-values dt {
    flex: none;
  }
}

/* Contact Form 7のラッパーを含めても、静的フォームと同じ幅で表示する。 */
.contact-field .wpcf7-form-control-wrap {
  display: block;
  width: 100%;
}
.contact-field p,
.contact-action p,
.consent-row p {
  margin: 0;
}
.contact-form .wpcf7-list-item {
  margin: 0;
}
.contact-form .wpcf7-acceptance label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 0;
}
.contact-form .wpcf7-acceptance input {
  width: 18px;
  height: 18px;
  accent-color: var(--red);
}
.contact-form .wpcf7-not-valid-tip {
  display: block;
  margin-top: 6px;
  font-size: 13px;
}
.contact-form input.contact-submit {
  width: auto;
  min-width: 256px;
  min-height: 56px;
  padding: 14px 32px;
  border: 0;
  border-radius: 40px;
  background: #000;
  color: #fff;
}
.contact-form input.contact-submit:hover {
  background: var(--red);
}

/* ==========================================================================
   07 利用規約・プライバシー・クッキーポリシー
   ========================================================================== */

/* 規約・ポリシー：PDF原稿の見出しと段落を保ち、本文を読みやすく配置。 */
.legal-content {
  padding-top: 82px;
  padding-bottom: 240px;
  font-feature-settings: normal;
}
.legal-content > h2 {
  text-align: center;
  font-size: 30px;
  line-height: 1.5;
  font-weight: 700;
  margin: 0 0 72px;
}
.legal-content h3,
.legal-content p {
  font-size: var(--body-font-size);
  line-height: 1.7;
  margin: 0;
}
.legal-content h3 {
  font-weight: 700;
}
.legal-content > p,
.legal-content > section {
  margin-bottom: 30px;
}
.legal-content > :last-child {
  margin-bottom: 0;
}
.privacy-content {
  padding-bottom: 180px;
}
.cookie-content {
  padding-bottom: 126px;
}
.cookie-content > section {
  margin-top: 54px;
  margin-bottom: 0;
}
.cookie-content > section + section {
  margin-top: 100px;
}
.cookie-content section h3 {
  font-size: 28px;
  font-weight: 700;
  text-align: center;
  border-bottom: 1px solid #777;
  padding-bottom: 16px;
  margin-bottom: 44px;
}
.cookie-content section p + p {
  margin-top: 28px;
}
.browser-links {
  padding: 0;
  margin: 28px 0 0;
  list-style: none;
  font-size: var(--body-font-size);
  line-height: 1.7;
}
.site .browser-links a {
  text-decoration: underline;
}
@media (max-width: 767px) {
  .legal-content {
    padding-top: 56px;
    padding-bottom: 80px;
  }
  .legal-content > h2 {
    font-size: 23px;
    margin-bottom: 40px;
  }
  .legal-content h3,
  .legal-content p,
  .browser-links {
    font-size: var(--body-font-size);
    line-height: 1.9;
    overflow-wrap: anywhere;
  }
  .cookie-content section h3 {
    font-size: 21px;
    margin-bottom: 28px;
  }
  .cookie-content > section + section {
    margin-top: 56px;
  }
}

/* ==========================================================================
   08 イベント：未登録画像・終了表示・ゲスト写真
   ========================================================================== */

.event-image > .image-placeholder {
  height: 100%;
}

.event-status.ended {
  background: #666;
}

.guest-photo {
  flex: 0 0 260px;
}

.guest-photo img {
  display: block;
  width: 100%;
}

@media (max-width: 767px) {
  .guest-photo {
    flex-basis: auto;
    width: min(100%, 260px);
  }
}

/* 2026-09-18：FAQ・備品表・ミュージアム */
.faq-section {
  padding-block: 80px 120px;
}
.faq-intro {
  margin: 12px 0 32px;
  text-align: center;
}
.galileo-illust {
  text-align: center;
  margin-block: 2rem;
}
.faq-list details {
  border-bottom: 1px solid #ccc;
  background: #fff;
}
.faq-list summary {
  padding: 22px 18px;
  font-size: var(--body-font-size);
  font-weight: 700;
  cursor: pointer;
  display: flex;
  gap: 1rem;
  align-items: center;
}
.faq-list summary::marker {
 content: "";
}
.faq-answer {
  padding: 0 18px 22px;
  margin: 0;
  font-size: var(--body-font-size);
  line-height: 1.8;
  overflow-wrap: anywhere;
  display: flex;
  gap: 1rem;
  align-items: center;
}
.faq-answer > :first-child {
  margin-top: 0;
}
.faq-answer > :last-child {
  margin-bottom: 0;
}
.faq-answer ul,
.faq-answer ol {
  padding-left: 1.5em;
}
.faq-answer ul {
  list-style: disc;
}
.faq-answer ol {
  list-style: decimal;
}
.faq-list summary {
  overflow-wrap: anywhere;
}
.faq-list summary:focus-visible {
  outline: 2px solid var(--red);
  outline-offset: -2px;
}
.faq-list a {
  color: var(--red);
  text-decoration: underline;
}
.equipment-table {
  width: 100%;
  margin: 24px 0 14px;
  border-collapse: collapse;
  background: #fff;
  font-size: var(--body-font-size);
  line-height: 1.7;
  overflow-wrap: anywhere;
}
.equipment-table caption {
  caption-side: top;
  padding-bottom: 14px;
  text-align: left;
  font-weight: 700;
}
.equipment-table th,
.equipment-table td {
  padding: 14px 18px;
  border: 1px solid #ccc;
  text-align: left;
  vertical-align: middle;
}
.equipment-table th {
  width: 34%;
  background: #f6f6f6;
  font-weight: 700;
}
.equipment-table thead th {
  background: var(--red);
  color: #fff;
}
.equipment-note {
  font-weight: 700;
}
.museum-photo {
  display: block;
  width: 100%;
  height: auto;
}
@media (max-width: 767px) {
  .faq-section {
    padding-block: 55px 75px;
  }
  .company-section {
    padding-bottom: 75px;
  }
  .concept-section {
    padding-bottom: 0;
  }
  .mobile-break {
    display: initial;
  }
  .equipment-table th,
  .equipment-table td {
    padding: 12px 10px;
  }
}
