/*
Theme Name: 旭堂南和オフィシャルウェブサイト
Text Domain: kyokudo-nannwa-theme
*/


@charset "UTF-8";
/* 変数 */
:root {
  --accent-color: #a63f3f;
  --main-color: #e6e2d8;
  --dark-brown-color: #3b2f2f;
  --ivory-white-color: #fcfcf9;
  --text-color: #434343;
  --pc: 1440;
  --tab: 768;
  --sp: 393;
  --base-font-family-sans: "Noto Sans JP", sans-serif;
  --base-font-family-serif: "Noto Serif JP", serif;
  --base-font-family-en: "Roboto", sans-serif;
}
/* 共通 */
body {
  font-family: var(--base-font-family-sans);
  font-size: calc(16 / var(--pc) * 100vw);
  color: var(--text-color);
}

.en {
  font-family: var(--base-font-family-en);
}

img {
  max-width: 100%;
  height: auto;
}

.section-wrapper {
  width: calc(960 / var(--pc) * 100vw);
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: calc(32 / var(--pc) * 100vw);
  padding-top: calc(120 / var(--pc) * 100vw);
  padding-bottom: calc(120 / var(--pc) * 100vw);
}

[class*="-heading"] {
  margin: 0 auto;
  padding-bottom: calc(16 / var(--pc) * 100vw);
  width: fit-content;
  position: relative;
  font-family: var(--base-font-family-serif);
  font-style: normal;
  font-weight: 600;
  font-size: calc(32 / var(--pc) * 100vw);
  line-height: calc(46 / var(--pc) * 100vw);
  text-align: center;
  letter-spacing: 0.1em;
  color: var(--text-color);
  &::before {
    content: "";
    display: block;
    width: calc(33 / var(--pc) * 100vw);
    height: calc(0.5 / var(--pc) * 100vw);
    background-color: var(--text-color);
    position: absolute;
    top: calc(23 / var(--pc) * 100vw);
    left: calc(-43 / var(--pc) * 100vw);
  }
  &::after {
    content: "";
    display: block;
    width: calc(33 / var(--pc) * 100vw);
    height: calc(0.5 / var(--pc) * 100vw);
    background-color: var(--text-color);
    position: absolute;
    top: calc(23 / var(--pc) * 100vw);
    right: calc(-43 / var(--pc) * 100vw);
  }
}

[class*="btn-"] {
  display: inline-block;
  width: fit-content;
  padding: calc(12 / var(--pc) * 100vw) calc(24 / var(--pc) * 100vw);
  gap: calc(10 / var(--pc) * 100vw);
  border-radius: calc(5 / var(--pc) * 100vw);
  box-shadow: 0px calc(4 / var(--pc) * 100vw) calc(4 / var(--pc) * 100vw)
    rgba(0, 0, 0, 0.25);
  background: var(--accent-color);
  color: var(--ivory-white-color);
  font-weight: bold;
  transition: opacity 0.2s;
  cursor: pointer;
}

a:hover {
  opacity: 0.8;
}

.grecaptcha-badge {
  visibility: hidden;
}

/* ヘッダー */
.hero {
  position: relative;
  height: calc(1024 / var(--pc) * 100vw);
  background-image: url(./img/背景.jpg);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  overflow: hidden;
}

.site-title {
  > * {
    display: block;
    font-family: var(--base-font-family-serif);
  }
  .role {
    position: absolute;
    top: calc(10 / var(--pc) * 100vw);
    left: calc(162 / var(--pc) * 100vw);
    width: calc((8 * 70) / var(--pc) * 100vw);
    font-size: calc((8 * 20) / var(--pc) * 100vw);
    font-weight: 700;
    text-align-last: justify;
    text-shadow: 0px calc(10 / var(--pc) * 100vw) calc(10 / var(--pc) * 100vw)
      rgba(0, 0, 0, 0.3);
    &::after {
      content: "";
      position: absolute;
      top: calc((8 * 24) / var(--pc) * 100vw);
      left: 0;
      width: calc(782 / var(--pc) * 100vw);
      height: calc(1 / var(--pc) * 100vw);
      background-color: var(--text-color);
    }
  }
  > .name {
    position: absolute;
    top: calc(380 / var(--pc) * 100vw);
    left: calc(144 / var(--pc) * 100vw);
    font-size: calc(80 / var(--pc) * 100vw);
    font-weight: 400;
    letter-spacing: 0.4em;
    writing-mode: vertical-rl;
    text-orientation: mixed;
    &::before {
      content: "";
      background-image: url(../img/覗き梅鉢.png);
      background-size: contain;
      background-repeat: no-repeat;
      position: absolute;
      display: inline-block;
      top: calc(-100 / var(--pc) * 100vw);
      left: calc(10 / var(--pc) * 100vw);
      width: calc(80 / var(--pc) * 100vw);
      height: calc(80 / var(--pc) * 100vw);
    }
  }
  .subtitle {
    position: absolute;
    top: calc(320 / var(--pc) * 100vw);
    left: calc(72 / var(--pc) * 100vw);
    font-size: calc(36 / var(--pc) * 100vw);
    font-weight: 400;
    letter-spacing: 0.5em;
    writing-mode: vertical-rl;
    text-orientation: mixed;
    &::after {
      content: "";
      position: absolute;
      top: 0;
      right: calc(-15 / var(--pc) * 100vw);
      width: calc(1 / var(--pc) * 100vw);
      height: calc(539 / var(--pc) * 100vw);
      background-color: var(--text-color);
    }
  }
}

.menu-container {
  position: absolute;
  top: calc(320 / var(--pc) * 100vw);
  right: calc(900 / var(--pc) * 100vw);
  width: calc(181 / var(--pc) * 100vw);
  .menu-box {
    width: 100%;
    height: calc(46 / var(--pc) * 100vw);
    margin-bottom: calc(24 / var(--pc) * 100vw);
    background-color: var(--accent-color);
    color: var(--ivory-white-color);
    font-family: var(--base-font-family-en);
    font-size: calc(32 / var(--pc) * 100vw);
    font-weight: 700;
    text-align: center;
    line-height: calc(46 / var(--pc) * 100vw);
    letter-spacing: 0.05em;
    cursor: pointer;
  }
}

.mobile-nav {
  position: absolute;
  top: calc(393 / var(--pc) * 100vw);
  right: calc(900 / var(--pc) * 100vw);
  width: calc(181 / var(--pc) * 100vw);
  > ul {
    display: flex;
    flex-direction: column;
    gap: calc(24 / var(--pc) * 100vw);
    > li {
      > a {
        display: block;
        font-family: var(--base-font-family-serif);
        font-size: calc(24 / var(--pc) * 100vw);
        color: var(--accent-color);
        font-weight: 500;
        letter-spacing: 0.05em;
        text-align: left;
        line-height: calc(32 / var(--pc) * 100vw);
      }
    }
  }
}

.mobile-nav-close {
  display: none;
}

.button-mobile-request-link {
  display: none;
}
.hero-image-box {
  width: calc(660 / var(--pc) * 100vw);
  position: absolute;
  top: calc(150 / var(--pc) * 100vw);
  right: calc(-10 / var(--pc) * 100vw);
}

/* .hero-image {
  filter: brightness(2) contrast(1.1) saturate(0.8) hue-rotate(5deg)
    drop-shadow(0 calc(4 / var(--pc)) calc(6 / var(--pc)) rgba(0, 0, 0, 0.3)) !important;
} */

/* お知らせ */
.news-section {
  .news-list {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: calc(16 / var(--pc) * 100vw);
    > li {
      display: flex;
      gap: calc(16 / var(--pc) * 100vw);
      line-height: calc(24 / var(--pc) * 100vw);
      letter-spacing: 0.02em;
      > .news-date {
        font-family: var(--base-font-family-en);
        font-weight: 300;
      }
      a {
        display: block;
      }
      .news-text {
        width: 100%;
        font-family: var(--base-font-family-serif);
        font-weight: 400;
      }
    }
  }
  .news-more {
    text-align: right;
    > a {
      display: inline-block;
      text-align: center;
      padding-left: calc(16 / var(--pc) * 100vw);
      padding-right: calc(16 / var(--pc) * 100vw);
      font-family: var(--base-font-family-en);
      font-weight: 700;
      height: calc(32 / var(--pc) * 100vw);
      line-height: calc(32 / var(--pc) * 100vw);
      color: var(--accent-color);
    }
  }
}
/* イベント */
.event-section {
  background-color: var(--main-color);
  .calendar-button {
    text-align: right;
  }
  .event-list {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    row-gap: calc(48 / var(--pc) * 100vw);
    .event-item {
      width: calc(296 / var(--pc) * 100vw);
    }
  }
}

/* ホバーアクション */
.event-item {
  position: relative;
  width: calc(296 / var(--pc) * 100vw);
  height: calc(419 / var(--pc) * 100vw);
  overflow: hidden;

  .event-card {
    position: relative;
    width: 100%;
    height: 100%;

    .event-thumb {
      position: absolute;
      width: 100%;
      height: 100%;

      img {
        width: 100%;
        height: 100%;
        object-fit: cover;
      }
    }

    .event-info {
      position: absolute;
      width: 100%;
      height: 100%;
      background-color: var(--ivory-white-color);
      padding: calc(24 / var(--pc) * 100vw);
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      transform: translateY(-100%);
      transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
      .event-title {
        background-color: transparent;
      }
    }
  }

  &:hover .event-info {
    transform: translateY(0);
  }
}

.event-info {
  .event-date,
  .opening-time {
    font-family: var(--base-font-family-en);
    font-size: calc(16 / var(--pc) * 100vw);
    margin-bottom: calc(8 / var(--pc) * 100vw);
  }

  .event-time {
    font-family: var(--base-font-family-en);
    font-size: calc(16 / var(--pc) * 100vw);
  }

  .event-title {
    font-size: calc(24 / var(--pc) * 100vw);
    font-weight: 600;
    margin-bottom: calc(16 / var(--pc) * 100vw);
	text-align: left;
  }

  .event-place {
    font-size: calc(16 / var(--pc) * 100vw);
    margin-bottom: calc(24 / var(--pc) * 100vw);
    text-align: center;

    .event-area {
      margin-top: 0;
      font-size: calc(16 / var(--pc) * 100vw);
      color: var(--text-color);
      &::before {
        content: "（";
      }
      &::after {
        content: "）";
      }
    }
  }
}

/* 出演・創作講談のご依頼 */
.request-section {
  .request-block {
    .request-subheading {
      font-size: calc(24 / var(--pc) * 100vw);
      font-family: var(--base-font-family-serif);
      position: relative;
      padding-left: calc(32 / var(--pc) * 100vw);
      margin-bottom: calc(16 / var(--pc) * 100vw);
      &::before {
        content: "\025a0";
        position: absolute;
        top: calc(13 / var(--pc) * 100vw);
        left: 0;
        transform: translateY(-50%);
        font-size: calc(24 / var(--pc) * 100vw);
        color: var(--text-color);
      }
    }
    > * {
      padding-left: calc(16 / var(--pc) * 100vw);
      padding-right: calc(16 / var(--pc) * 100vw);
    }
    p {
      font-family: var(--base-font-family-serif);
      line-height: calc(24 / var(--pc) * 100vw);
      letter-spacing: 0.02em;
    }
    .request-text {
      display: flex;
      flex-direction: column;
      gap: calc(24 / var(--pc) * 100vw);
      .request-list {
        li {
          font-family: var(--base-font-family-serif);
          line-height: calc(24 / var(--pc) * 100vw);
          letter-spacing: 0.02em;
          dl {
            display: flex;
            flex-wrap: wrap;
            font-weight: 600;
            dt {
              width: calc(49 / var(--pc) * 100vw);
            }
            dd {
              width: calc(100% - 49 / var(--pc) * 100vw);
            }
          }
        }
      }
    }
  }
  .request-subtext {
    display: flex;
    flex-direction: column;
  }
  .request-flow-title {
    font-family: var(--base-font-family-serif);
    font-size: calc(20 / var(--pc) * 100vw);
    font-weight: 600;
    margin-bottom: calc(8 / var(--pc) * 100vw);
    line-height: calc(24 / var(--pc) * 100vw);
  }
  .request-flow {
    padding-left: calc(24 / var(--pc) * 100vw);
    counter-reset: number;
    li {
      list-style: none;
      position: relative;
      counter-increment: number;
      font-family: var(--base-font-family-serif);
      line-height: calc(24 / var(--pc) * 100vw);
      padding-left: calc(8 / var(--pc) * 100vw);
      font-weight: 600;
      &::before {
        content: counter(number) ".";
        position: absolute;
        left: calc(-16 / var(--pc) * 100vw);
        top: 0;
      }
    }
  }
  .request-contact-button {
    text-align: center;
    margin-top: calc(48 / var(--pc) * 100vw);
  }
}

/* プロフィール */
.profile-section {
  background-color: var(--main-color);
}

.profile-container {
  display: flex;
  flex-direction: column;
  gap: calc(32 / var(--pc) * 100vw);
  align-items: flex-start;
}

.profile-content {
  display: flex;
  gap: calc(32 / var(--pc) * 100vw);
  align-items: flex-start;
  &:nth-child(even) {
    flex-direction: row-reverse;
  }
}

.profile-image {
  width: calc(279 / var(--pc) * 100vw);
}

.profile-image img {
  width: 100%;
  height: auto;
  object-fit: cover;
}

.profile-text {
  width: calc(649 / var(--pc) * 100vw);
}

.profile-name {
  font-family: var(--base-font-family-serif);
  font-size: calc(24 / var(--pc) * 100vw);
  font-weight: 600;
  line-height: 1.4;
  margin-bottom: calc(32 / var(--pc) * 100vw);
  letter-spacing: 0.1em;
  .profile-role-text {
    font-size: calc(16 / var(--pc) * 100vw);
    font-weight: 400;
    letter-spacing: 0.05em;
  }
}

.profile-kana {
  font-size: calc(16 / var(--pc) * 100vw);
  font-weight: 400;
  letter-spacing: 0.05em;
}

.profile-text {
  font-family: var(--base-font-family-serif);
  font-size: calc(16 / var(--pc) * 100vw);
  line-height: calc(40 / var(--pc) * 100vw);
  letter-spacing: 0.02em;
  p {
    margin-bottom: calc(40 / var(--pc) * 100vw);
  }
}

.profile-text p:last-child {
  margin-bottom: 0;
}

/* ブログ */
.blog-container {
  display: flex;
  flex-direction: column;
  gap: calc(32 / var(--pc) * 100vw);
}

.blog-post {
  display: flex;
  gap: calc(24 / var(--pc) * 100vw);
  align-items: flex-start;
}
.blog-post-image {
  width: 30%;
}
.blog-post-content {
  width: 70%;
  display: flex;
  flex-direction: column;
  gap: calc(16 / var(--pc) * 100vw);
}
.blog-post-title {
  font-size: calc(24 / var(--pc) * 100vw);
  text-align: left;
}
.blog-post-meta {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: calc(16 / var(--pc) * 100vw);
}
.blog-post-category-container {
  display: flex;
  gap: calc(8 / var(--pc) * 100vw);
}
.blog-post-category {
  padding: calc(4 / var(--pc) * 100vw) calc(8 / var(--pc) * 100vw);
  background-color: #999999;
  color: var(--ivory-white-color);
  letter-spacing: 0.05em;
  border-radius: calc(5 / var(--pc) * 100vw);
}
.blog-post-text-wrapper {
  display: flex;
  flex-direction: column;
  gap: calc(16 / var(--pc) * 100vw);
}
.blog-post-text {
  line-height: calc(24 / var(--pc) * 100vw);
  font-family: var(--base-font-family-serif);
}
.blog-post-link {
  display: block;
  text-align: right;
  color: var(--accent-color);
}
.blog-more {
  text-align: right;
}
.blog-more > a {
  display: inline-block;
  text-align: center;
  padding-left: calc(16 / var(--pc) * 100vw);
  padding-right: calc(16 / var(--pc) * 100vw);
  font-family: var(--base-font-family-en);
  font-weight: 700;
  height: calc(32 / var(--pc) * 100vw);
  color: var(--accent-color);
  line-height: calc(32 / var(--pc) * 100vw);
}

/* スマホ用 */
@media (max-width: 767px) {
  .blog-container {
    gap: calc(24 / var(--sp) * 100vw);
  }
  .blog-post {
    gap: calc(16 / var(--sp) * 100vw);
  }
  .blog-post-image {
    width: 30%;
  }
  .blog-post-content {
    width: 70%;
    gap: calc(16 / var(--sp) * 100vw);
  }
  .blog-post-title {
    font-size: calc(16 / var(--sp) * 100vw);
  }
  .blog-post-meta {
    gap: calc(8 / var(--sp) * 100vw);
  }
  .blog-post-category-container {
    gap: calc(8 / var(--sp) * 100vw);
  }
  .blog-post-category {
    padding: calc(4 / var(--sp) * 100vw) calc(8 / var(--sp) * 100vw);
    border-radius: calc(5 / var(--sp) * 100vw);
  }
  .blog-post-text-wrapper {
    gap: calc(16 / var(--sp) * 100vw);
  }
  .blog-post-text {
    line-height: calc(24 / var(--sp) * 100vw);
    font-family: var(--base-font-family-serif);
  }
  .blog-more > a {
    padding-left: calc(16 / var(--sp) * 100vw);
    padding-right: calc(16 / var(--sp) * 100vw);
    height: calc(32 / var(--sp) * 100vw);
    line-height: calc(32 / var(--sp) * 100vw);
  }
}

/* お問い合わせ */
.contact-section {
  background-color: var(--main-color);
}

.contact-title {
  font-family: var(--base-font-family-sans);
  font-size: calc(32 / var(--pc) * 100vw);
  font-weight: bold;
  text-align: center;
}

.contact-container {
  display: flex;
  flex-direction: column;
  gap: calc(32 / var(--pc) * 100vw);
  width: calc(720 / var(--pc) * 100vw);
  margin: 0 auto;
}

.contact-form {
  form {
    display: flex;
    flex-direction: column;
    gap: calc(32 / var(--pc) * 100vw);
  }
}

.contact-form-text {
  font-family: var(--base-font-family-serif);
}

.contact-form-item {
  display: flex;
  flex-direction: column;
  gap: calc(8 / var(--pc) * 100vw);
}

.contact-form-item .event-title {
  text-align: left;
}

/* コンタクトフォーム 
ラベル */
.contact-form-item label {
  display: block;
}

/* テキスト入力フィールドのスタイル */
.contact-form-item input[type="text"],
.contact-form-item input[type="email"],
.contact-form-item input[type="number"],
.contact-form-item textarea {
  width: 100%;
  padding: calc(8 / var(--pc) * 100vw);
  border: calc(1 / var(--pc) * 100vw) solid var(--text-color);
  border-radius: calc(4 / var(--pc) * 100vw);
  font-size: calc(16 / var(--pc) * 100vw);
  transition: border-color 0.3s ease;
  background-color: var(--ivory-white-color);
}
.contact-form-item input[type="number"] {
  width: calc(120 / var(--pc) * 100vw);
  height: calc(64 / var(--pc) * 100vw);
}

@media (max-width: 767px) {
  .contact-form-item input[type="text"],
  .contact-form-item input[type="email"],
  .contact-form-item input[type="number"],
  .contact-form-item textarea {
    padding: calc(8 / var(--sp) * 100vw);
    font-size: calc(16 / var(--sp) * 100vw);
    border-radius: calc(4 / var(--sp) * 100vw);
  }
  .contact-form-item input[type="number"] {
    height: calc(64 / var(--sp) * 100vw);
  }
}

/* テキストエリアのスタイル */
.contact-form-item textarea {
  min-height: calc(200 / var(--pc) * 100vw);
  resize: vertical;
}

/* 入力フィールドのフォーカス時のスタイル */
.contact-form-item input:focus,
.contact-form-item textarea:focus {
  outline: none;
  border-color: var(--accent-color);
  box-shadow: 0 0 0 calc(2 / var(--pc)) rgba(74, 144, 226, 0.2);
}

/* 送信ボタンのスタイル */
.contact-form-button {
  display: block;
  margin: 0 auto;
  padding: calc(2 / var(--pc) * 100vw) calc(40 / var(--pc) * 100vw);

  width: calc(113 / var(--pc) * 100vw);
  height: calc(28 / var(--pc) * 100vw);

  background: #5c3a21;
  box-shadow: 0px calc(4 / var(--pc) * 100vw) calc(4 / var(--pc) * 100vw)
    rgba(0, 0, 0, 0.25);
  border-radius: calc(20 / var(--pc) * 100vw);
  border: none;

  color: var(--ivory-white-color);
  font-weight: 500;
  cursor: pointer;

  /* フレックスボックスプロパティ */
  flex: none;
  order: 3;
  flex-grow: 0;
}

.ticket-reservation-wrap .contact-form-button {
  width: fit-content;
  height: fit-content;
  padding: calc(10 / var(--pc) * 100vw) calc(40 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .ticket-reservation-wrap .contact-form-button {
    padding: calc(10 / var(--sp) * 100vw) calc(40 / var(--sp) * 100vw);
  }
}

.ticket-reservation-wrap-small {
  margin-top: calc(10 / var(--pc) * 100vw);
  text-align: center;
  p {
    line-height: calc(24 / var(--pc) * 100vw);
  }
}
@media (max-width: 767px) {
  .ticket-reservation-wrap-small {
    margin-top: calc(10 / var(--sp) * 100vw);
    p {
      line-height: calc(24 / var(--sp) * 100vw);
    }
  }
}

/* 送信ボタンのホバー時のスタイル */
.contact-form-button:hover {
  background: #4a2e1a; /* ホバー時に少し暗めの色に */
}

/* footer */
.footer {
  background-color: var(--dark-brown-color);
  color: var(--ivory-white-color);
}

.footer-content {
  padding-top: calc(40 / var(--pc) * 100vw);
  padding-bottom: calc(40 / var(--pc) * 100vw);
}

.footer-nav {
  ul {
    display: flex;
    justify-content: space-between;
    align-items: center;
    a {
      display: block;
    }
  }
}

.footer-sns {
  margin: 0 auto;
  padding-top: calc(8 / var(--pc) * 100vw);
  ul {
    gap: calc(40 / var(--pc) * 100vw);
    display: flex;
    justify-content: center;
    li {
      a {
        display: block;
      }
    }
  }
}
.footer-copyright {
  text-align: center;
  padding-top: calc(32 / var(--pc) * 100vw);
  position: relative;
  &::before {
    content: "";
    position: absolute;
    top: 0;
    left: calc(50% - 462.5 / var(--pc) * 100vw);
    display: block;
    width: calc(925 / var(--pc) * 100vw);
    height: calc(0.5 / var(--pc) * 100vw);
    background-color: var(--ivory-white-color);
  }
}

/* アニメーションのキーフレーム定義 */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(calc(30 / var(--pc)));
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes slideInRight {
  from {
    opacity: 0;
    transform: translateX(calc(-50 / var(--pc)));
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes fadeIn {
  from {
    opacity: 0;
    transform: scale(0.95);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

/* ヒーローセクションのアニメーション適用 */
.hero-image {
  animation: fadeInUp 1.2s ease-out forwards;
  opacity: 0;
}

.site-title .role {
  animation: slideInRight 1s ease-out 0.3s forwards;
  opacity: 0;
}

.site-title .name,
.site-title .subtitle,
.menu-container,
.button-mobile-request-link,
.mobile-nav {
  animation: fadeIn 1.2s ease-out 1.5s forwards;
  opacity: 0;
}

/* アニメーションの動作順序
1. ヒーローイメージ: 0秒 - 下から上へのフェードイン
2. 「講談師」テキスト: 0.3秒 - 左から右へのスライドイン
3. 「旭堂南和」テキスト: 1.5秒 - ふわっとフェードイン
*/

/* スクロールアニメーション */
/* 各セクションの基本スタイル */
.news-section,
.event-section,
.request-section,
.profile-section,
.blog-section,
.contact-section {
  opacity: 0;
  transform: translateY(calc(50 / var(--pc) * 100vw));
  transition: all 0.75s ease-out;
  will-change: opacity, transform;
}

/* 表示状態のスタイル */
.news-section.is-visible,
.event-section.is-visible,
.request-section.is-visible,
.profile-section.is-visible,
.blog-section.is-visible,
.contact-section.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* 最初のセクションは即時表示 */
.news-section {
  opacity: 1;
  transform: translateY(0);
}

/* レスポンシブ */
@media (max-width: 767px) {
  body {
    font-size: calc(16 / var(--sp) * 100vw);
  }
  .section-wrapper {
    width: 80%;
    gap: calc(32 / var(--sp) * 100vw);
    padding-top: calc(40 / var(--sp) * 100vw);
    padding-bottom: calc(40 / var(--sp) * 100vw);
  }
  [class*="heading"] {
    font-size: calc(20 / var(--sp) * 100vw);
    line-height: calc(24 / var(--sp) * 100vw);
    &::before {
      width: calc(16 / var(--sp) * 100vw);
      height: calc(0.5 / var(--sp) * 100vw);
      top: calc(10 / var(--sp) * 100vw);
      left: calc(-30 / var(--sp) * 100vw);
    }
    &::after {
      width: calc(16 / var(--sp) * 100vw);
      height: calc(0.5 / var(--sp) * 100vw);
      top: calc(10 / var(--sp) * 100vw);
      right: calc(-30 / var(--sp) * 100vw);
    }
  }
  [class*="btn-"] {
    padding: calc(12 / var(--sp) * 100vw) calc(24 / var(--sp) * 100vw);
    gap: calc(10 / var(--sp) * 100vw);
    border-radius: calc(5 / var(--sp) * 100vw);
    box-shadow: 0px calc(4 / var(--sp) * 100vw) calc(4 / var(--sp) * 100vw)
      rgba(0, 0, 0, 0.25);
  }
  .hero {
    height: calc(525 / var(--sp) * 100vw);
  }
  .site-title {
    .role {
      font-size: calc(98 / var(--sp) * 100vw);
      width: fit-content;
      top: 0;
      left: calc(10 / var(--sp) * 100vw);
      &::after {
        display: none;
      }
    }
    .name {
      line-height: calc(24 / var(--sp) * 100vw);
      top: calc(202 / var(--sp) * 100vw);
      left: calc(84 / var(--sp) * 100vw);
      font-size: calc(36 / var(--sp) * 100vw);
      &::before {
        width: calc(34 / var(--sp) * 100vw);
        height: calc(34 / var(--sp) * 100vw);
        top: calc(-44 / var(--sp) * 100vw);
        left: calc(-2 / var(--sp) * 100vw);
      }
    }
    .subtitle {
      top: calc(200 / var(--sp) * 100vw);
      left: calc(40 / var(--sp) * 100vw);
      font-size: calc(16 / var(--sp) * 100vw);
      &::after {
        width: calc(0.5 / var(--sp) * 100vw);
        height: calc(210 / var(--sp) * 100vw);
        top: calc(2 / var(--sp) * 100vw);
        right: calc(-8 / var(--sp) * 100vw);
      }
    }
  }
  .menu-container {
    top: 0;
    right: 0;
    width: calc(81 / var(--sp) * 100vw);
    height: fit-content;

    .menu-box {
      height: calc(40 / var(--sp) * 100vw);
      margin-bottom: 0;
      font-size: calc(16 / var(--sp) * 100vw);
      line-height: calc(40 / var(--sp) * 100vw);
    }
  }
  .mobile-request-link {
    display: block;
    top: calc(40 / var(--sp) * 100vw);
    right: 0;
    z-index: 100;
  }

  .hero-image-box {
    width: calc(328 / var(--sp) * 100vw);
    top: calc(70 / var(--sp) * 100vw);
    right: calc(-50 / var(--sp) * 100vw);
  }
  .button-mobile-request-link {
    width: calc(144 / var(--sp) * 100vw);
    display: block;
    position: absolute;
    top: calc(450 / var(--sp) * 100vw);
    right: calc(220 / var(--sp) * 100vw);
    z-index: 999;
  }
  /* モバイルナビゲーション */

  .mobile-nav-close {
    display: block;
    position: fixed;
    top: 0;
    right: -100%;
    z-index: 1001;
    font-size: calc(24 / var(--sp) * 100vw);
    font-weight: 700;
    color: var(--ivory-white-color);
    cursor: pointer;
    transition: right 0.3s ease-in-out;
  }
  .mobile-nav-close.open {
    top: calc(10 / var(--sp) * 100vw);
    right: calc(15 / var(--sp) * 100vw);
  }

  .mobile-nav {
    position: fixed;
    top: 0;
    right: -100%;
    width: 70vw;
    height: 100vh;
    background-color: var(--accent-color);
    z-index: 1000;
    transition: right 0.3s ease-in-out;
    > ul {
      padding-top: calc(40 / var(--sp) * 100vw);
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: calc(24 / var(--sp) * 100vw);
      > li {
        > a {
          color: var(--ivory-white-color);
          font-size: calc(16 / var(--sp) * 100vw);
          font-weight: 700;
          letter-spacing: 0.05em;
          text-align: left;
          line-height: calc(32 / var(--sp) * 100vw);
        }
      }
    }
  }

  .mobile-nav.open {
    right: 0;
  }

  .mobile-nav-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: 1000;
    display: none;
  }

  .mobile-nav-overlay.open {
    display: block;
  }
  .news-section {
    gap: calc(16 / var(--sp) * 100vw);
    .news-list {
      > li {
        gap: calc(16 / var(--sp) * 100vw);
        line-height: calc(24 / var(--sp) * 100vw);
      }
    }
  }

  .news-more {
    > a {
      padding-left: calc(16 / var(--sp) * 100vw);
      padding-right: calc(16 / var(--sp) * 100vw);
      height: calc(32 / var(--sp) * 100vw);
      line-height: calc(32 / var(--sp) * 100vw);
    }
  }
  .event-section {
    .calendar-button {
      order: 1;
      text-align: center;
    }
    .event-list {
      order: 0;
      flex-direction: column;
      align-items: center;
      gap: calc(24 / var(--sp) * 100vw);
      .event-item {
        width: 100%;
        height: auto;
        .event-card {
          display: flex;
          flex-direction: row;
          height: calc(226 / var(--sp) * 100vw);
          .event-thumb {
            position: relative;
            width: 50%;
            height: 100%;
            img {
              object-fit: cover;
            }
          }
          .event-info {
            position: relative;
            width: 50%;
            height: 100%;
            transform: none;
            padding: calc(16 / var(--sp) * 100vw);
            align-items: center;
            gap: calc(4 / var(--sp) * 100vw);
            .event-date,
            .event-time {
		      text-align: center;
              font-size: calc(16 / var(--sp) * 100vw);
              margin-bottom: 0;
            }
            .opening-time,
			.event-time {
              display: none;
            }
            .event-title {
              font-size: calc(16 / var(--sp) * 100vw);
            }

            .event-place {
              display: flex;
              flex-direction: column;
              gap: calc(4 / var(--sp) * 100vw);
              align-items: center;
              font-size: calc(16 / var(--sp) * 100vw);
              margin-bottom: 0;

              .event-area {
                margin-top: 0;
                font-size: calc(16 / var(--sp) * 100vw);
                color: var(--text-color);
                &::before {
                  content: "（";
                }
                &::after {
                  content: "）";
                }
              }
            }
            .btn-detail {
              margin-top: calc(16 / var(--sp) * 100vw);
              align-self: center;
              padding: calc(4 / var(--sp) * 100vw) calc(16 / var(--sp) * 100vw);
              font-weight: 400;
            }
          }
        }
      }
    }
  }
  .request-section {
    .request-block {
      .request-subheading {
        font-size: calc(16 / var(--sp) * 100vw);
        font-weight: 600;
        padding-left: calc(32 / var(--sp) * 100vw);
        padding-right: 0;
        margin-bottom: calc(16 / var(--sp) * 100vw);
        &::before {
          top: calc(0 / var(--sp) * 100vw);
          font-size: calc(20 / var(--sp) * 100vw);
        }
      }
      > * {
        padding-left: calc(16 / var(--sp) * 100vw);
        padding-right: calc(16 / var(--sp) * 100vw);
      }
      p {
        line-height: calc(24 / var(--sp) * 100vw);
      }
      .request-text {
        gap: calc(24 / var(--sp) * 100vw);
        .request-list {
          li {
            line-height: calc(24 / var(--sp) * 100vw);
            dl {
              dt {
                width: calc(49 / var(--sp) * 100vw);
              }
              dd {
                width: calc(100% - 49 / var(--sp) * 100vw);
              }
            }
          }
        }
      }
    }

    .request-flow-title {
      font-size: calc(20 / var(--sp) * 100vw);
      margin-bottom: calc(8 / var(--sp) * 100vw);
      line-height: calc(24 / var(--sp) * 100vw);
    }
    .request-flow {
      padding-left: calc(24 / var(--sp) * 100vw);
      li {
        line-height: calc(24 / var(--sp) * 100vw);
        padding-left: calc(8 / var(--sp) * 100vw);
        &::before {
          left: calc(-16 / var(--sp) * 100vw);
        }
      }
    }
    .request-contact-button {
      margin-top: calc(16 / var(--sp) * 100vw);
    }
  }

  .profile-container {
    gap: calc(32 / var(--sp) * 100vw);
    position: relative;
  }

  .profile-content {
    gap: calc(16 / var(--sp) * 100vw);
    &:first-of-type {
      margin-top: calc(136 / var(--sp) * 100vw);
    }
  }

  .profile-image {
    width: 60%;
  }

  .profile-text {
    width: 40%;
  }

  .profile-name {
    position: absolute;
    top: calc(0 / var(--sp) * 100vw);
    left: 50%;
    transform: translateX(-50%);
    font-size: calc(24 / var(--sp) * 100vw);
    margin-bottom: calc(32 / var(--sp) * 100vw);
    text-align: center;
    .profile-role-text {
      font-size: calc(16 / var(--sp) * 100vw);
    }
  }

  .profile-kana {
    line-height: calc(10 / var(--sp) * 100vw);
    font-size: calc(14 / var(--sp) * 100vw);
  }

  .profile-text {
    width: 100%;
    font-size: calc(16 / var(--sp) * 100vw);
    line-height: calc(24 / var(--sp) * 100vw);
    p {
      margin-bottom: calc(16 / var(--sp) * 100vw);
    }
  }

  .profile-text p:last-child {
    margin-bottom: 0;
  }

  .blog-container {
    display: flex;
    flex-direction: column;
    gap: calc(50 / var(--sp) * 100vw);
    .blog-post {
      position: relative;
      gap: calc(24 / var(--sp) * 100vw);
      display: flex;
      justify-content: space-between;
      .blog-post-image {
        width: calc(160 / var(--sp) * 100vw);
      }
      &:not(:last-child)::after {
        position: absolute;
        bottom: calc(-24 / var(--sp) * 100vw);
        left: 50%;
        transform: translateX(-50%);
        content: "";
        display: block;
        width: calc(100% - 32 / var(--sp) * 100vw);
        height: 0.5px;
        background-color: var(--text-color);
        margin: 0 auto;
      }
      .blog-post-content {
        display: flex;
        flex-direction: column;
        gap: calc(16 / var(--sp) * 100vw);
        width: calc(160 / var(--sp) * 100vw);
        .blog-post-title {
          font-size: calc(20 / var(--sp) * 100vw);
          line-height: calc(24 / var(--sp) * 100vw);
          text-align: left;
        }
        .blog-post-meta {
          gap: calc(16 / var(--sp) * 100vw);
          .blog-post-category {
            font-size: calc(16 / var(--sp) * 100vw);
          }
        }
        .blog-post-text-wrapper {
          display: flex;
          flex-direction: column;
          gap: calc(16 / var(--sp) * 100vw);
          font-size: calc(16 / var(--sp) * 100vw);
        }
      }
    }
  }
  .blog-post-text {
    line-height: calc(20 / var(--sp) * 100vw);
  }
  .blog-post-link {
    display: block;
    text-align: right;
    color: var(--accent-color);
  }

  .blog-post-category {
    display: block;
    padding: calc(8 / var(--sp) * 100vw);
  }
  .blog-post-date {
    padding-right: calc(8 / var(--sp) * 100vw);
  }
  .contact-title {
    font-size: calc(20 / var(--sp) * 100vw);
    line-height: calc(24 / var(--sp) * 100vw);
    text-align: center;
  }
  .contact-container {
    width: 100%;
  }
  .contact-form-text {
    padding: 0 calc(8 / var(--sp) * 100vw) calc(16 / var(--sp) * 100vw);
  }
  .contact-form-item input[type="text"],
  .contact-form-item input[type="email"],
  .contact-form-item input[type="number"],
  .contact-form-item textarea {
    width: 100%;
    height: calc(32 / var(--sp) * 100vw);
  }
  .contact-form-item textarea {
    height: calc(100 / var(--sp) * 100vw);
  }
  .contact-form-button {
    margin-top: calc(16 / var(--sp) * 100vw);
    padding-left: calc(16 / var(--sp) * 100vw);
    padding-right: calc(16 / var(--sp) * 100vw);
    width: fit-content;
    height: calc(32 / var(--sp) * 100vw);
    line-height: calc(32 / var(--sp) * 100vw);
    border-radius: calc(50 / var(--sp) * 100vw);
  }
  .footer-content {
    flex-direction: column;
    align-items: center;
    gap: calc(32 / var(--sp) * 100vw);
  }

  .footer-nav ul {
    display: flex;
    flex-direction: column;
    gap: calc(32 / var(--sp) * 100vw);
  }
  .footer-sns {
    width: 75%;
  }
  /* アーカイブページのスタイル */
  .category-list .blog-post {
    flex-direction: column;
    gap: 4vw;
  }
  .category-list .blog-post-image,
  .category-list .blog-post-content {
    width: 100%;
    min-width: 0;
  }
}

/* トップへ戻るボタン */
.scroll-to-top {
  position: fixed;
  bottom: calc(40 / var(--pc) * 100vw);
  right: calc(40 / var(--pc) * 100vw);
  padding: calc(12 / var(--pc) * 100vw) calc(24 / var(--pc) * 100vw);
  color: var(--accent-color);
  border: none;
  border-radius: calc(5 / var(--pc) * 100vw);
  cursor: pointer;
  font-family: var(--base-font-family-serif);
  font-size: calc(16 / var(--pc) * 100vw);
  font-weight: 700;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s, visibility 0.3s;
  z-index: 1000;
  user-select: none; /* テキスト選択を防止 */
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  &::before {
    content: "";
    display: block;
    position: absolute;
    bottom: 0;
    width: calc(100% - 48 / var(--pc) * 100vw);
    height: calc(0.5 / var(--pc) * 100vw);
    background-color: var(--accent-color);
    margin: 0 auto;
  }
}

.scroll-to-top.visible {
  opacity: 1;
  visibility: visible;
}

.scroll-to-top:hover {
  opacity: 0.8;
}

@media (max-width: 767px) {
  .scroll-to-top {
    display: none;
  }
}

/*ここから記事ページ（投稿ページ）single.phpのスタイル*/
.news-navigation,
.blog-navigation,
.post-navigation {
  display: flex;
  justify-content: space-between;
  .news-next,
  .blog-next,
  .post-next {
    text-align: right;
  }
}

/* お知らせ記事のスタイル */
.news-content {
  background-color: var(--ivory-white-color);
}

.news-header {
  margin-bottom: calc(32 / var(--pc) * 100vw);
}

.news-title {
  font-size: calc(32 / var(--pc) * 100vw);
  line-height: 1.4;
  margin-bottom: calc(16 / var(--pc) * 100vw);
}

.news-category {
  padding: calc(4 / var(--pc) * 100vw) calc(8 / var(--pc) * 100vw);
  background-color: #999999;
  color: var(--ivory-white-color);
  letter-spacing: 0.05em;
  border-radius: calc(5 / var(--pc) * 100vw);
}

.news-meta {
  display: flex;
  gap: calc(16 / var(--pc) * 100vw);
  color: var(--text-color);
  font-size: calc(14 / var(--pc) * 100vw);
}

.news-thumbnail {
  margin-bottom: calc(32 / var(--pc) * 100vw);
}

.news-body {
  font-size: calc(16 / var(--pc) * 100vw);
  font-family: var(--base-font-family-serif);
  line-height: 1.8;
}

.news-footer {
  margin-top: calc(64 / var(--pc) * 100vw);
  padding-top: calc(32 / var(--pc) * 100vw);
  border-top: 1px solid var(--main-color);
}

.news-navigation {
  display: flex;
  justify-content: space-between;
  gap: calc(32 / var(--pc) * 100vw);
}

.news-prev,
.news-next {
  flex: 1;
}

.news-nav-label {
  display: block;
  color: var(--text-color);
  margin-bottom: calc(8 / var(--pc) * 100vw);
}

/* ブログ記事のスタイル */
.blog-content {
  background-color: var(--ivory-white-color);
}

@media (max-width: 767px) {
  .blog-content {
    padding: calc(16 / var(--sp) * 100vw);
  }
}
.blog-header {
  margin-bottom: calc(32 / var(--pc) * 100vw);
}

@media (max-width: 767px) {
  .blog-header {
    margin-bottom: calc(16 / var(--sp) * 100vw);
  }
}
.blog-title {
  font-size: calc(32 / var(--pc) * 100vw);
  line-height: 1.4;
  margin-bottom: calc(16 / var(--pc) * 100vw);
}

@media (max-width: 767px) {
  .blog-title {
    font-size: calc(24 / var(--sp) * 100vw);
  }
}

.blog-category {
  padding: calc(4 / var(--pc) * 100vw) calc(8 / var(--pc) * 100vw);

  background-color: #999999;
  color: var(--ivory-white-color);
  letter-spacing: 0.05em;
  border-radius: calc(5 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .blog-category {
    padding: calc(4 / var(--sp) * 100vw) calc(8 / var(--sp) * 100vw);
  }
}

.blog-meta {
  display: flex;
  flex-wrap: wrap;
  gap: calc(16 / var(--pc) * 100vw);
  color: var(--text-color);
  font-size: calc(14 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .blog-meta {
    font-size: calc(12 / var(--sp) * 100vw);
  }
}

.blog-thumbnail {
  margin-bottom: calc(32 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .blog-thumbnail {
    margin-bottom: calc(16 / var(--sp) * 100vw);
  }
}
@media (max-width: 767px) {
  .blog-body {
    font-size: calc(14 / var(--sp) * 100vw);
  }
}

.blog-body {
  font-size: calc(16 / var(--pc) * 100vw);
  font-family: var(--base-font-family-serif);
  line-height: 1.8;
}
@media (max-width: 767px) {
  .blog-meta {
    font-size: calc(12 / var(--sp) * 100vw);
  }
}

.blog-footer {
  margin-top: calc(64 / var(--pc) * 100vw);
  padding-top: calc(32 / var(--pc) * 100vw);
  border-top: calc(1 / var(--pc)) solid var(--main-color);
}
@media (max-width: 767px) {
  .blog-footer {
    margin-top: calc(16 / var(--sp) * 100vw);
  }
}

.blog-author-title {
  font-size: calc(18 / var(--pc) * 100vw);
  margin-bottom: calc(8 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .blog-author-title {
    font-size: calc(16 / var(--sp) * 100vw);
  }
}

.blog-author-name {
  font-size: calc(16 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .blog-author-name {
    font-size: calc(14 / var(--sp) * 100vw);
  }
}

.blog-navigation {
  display: flex;
  justify-content: space-between;
  gap: calc(32 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .blog-navigation {
    gap: calc(16 / var(--sp) * 100vw);
  }
}

.blog-prev,
.blog-next {
  flex: 1;
}

.blog-nav-label {
  display: block;
  color: var(--text-color);
  margin-bottom: calc(8 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .blog-nav-label {
    font-size: calc(12 / var(--sp) * 100vw);
  }
}

/* デフォルト記事のスタイル */
.post-content {
  background-color: var(--ivory-white-color);
}

@media (max-width: 767px) {
  .post-content {
    padding: calc(16 / var(--sp) * 100vw);
  }
}

.post-header {
  margin-bottom: calc(32 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .post-header {
    margin-bottom: calc(16 / var(--sp) * 100vw);
  }
}

.post-title {
  font-family: var(--base-font-family-serif);
  font-size: calc(32 / var(--pc) * 100vw);
  line-height: 1.4;
  margin-bottom: calc(16 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .post-title {
    font-size: calc(24 / var(--sp) * 100vw);
  }
}

.post-meta {
  display: flex;
  gap: calc(16 / var(--pc) * 100vw);
  color: var(--text-color);
  font-size: calc(14 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .post-meta {
    font-size: calc(12 / var(--sp) * 100vw);
  }
}

.post-thumbnail {
  margin-bottom: calc(32 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .post-thumbnail {
    margin-bottom: calc(16 / var(--sp) * 100vw);
  }
}

.post-body {
  font-size: calc(16 / var(--pc) * 100vw);
  font-family: var(--base-font-family-serif);
  line-height: 1.8;
}
@media (max-width: 767px) {
  .post-body {
    font-size: calc(14 / var(--sp) * 100vw);
  }
}

.post-footer {
  margin-top: calc(64 / var(--pc) * 100vw);
  padding-top: calc(32 / var(--pc) * 100vw);
  border-top: calc(1 / var(--pc)) solid var(--main-color);
}
@media (max-width: 767px) {
  .post-footer {
    margin-top: calc(16 / var(--sp) * 100vw);
  }
}

.post-navigation {
  display: flex;
  justify-content: space-between;
  gap: calc(32 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .post-navigation {
    gap: calc(16 / var(--sp) * 100vw);
  }
}

.post-prev,
.post-next {
  flex: 1;
}

.post-nav-label {
  display: block;
  font-size: calc(14 / var(--pc) * 100vw);
  color: var(--text-color);
  margin-bottom: calc(8 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .post-nav-label {
    font-size: calc(12 / var(--sp) * 100vw);
  }
}

/* レスポンシブ対応 */
@media (max-width: 767px) {
  .news-title,
  .blog-title,
  .post-title {
    font-size: calc(24 / var(--sp) * 100vw);
  }

  .news-meta,
  .blog-meta,
  .post-meta {
    font-size: calc(12 / var(--sp) * 100vw);
  }

  .news-body,
  .blog-body,
  .post-body {
    font-size: calc(16 / var(--sp) * 100vw);
  }

  .news-navigation,
  .blog-navigation,
  .post-navigation {
    flex-direction: row;
    gap: calc(16 / var(--sp) * 100vw);
  }

  .blog-author {
    padding: calc(16 / var(--sp) * 100vw);
  }

  .blog-author-title {
    font-size: calc(16 / var(--sp) * 100vw);
  }

  .blog-author-name {
    font-size: calc(14 / var(--sp) * 100vw);
  }
}

/* アーカイブページのスタイル */
.category-list {
  display: flex;
  flex-direction: column;
  gap: calc(32 / var(--pc) * 100vw);
}

.category-content {
  display: flex;
  flex-direction: column;
  gap: calc(16 / var(--pc) * 100vw);
}

.category-title {
  font-size: calc(24 / var(--pc) * 100vw);
  line-height: 1.4;
  margin-bottom: calc(16 / var(--pc) * 100vw);
  @media (max-width: 767px) {
    font-family: var(--base-font-family-serif);
    font-size: calc(16 / var(--sp) * 100vw);
  }
}

.back-to-top-link {
  display: block;
  margin-bottom: calc(64 / var(--pc) * 100vw);
  color: var(--accent-color);
  font-weight: 400;
  text-decoration: underline;
  text-align: center;
}
.back-to-top-link:hover {
  opacity: 0.7;
}

/* ブログ一覧ページ用レイアウト */
.category-excerpt,
.blog-post-text-wrapper {
  font-size: calc(16 / var(--pc) * 100vw);
  font-family: var(--base-font-family-serif);
  line-height: 1.6;
}
@media (max-width: 767px) {
  .category-excerpt,
  .blog-post-text-wrapper {
    font-size: calc(16 / var(--sp) * 100vw);
  }
}
.blog-post-link {
  font-family: var(--base-font-family-sans);
}

@media (max-width: 767px) {
  .blog-post-link {
    font-size: calc(14 / var(--sp) * 100vw);
  }
}
.category-list .blog-post {
  display: flex;
  gap: calc(24 / var(--pc) * 100vw);
  align-items: center;
  margin-bottom: calc(24 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .category-list .blog-post {
    gap: calc(16 / var(--sp) * 100vw);
  }
}

.category-list .blog-post-image {
  width: 30%;
  min-width: calc(180 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .category-list .blog-post-image {
    min-width: calc(180 / var(--sp) * 100vw);
  }
}

.category-list .blog-post-image img {
  width: 100%;
  height: auto;
  object-fit: cover;
}

.category-list .blog-post-content {
  width: 80%;
  display: flex;
  flex-direction: column;
  gap: calc(16 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .category-list .blog-post-content {
    gap: calc(16 / var(--sp) * 100vw);
  }
}

.category-list .blog-post-title {
  font-size: calc(24 / var(--pc) * 100vw);
  margin: 0 0 calc(16 / var(--pc) * 100vw) 0;
}
@media (max-width: 767px) {
  .category-list .blog-post-title {
    font-size: calc(16 / var(--sp) * 100vw);
    margin: 0 0 calc(16 / var(--sp) * 100vw) 0;
  }
}

.category-list .blog-post-meta {
  text-align: right;
  color: #434343;
  font-size: calc(16 / var(--pc) * 100vw);
  margin-bottom: calc(16 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .category-list .blog-post-meta {
    font-size: calc(14 / var(--sp) * 100vw);
    margin-bottom: calc(16 / var(--sp) * 100vw);
  }
}

.category-list .blog-post-text-wrapper {
  margin-top: calc(16 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .category-list .blog-post-text-wrapper {
    margin-top: calc(16 / var(--sp) * 100vw);
  }
}

.category-list .blog-post-link {
  display: block;
  text-align: right;
  color: var(--accent-color);
  margin-top: calc(16 / var(--pc) * 100vw);
}
@media (max-width: 767px) {
  .category-list .blog-post-link {
    margin-top: calc(16 / var(--sp) * 100vw);
  }
}

/* PCサイズ（デフォルト） */
.category-list .blog-post {
  margin-bottom: calc(40 / var(--pc) * 100vw); /* 記事間の間隔を広げる */
  padding-bottom: calc(40 / var(--pc) * 100vw);
  border-bottom: 2px solid #e0e0e0; /* PCでは2pxなど太めに */
}

/* 最後の記事にはボーダーを付けない */
.category-list .blog-post:last-child {
  border-bottom: none;
  margin-bottom: 0;
  padding-bottom: 0;
}

/* スマホサイズ */
@media (max-width: 767px) {
  .category-list .blog-post {
    margin-bottom: calc(32 / var(--sp) * 100vw); /* スマホ用の間隔 */
    padding-bottom: calc(32 / var(--sp) * 100vw);
    border-bottom: 1px solid #e0e0e0; /* スマホでは1px */
  }
  .category-list .blog-post:last-child {
    border-bottom: none;
    margin-bottom: 0;
    padding-bottom: 0;
  }
}

/* イベントカレンダー */
.event-calendar {
  padding: calc(40 / var(--pc) * 100vw) 0;
}

@media (max-width: 767px) {
  .event-calendar {
    padding: calc(40 / var(--sp) * 100vw) 0;
  }
}

.calendar-heading {
  text-align: center;
  margin-bottom: calc(30 / var(--pc) * 100vw);
  font-size: calc(24 / var(--pc) * 100vw);
  @media (max-width: 767px) {
    margin-bottom: calc(30 / var(--sp) * 100vw);
    font-size: calc(24 / var(--sp) * 100vw);
  }
}

/* 月ナビゲーション */
.month-navigation {
  display: flex;
  justify-content: center;
  margin-bottom: calc(30 / var(--pc) * 100vw);
  background: var(--main-color);
  border-radius: calc(8 / var(--pc) * 100vw);
  padding: calc(10 / var(--pc) * 100vw);
}

@media (max-width: 767px) {
  .month-navigation {
    margin-bottom: calc(30 / var(--sp) * 100vw);
    padding: calc(10 / var(--sp) * 100vw);
    border-radius: calc(8 / var(--sp) * 100vw);
  }
}

.month-tab {
  text-align: center;
  padding: calc(10 / var(--pc) * 100vw) calc(30 / var(--pc) * 100vw);
  font-size: calc(18 / var(--pc) * 100vw);
  font-weight: bold;
  color: #333;
  text-decoration: none;
  position: relative;
  transition: all 0.3s ease;
}

@media (max-width: 767px) {
  .month-tab {
    padding: calc(8 / var(--sp) * 100vw) calc(8 / var(--sp) * 100vw);
    font-size: calc(16 / var(--sp) * 100vw);
  }
}

.month-tab:hover {
  background: #e0e0e0;
  border-radius: calc(4 / var(--pc) * 100vw);
}

@media (max-width: 767px) {
  .month-tab:hover {
    border-radius: calc(4 / var(--sp) * 100vw);
  }
}

.month-tab.active {
  background: #6b4423;
  color: #fff;
  border-radius: calc(4 / var(--pc) * 100vw);
}

@media (max-width: 767px) {
  .month-tab.active {
    border-radius: calc(4 / var(--sp) * 100vw);
  }
}

.month-tab:not(:last-child)::after {
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  width: calc(1 / var(--pc) * 100vw);
  height: calc(20 / var(--pc) * 100vw);
  background: #ddd;
}

@media (max-width: 767px) {
  .month-tab:not(:last-child)::after {
    width: calc(1 / var(--sp) * 100vw);
    height: calc(20 / var(--sp) * 100vw);
  }
}

/* イベントテーブル */
.event-table {
  width: 100%;
  margin-top: calc(20 / var(--pc) * 100vw);
}

@media (max-width: 767px) {
  .event-table {
    margin-top: calc(20 / var(--sp) * 100vw);
  }
}

.event-table-header {
  display: grid;
  grid-template-columns:
    calc(200 / var(--pc) * 100vw) calc(120 / var(--pc) * 100vw) 1fr calc(
      200 / var(--pc) * 100vw
    )
    calc(100 / var(--pc) * 100vw) calc(80 / var(--pc) * 100vw);
  gap: calc(20 / var(--pc) * 100vw);
  padding: calc(15 / var(--pc) * 100vw) 0;
  font-weight: bold;
  background: var(--main-color);
}

@media (max-width: 767px) {
  .event-table-header {
    grid-template-columns:
      calc(200 / var(--sp) * 100vw) calc(120 / var(--sp) * 100vw) 1fr calc(
        200 / var(--sp) * 100vw
      )
      calc(100 / var(--sp) * 100vw) calc(80 / var(--sp) * 100vw);
    gap: calc(20 / var(--sp) * 100vw);
    padding: calc(15 / var(--sp) * 100vw) 0;
  }
  .event-table-row {
    margin-bottom: calc(8 / var(--sp) * 100vw);
    background-color: #f5f5f5;
  }
}

.event-table-row {
  display: grid;
  grid-template-columns:
    calc(200 / var(--pc) * 100vw) calc(120 / var(--pc) * 100vw) 1fr calc(
      200 / var(--pc) * 100vw
    )
    calc(100 / var(--pc) * 100vw) calc(80 / var(--pc) * 100vw);
  gap: calc(20 / var(--pc) * 100vw);
  padding: calc(15 / var(--pc) * 100vw) 0;
  align-items: center;
}

@media (max-width: 767px) {
  .event-table-row {
    grid-template-columns:
      calc(200 / var(--sp) * 100vw) calc(120 / var(--sp) * 100vw) 1fr calc(
        200 / var(--sp) * 100vw
      )
      calc(100 / var(--sp) * 100vw) calc(80 / var(--sp) * 100vw);
    gap: calc(20 / var(--sp) * 100vw);
    padding: calc(15 / var(--sp) * 100vw) 0;
  }
}

.event-table-row:not(:last-child) {
  border-bottom: calc(1 / var(--pc) * 100vw) solid #eee;
}

@media (max-width: 767px) {
  .event-table-row:not(:last-child) {
    border-bottom: calc(1 / var(--sp) * 100vw) solid #eee;
  }
}

.time-label {
  color: #666;
}

.event-area-col {
  text-align: center;
}

.detail-button {
  display: inline-block;
  padding: calc(8 / var(--pc) * 100vw) calc(20 / var(--pc) * 100vw);
  background: #6b4423;
  color: #fff;
  border-radius: calc(4 / var(--pc) * 100vw);
  text-decoration: none;
  font-size: calc(14 / var(--pc) * 100vw);
  text-align: center;
  transition: background-color 0.3s;
}

@media (max-width: 767px) {
  .detail-button {
    padding: calc(8 / var(--sp) * 100vw) calc(20 / var(--sp) * 100vw);
    font-size: calc(14 / var(--sp) * 100vw);
  }
}

.detail-button:hover {
  background: #8b6b4f;
}

.no-events {
  grid-column: 1 / -1;
  text-align: center;
  padding: calc(30 / var(--pc) * 100vw);
  color: #666;
}

@media (max-width: 767px) {
  .no-events {
    padding: calc(30 / var(--sp) * 100vw);
  }
}

/* レスポンシブ対応 */
@media (max-width: 768px) {
  .event-table-header {
    display: none;
  }

  .event-table-row {
    grid-template-columns: 1fr;
    gap: calc(10 / var(--sp) * 100vw);
    padding: calc(15 / var(--sp) * 100vw);
    border: calc(1 / var(--sp) * 100vw) solid #eee;
    margin-bottom: calc(15 / var(--sp) * 100vw);
    border-radius: calc(8 / var(--sp) * 100vw);
  }

  .event-table-row:not(:last-child) {
    border-bottom: calc(1 / var(--sp) * 100vw) solid #eee;
  }

  .event-area-col {
    text-align: left;
  }

  .detail-button {
    width: 100%;
  }
}

/* イベント個別ページ */
.event-single {
  padding: calc(40 / var(--pc) * 100vw) 0;
}

.event-hero-image {
  margin-bottom: calc(30 / var(--pc) * 100vw);
  text-align: center;
}

.event-hero-image img {
  max-width: 100%;
  height: auto;
  border-radius: calc(8 / var(--pc) * 100vw);
}

.event-info-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: calc(40 / var(--pc) * 100vw);
  margin-bottom: calc(40 / var(--pc) * 100vw);
}

.event-title {
  padding: calc(20 / var(--pc) * 100vw) 0;
  font-size: calc(28 / var(--pc) * 100vw);
  margin-bottom: calc(30 / var(--pc) * 100vw);
  color: #333;
  text-align: center;
}

.event-details {
  margin-bottom: calc(30 / var(--pc) * 100vw);
}

.info-item {
  display: flex;
  margin-bottom: calc(15 / var(--pc) * 100vw);
  padding: calc(10 / var(--pc) * 100vw) 0;
  border-bottom: calc(1 / var(--pc) * 100vw) solid #eee;
}

.info-label {
  font-weight: bold;
  min-width: calc(120 / var(--pc) * 100vw);
  color: #666;
}

.info-value {
  flex: 1;
  color: #333;
}

.booking-section {
  margin-top: calc(30 / var(--pc) * 100vw);
  text-align: center;
}

.booking-button {
  display: inline-block;
  padding: calc(15 / var(--pc) * 100vw) calc(40 / var(--pc) * 100vw);
  background: #6b4423;
  color: #fff;
  text-decoration: none;
  border-radius: calc(8 / var(--pc) * 100vw);
  font-size: calc(18 / var(--pc) * 100vw);
  font-weight: bold;
  transition: background-color 0.3s;
}

.booking-button:hover {
  background: #8b6b4f;
}

.event-content {
  line-height: 1.8;
}

.navigation-links {
  display: flex;
  justify-content: space-between;
  margin-top: calc(40 / var(--pc) * 100vw);
  padding-top: calc(20 / var(--pc) * 100vw);
  border-top: calc(1 / var(--pc) * 100vw) solid #eee;
}

.back-link,
.back-to-top-link {
  width: fit-content;
  margin: 0 auto;
  margin-bottom: calc(40 / var(--pc) * 100vw);
  @media (max-width: 768px) {
    margin-bottom: calc(40 / var(--sp) * 100vw);
  }
  padding: calc(10 / var(--pc) * 100vw) calc(20 / var(--pc) * 100vw);
  background: var(--accent-color);
  color: var(--ivory-white-color);
  text-decoration: none;
  border-radius: calc(4 / var(--pc) * 100vw);
  transition: background-color 0.3s;
}

.back-link:hover,
.back-to-top-link:hover {
  opacity: 0.8;
}

/* レスポンシブ対応 */
@media (max-width: 768px) {
  .event-hero-image {
    margin-bottom: calc(30 / var(--sp) * 100vw);
  }

  .event-hero-image img {
    border-radius: calc(8 / var(--sp) * 100vw);
  }

  .event-info-grid {
    gap: calc(40 / var(--sp) * 100vw);
    margin-bottom: calc(40 / var(--sp) * 100vw);
  }

  .event-title {
    font-size: calc(28 / var(--sp) * 100vw);
    margin-bottom: calc(30 / var(--sp) * 100vw);
  }

  .event-details {
    margin-bottom: calc(30 / var(--sp) * 100vw);
  }

  .info-item {
    margin-bottom: calc(15 / var(--sp) * 100vw);
    padding: calc(10 / var(--sp) * 100vw) 0;
    border-bottom: calc(1 / var(--sp) * 100vw) solid #eee;
  }

  .info-label {
    min-width: calc(120 / var(--sp) * 100vw);
  }

  .booking-section {
    margin-top: calc(30 / var(--sp) * 100vw);
  }

  .booking-button {
    padding: calc(15 / var(--sp) * 100vw) calc(40 / var(--sp) * 100vw);
    border-radius: calc(8 / var(--sp) * 100vw);
    font-size: calc(18 / var(--sp) * 100vw);
  }

  .navigation-links {
    border-top: calc(1 / var(--sp) * 100vw) solid #eee;
  }

  .back-link,
  .back-to-top-link {
    padding: calc(10 / var(--sp) * 100vw) calc(20 / var(--sp) * 100vw);
    border-radius: calc(4 / var(--sp) * 100vw);
  }

  .event-info-grid {
    grid-template-columns: 1fr;
    gap: calc(20 / var(--pc) * 100vw);
  }

  .info-item {
    flex-direction: column;
  }

  .info-label {
    min-width: auto;
    margin-bottom: calc(5 / var(--sp) * 100vw);
  }

  .navigation-links {
    flex-direction: column;
    gap: calc(10 / var(--sp) * 100vw);
  }

  .booking-button {
    width: 100%;
    text-align: center;
  }
}

/* イベント個別ページの表形式スタイル */
.event-info-container {
  max-width: 100%;
  margin: 0 auto;
}

.event-info-table {
  margin-bottom: calc(40 / var(--pc) * 100vw);
}

.event-details-table {
  width: 100%;
  border-collapse: collapse;
  margin-bottom: calc(30 / var(--pc) * 100vw);
}

.event-details-table th,
.event-details-table td {
  padding: calc(15 / var(--pc) * 100vw) calc(20 / var(--pc) * 100vw);
  border-bottom: calc(2 / var(--pc) * 100vw) solid #eee;
  text-align: left;
  vertical-align: top;
}

.event-details-table th {
  background-color: var(--main-color);
  font-weight: bold;
  color: #333;
  width: calc(180 / var(--pc) * 100vw);
  min-width: calc(180 / var(--pc) * 100vw);
}

.event-details-table td {
  color: #333;
  line-height: 1.6;
}

.event-details-table tr:last-child th,
.event-details-table tr:last-child td {
  border-bottom: none;
}

/* レスポンシブ対応 */
@media (max-width: 768px) {
  .event-details-table th,
  .event-details-table td {
    padding: calc(12 / var(--sp) * 100vw) calc(15 / var(--sp) * 100vw);
    border-bottom: calc(1 / var(--sp) * 100vw) solid #eee;
  }

  .event-details-table th {
    width: calc(120 / var(--sp) * 100vw);
    min-width: calc(120 / var(--sp) * 100vw);
    font-size: calc(14 / var(--sp) * 100vw);
  }

  .event-details-table td {
    font-size: calc(14 / var(--sp) * 100vw);
  }

  .event-info-table {
    margin-bottom: calc(30 / var(--sp) * 100vw);
  }
}

/* 予約リンクのスタイル */
.booking-link {
  display: inline-block;
  padding: calc(8 / var(--pc) * 100vw) calc(16 / var(--pc) * 100vw);
  background: #6b4423;
  color: #fff;
  text-decoration: none;
  border-radius: calc(4 / var(--pc) * 100vw);
  font-size: calc(14 / var(--pc) * 100vw);
  font-weight: bold;
  transition: background-color 0.3s;
}

.booking-link:hover {
  background: #8b6b4f;
}

/* レスポンシブ対応 */
@media (max-width: 768px) {
  .booking-link {
    padding: calc(6 / var(--sp) * 100vw) calc(12 / var(--sp) * 100vw);
    border-radius: calc(4 / var(--sp) * 100vw);
    font-size: calc(12 / var(--sp) * 100vw);
  }
}

.page-title {
  font-size: calc(24 / var(--pc) * 100vw);
  line-height: 1.4;
  text-align: center;
  margin-bottom: calc(16 / var(--pc) * 100vw);
}

@media (max-width: 767px) {
  .page-title {
    font-size: calc(24 / var(--sp) * 100vw);
    margin-bottom: calc(16 / var(--sp) * 100vw);
  }
}


