/* toyoma — スレート基調（フッタ #3a4550）。ロゴ色 brand / 行動色 action を分離
 *
 * SP: 基準幅 393px。html font-size を流体化し rem で追従（.cursor/rules/sp-responsive-393.mdc）
 */

:root {
  --color-slate: #3a4550;
  --color-text: #3a4550;
  --color-text-muted: #5c6a76;
  --color-text-subtle: #7a8792;
  --color-primary: #3a4550;
  /*
   * 色の役割
   * - brand (#743c30): ロゴ同系。ナビ・落ち着いた区切りなど「らしさ」
   * - action: ワクワク・行動喚起（チケット・主要CTA）。朱寄りで写真とも合う
   */
  --color-brand: #743c30;
  --color-brand-border: color-mix(in srgb, var(--color-brand) 30%, #fff);
  --color-brand-hover-bg: color-mix(in srgb, var(--color-brand) 10%, #fff);
  --color-action: #c94f2e;
  --color-action-hover: #b03f22;
  --color-action-soft: color-mix(in srgb, var(--color-action) 10%, #fff);
  --color-action-border: color-mix(in srgb, var(--color-action) 32%, #fff);
  /* 強調（告知バー・旧accent参照）→ action に寄せる */
  --color-accent: var(--color-action);
  --color-accent-hover: var(--color-action-hover);
  /* 淡色帯・面 — スレートの薄い階調 */
  --color-muted: #e8edf1;
  --color-surface: #f0f3f5;
  --color-bg: #f4f6f8;
  --color-border: #c5ced6;
  --color-link: #3a4550;
  --color-link-hover: #2a333c;
  --band-white: #ffffff;
  --band-gray: #e6ebef;
  --grunge-tile: 1100px 1100px;
  --font-base: "Noto Sans JP", "Hiragino Kaku Gothic Pro", "メイリオ", Meiryo, sans-serif;
  --font-size-base: 16px;
  --sp-design-width: 393;
  --sp-scale: 1;
  --sp-unit: 1rem; /* 393px 基準の 16px 相当。SP でスケール */
  --radius-md: 12px;
  --header-height: 3.5rem;
  --header-gutter: 1rem;
  --header-gap: 0.5rem;
  --header-logo-max: 2.5rem;
  --header-cta-pad-y: 0.4rem;
  --header-cta-pad-x: 0.75rem;
  --header-cta-font: 0.8125rem;
  --header-toggle-bar: 1.25rem;
  --header-toggle-gap: 0.3rem;
  --touch-target: 2.75rem; /* 44px @ 16px（393px 基準） */
  --container-max: 1280px;
  --spacing-unit: 4px;
  /* 固定ヘッダ分。ページ内リンクの着地ずれ防止 */
  --scroll-pad-top: calc(var(--header-height) + 0.75rem);
}

@media (min-width: 1024px) {
  :root {
    --header-height: 80px;
    --header-logo-max: 60px;
    --header-cta-pad-y: 0.5rem;
    --header-cta-pad-x: 1rem;
    --header-cta-font: 0.875rem;
    --header-gap: 0.75rem;
    --touch-target: 44px;
  }
}

/* SP: ヘッダ一式を同比率で追従（ロゴだけ縮まない） */
@media (max-width: 1023px) {
  :root {
    --sp-scale: min(1, 100vw / 393px);
    --sp-unit: calc(16px * var(--sp-scale));
    --header-gutter: var(--sp-unit);
    --header-height: calc(3.5 * var(--sp-unit));
    --header-gap: calc(0.5 * var(--sp-unit));
    --header-logo-max: calc(2.5 * var(--sp-unit));
    --header-cta-pad-y: calc(0.4 * var(--sp-unit));
    --header-cta-pad-x: calc(0.75 * var(--sp-unit));
    --header-cta-font: calc(0.8125 * var(--sp-unit));
    --header-toggle-bar: calc(1.25 * var(--sp-unit));
    --header-toggle-gap: calc(0.3 * var(--sp-unit));
    --touch-target: calc(2.75 * var(--sp-unit));
  }

  html {
    font-size: clamp(14px, calc(16px * 100vw / 393), 17px);
  }
}

/* 768〜1023: ロゴ拡大に合わせヘッダ高さと余白を同比率で確保 */
@media (min-width: 768px) and (max-width: 1023px) {
  :root {
    --header-height: calc(4.5 * var(--sp-unit));
    --header-logo-max: calc(3.75 * var(--sp-unit));
    --header-cta-pad-y: calc(0.5 * var(--sp-unit));
    --header-cta-pad-x: var(--sp-unit);
    --header-cta-font: calc(0.875 * var(--sp-unit));
  }
}

/* 767以下: ボタン高さをロゴに合わせる／CTA・トグルを右寄りに */
@media (max-width: 767px) {
  :root {
    --touch-target: var(--header-logo-max);
  }

  .site-header__inner.container {
    width: 100%;
    max-width: var(--container-max);
    padding-inline: var(--header-gutter) calc(0.4 * var(--sp-unit));
    box-sizing: border-box;
  }
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  font-size: var(--font-size-base);
  scroll-behavior: smooth;
  scroll-padding-top: var(--scroll-pad-top);
}

/* ログイン時の管理バー分を加算 */
html:has(body.admin-bar) {
  scroll-padding-top: calc(var(--scroll-pad-top) + 32px);
}

@media screen and (max-width: 782px) {
  html:has(body.admin-bar) {
    scroll-padding-top: calc(var(--scroll-pad-top) + 46px);
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
}

body {
  margin: 0;
  font-family: var(--font-base);
  color: var(--color-text);
  background-color: var(--band-white);
  line-height: 1.8;
  -webkit-font-smoothing: antialiased;
}

/* 背景帯の上・コンテンツ（ヘッダ／カルーセル等）の下 */
.site-texture {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-repeat: repeat;
  background-size: var(--grunge-tile);
}

/*
 * 帯背景
 * texture は site-main より背面のため、帯を不透明にするとグランジが消える。
 * 施設・お知らせは帯を透過／半透明にし、カード・ビューポートは不透明のまま。
 */
.section--facilities {
  background: transparent;
}

.section--notices {
  background-color: color-mix(in srgb, var(--band-gray) 42%, transparent);
}

.site-main:not(.site-main--front) {
  background-color: transparent;
  background-image: none;
}

.external-ticket {
  background-color: transparent;
  background-image: none;
}

.site-footer {
  position: relative;
  z-index: 2;
  background-color: var(--color-slate);
  background-repeat: repeat;
  background-size: var(--grunge-tile);
  background-attachment: fixed;
  background-position: 0 0;
}

/* グランジより手前（カード等）。帯は透過で隙間からグランジが見える */
.flyer-carousel__viewport,
.flyer-carousel__controls,
.facility-slider,
.facility-grid,
.axis-cards,
.notice-card,
.notice-cards__more-link,
.notice-pins,
.exp-cards {
  position: relative;
  z-index: 1;
}

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

a {
  color: var(--color-link);
}

a:hover,
a:focus-visible {
  color: var(--color-link-hover);
}

a:focus-visible,
button:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

.container {
  width: min(100% - (var(--header-gutter) * 2), var(--container-max));
  margin-inline: auto;
}

.screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.skip-link:focus {
  position: fixed;
  top: 0.5rem;
  left: 0.5rem;
  z-index: 1000;
  width: auto;
  height: auto;
  margin: 0;
  padding: 0.75rem 1rem;
  clip: auto;
  background: #fff;
  color: var(--color-text);
}

/* Header */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  min-height: var(--header-height);
  background: rgba(255, 255, 255, 0.96);
  border-bottom: 0;
}

.site-header > .notices-edge {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1;
  margin: 0;
}

.site-header__inner {
  position: relative;
  z-index: 2;
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: var(--header-gap);
  min-height: var(--header-height);
}

.site-header__logo {
  display: flex;
  align-items: center;
  flex: 0 0 auto;
  text-decoration: none;
}

.site-header__cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  order: 2;
  margin-left: auto;
  padding: var(--header-cta-pad-y) var(--header-cta-pad-x);
  min-height: var(--touch-target);
  border: 1px solid color-mix(in srgb, var(--color-slate) 28%, transparent);
  border-radius: 999px;
  background: rgb(255 255 255 / 88%);
  color: var(--color-slate);
  font-size: var(--header-cta-font);
  font-weight: 600;
  letter-spacing: 0.04em;
  line-height: 1.2;
  text-decoration: none;
  white-space: nowrap;
  transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.site-header__cta:hover,
.site-header__cta:focus-visible {
  color: var(--color-slate);
  background: #fff;
  border-color: color-mix(in srgb, var(--color-slate) 45%, transparent);
}

.site-header__logo-img {
  display: block;
  width: auto;
  height: auto;
  max-height: var(--header-logo-max);
}

.site-header__toggle {
  display: flex;
  flex-direction: column;
  justify-content: center;
  flex: 0 0 auto;
  order: 3;
  gap: var(--header-toggle-gap);
  width: var(--touch-target);
  height: var(--touch-target);
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
}

.site-header__toggle-bar {
  display: block;
  width: var(--header-toggle-bar);
  height: 2px;
  margin-inline: auto;
  background: var(--color-brand);
}

.site-header__nav {
  display: none;
  order: 4;
  width: 100%;
}

.site-header__nav.is-open {
  display: block;
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 130;
  background: #fff;
  border-top: 1px solid var(--color-brand-border);
  border-bottom: 1px solid var(--color-brand-border);
  padding: 0.75rem 1rem 1rem;
  box-shadow: 0 12px 28px -4px rgb(58 69 80 / 16%);
  clip-path: inset(0 -40px -40px -40px);
}

/* 1023px以下: ハンバーガー → 全画面モーダル */
@media (max-width: 1023px) {
  .site-header {
    z-index: 200;
  }

  .site-header__inner {
    position: relative;
  }

  .site-header__toggle {
    display: flex;
  }

  .site-header__nav:not(.is-open) {
    display: none;
  }

  .site-header__nav.is-open {
    position: fixed;
    top: var(--header-height);
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    max-height: none;
    height: calc(100vh - var(--header-height));
    height: calc(100dvh - var(--header-height));
    margin: 0;
    padding: 0.35rem 0 calc(1.25rem + env(safe-area-inset-bottom, 0px));
    border-bottom: 0;
    box-shadow: none;
    clip-path: none;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    z-index: 190;
  }

  body.is-nav-open {
    overflow: hidden;
  }

  body.is-nav-open .mobile-bottom-bar {
    visibility: hidden;
    pointer-events: none;
  }

  .site-header__menu {
    display: block;
  }

  .site-header__menu > li > a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.7rem var(--header-gutter) 0.7rem calc(var(--header-gutter) + 1em);
    min-height: 0;
    border-bottom: 1px solid color-mix(in srgb, var(--color-slate) 24%, transparent);
    font-size: 0.875rem;
    line-height: 1.35;
    color: var(--color-text);
  }

  .site-header__menu > li > a:hover,
  .site-header__menu > li > a:focus-visible {
    color: var(--color-link-hover);
  }

  .site-header__menu > .menu-item-has-children > a::after {
    content: "";
    flex-shrink: 0;
    display: block;
    width: 0.35rem;
    height: 0.35rem;
    margin-top: -0.12rem;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg);
    transition: transform 0.18s ease, margin-top 0.18s ease;
  }

  .site-header__menu > .menu-item-has-children.is-open > a::after {
    margin-top: 0.12rem;
    transform: rotate(225deg);
  }

  .site-header__menu .sub-menu {
    position: static;
    display: none;
    transform: none;
    opacity: 1;
    visibility: visible;
    min-width: 0;
    margin: 0;
    padding: 0;
    box-shadow: none;
    background: transparent;
  }

  .site-header__menu .menu-item-has-children.is-open > .sub-menu {
    display: block;
  }

  .site-header__menu .sub-menu::before {
    content: none;
  }

  .site-header__menu .sub-menu > li {
    border-bottom: 1px solid color-mix(in srgb, var(--color-slate) 10%, transparent);
  }

  .site-header__menu .sub-menu > li:last-child {
    border-bottom-color: color-mix(in srgb, var(--color-slate) 24%, transparent);
  }

  .site-header__menu .sub-menu a {
    padding: 0.6rem var(--header-gutter) 0.6rem calc(var(--header-gutter) + 0.75rem + 1em);
    min-height: 0;
    font-size: 0.8125rem;
    line-height: 1.35;
    color: var(--color-text);
  }

  .site-header__menu .sub-menu a:hover,
  .site-header__menu .sub-menu a:focus-visible {
    color: var(--color-link-hover);
  }

  .site-header__app {
    margin-top: 0.35rem;
    margin-inline: var(--header-gutter);
    padding-left: 1em;
  }
}

.site-header__menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

.site-header__menu > .menu-item-has-children {
  position: relative;
}

.site-header__menu a {
  display: block;
  padding: 0.75rem 0;
  min-height: 44px;
  color: var(--color-brand);
  font-weight: 500;
  text-decoration: none;
}

.site-header__menu a:hover,
.site-header__menu a:focus-visible {
  color: #5c2f26;
}

.site-header__menu .sub-menu {
  display: none;
  list-style: none;
  margin: 0;
  padding: 0;
}

.site-header__menu .menu-item-has-children.is-open > .sub-menu {
  display: block;
}

.site-header__menu .sub-menu a {
  min-height: 0;
  font-size: 0.8125rem;
}

.site-header__app {
  display: inline-flex;
  margin-top: 0.75rem;
  color: var(--color-primary);
  font-weight: 700;
  text-decoration: none;
}

@media (min-width: 1024px) {
  .site-header__inner {
    gap: 1.4rem;
  }

  .site-header__toggle {
    display: none;
  }

  .site-header__nav,
  .site-header__nav.is-open {
    display: flex;
    align-items: center;
    order: 2;
    width: auto;
    margin-left: auto;
    gap: 1.4rem;
    position: static;
    inset: auto;
    height: auto;
    max-height: none;
    border: 0;
    padding: 0;
    box-shadow: none;
    background: transparent;
    overflow: visible;
    clip-path: none;
  }

  .site-header__cta {
    order: 3;
    margin-left: 0;
  }

  .site-header__menu {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1.05rem 1.4rem;
  }

  .site-header__menu > li {
    position: relative;
  }

  .site-header__menu a {
    padding: 0.25rem 0;
    min-height: 0;
    font-size: 0.875rem;
    white-space: nowrap;
  }

  .site-header__menu > .menu-item-has-children > a {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
  }

  .site-header__menu > .menu-item-has-children > a::after {
    content: "";
    display: block;
    width: 0.35rem;
    height: 0.35rem;
    margin-top: -0.15rem;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg);
    transition: transform 0.18s ease;
  }

  .site-header__menu > .menu-item-has-children:hover > a::after,
  .site-header__menu > .menu-item-has-children:focus-within > a::after,
  .site-header__menu > .menu-item-has-children.is-open > a::after {
    margin-top: 0.1rem;
    transform: rotate(225deg);
  }

  .site-header__menu .sub-menu {
    position: absolute;
    top: 100%;
    left: 50%;
    z-index: 130;
    display: block;
    min-width: 12.5rem;
    padding: 0.45rem 0 0;
    border: 0;
    border-radius: 4px;
    background: transparent;
    box-shadow: none;
    opacity: 0;
    visibility: hidden;
    transform: translate(-50%, 4px);
    transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s ease;
  }

  /* 親〜サブの隙間でもホバーが切れないようヒット領域を確保 */
  .site-header__menu .sub-menu::before {
    content: "";
    position: absolute;
    top: 0.45rem;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: -1;
    border-radius: 4px;
    background: #fff;
    box-shadow: 0 12px 36px rgb(58 69 80 / 28%);
  }

  .site-header__menu .menu-item-has-children:hover > .sub-menu,
  .site-header__menu .menu-item-has-children:focus-within > .sub-menu,
  .site-header__menu .menu-item-has-children.is-open > .sub-menu {
    opacity: 1;
    visibility: visible;
    transform: translate(-50%, 0);
  }

  .site-header__menu .sub-menu a {
    position: relative;
    padding: 0.35rem 0.85rem;
    min-height: 0;
    font-size: 0.8125rem;
  }

  .site-header__menu .sub-menu > li:first-child > a {
    border-radius: 4px 4px 0 0;
  }

  .site-header__menu .sub-menu > li:last-child > a {
    border-radius: 0 0 4px 4px;
  }

  .site-header__menu .sub-menu > li:only-child > a {
    border-radius: 4px;
  }

  .site-header__menu .sub-menu a:hover,
  .site-header__menu .sub-menu a:focus-visible {
    background: var(--color-brand-hover-bg);
  }

  .site-header__menu .sub-menu .menu-item--divider {
    position: relative;
    margin: 0;
    padding: 0;
    border: 0;
  }

  .site-header__menu .sub-menu .menu-item--divider::before {
    content: "";
    position: absolute;
    top: 0;
    right: 0.85rem;
    left: 0.85rem;
    z-index: 1;
    height: 1px;
    pointer-events: none;
    background: var(--color-brand-border);
  }

  .site-header__app {
    margin-top: 0;
  }
}

/* Sections
 * site-main を texture(z-index:0) より手前に。
 * transform 付きカルーセルは子の z-index が外に効かないため main 側で確保する。
 */
.site-main {
  position: relative;
  z-index: 1;
  min-height: 50vh;
  padding-block: 1.5rem 3rem;
}

.site-main--front {
  padding-block: 0;
}

.section {
  padding-block: 2.5rem;
}

.section-title {
  margin: 0 0 1rem;
  font-size: 1.25rem;
  color: var(--color-primary);
}

.section-header {
  margin-bottom: 1.5rem;
}

.section-header .section-title {
  margin-bottom: 0.35rem;
}

.section-lead {
  margin: 0;
  color: var(--color-text-muted);
  font-size: 0.9375rem;
}

.section--notices {
  padding-block: 3.75rem;
}

/* トップリード（みやぎの明治村とは） */
.intro-lead {
  position: relative;
  z-index: 1;
  padding-block: 2.25rem 0.5rem;
}

.intro-lead__inner.container {
  width: min(100% - (var(--header-gutter) * 2), var(--container-max));
}

.intro-lead__title {
  margin: 0 0 0.75rem;
  color: var(--color-primary);
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.4;
  text-align: center;
}

.intro-lead__text {
  margin: 0;
  color: var(--color-text);
  font-size: 0.9375rem;
  font-weight: 400;
  line-height: 1.85;
  text-align: center;
}

.intro-lead__text + .intro-lead__text {
  margin-top: 0.35rem;
}

@media (min-width: 1024px) {
  .intro-lead__text {
    white-space: nowrap;
  }
}

.intro-lead__more {
  margin: 1.25rem 0 0;
  text-align: center;
}

/* Flyer carousel — SP中央3枚 / PC中央4枚。余白は半透明チラ見せ */
.flyer-carousel {
  --flyer-gap: 0.5rem;
  --flyer-radius: 4px;
  --flyer-peek-opacity: 0.38;
  --flyer-primary: 3;
  --flyer-core-gutter: 1.25rem;
  --flyer-core: min(calc(100% - var(--flyer-core-gutter)), var(--container-max));
  --flyer-slide-w: calc(
    (var(--flyer-core) - (var(--flyer-primary) - 1) * var(--flyer-gap)) / var(--flyer-primary)
  );
  --flyer-side: max(0px, calc((100% - var(--flyer-core)) / 2));
  width: 100%;
  max-width: none;
  margin-inline: 0;
  padding-block: 1.75rem 1.25rem;
  box-sizing: border-box;
  overflow: hidden;
}

@media (min-width: 768px) {
  .flyer-carousel {
    --flyer-gap: 0.65rem;
    --flyer-primary: 4;
    --flyer-core-gutter: 2rem;
  }
}

.flyer-carousel__inner {
  width: 100%;
}

.flyer-carousel__placeholder {
  width: min(calc(100% - 2rem), var(--container-max));
  margin-inline: auto;
  padding: 1.5rem 1rem;
  color: var(--color-text-muted);
  text-align: center;
  background: var(--color-muted);
  border-radius: var(--flyer-radius);
}

.flyer-carousel__viewport {
  overflow: hidden;
  width: 100%;
  min-width: 0;
  touch-action: pan-y;
  cursor: grab;
}

.flyer-carousel__viewport:active {
  cursor: grabbing;
}

.flyer-carousel__track {
  display: flex;
  gap: var(--flyer-gap);
  margin: 0;
  padding: 0;
  list-style: none;
  will-change: transform;
}

/* JS前: コア左端に合わせて仮配置（クローン追加後は JS が上書き） */
.flyer-carousel:not(.is-ready) .flyer-carousel__track {
  transform: translate3d(var(--flyer-side), 0, 0);
}

.flyer-carousel__slide {
  flex: 0 0 var(--flyer-slide-w);
  width: var(--flyer-slide-w);
  max-width: var(--flyer-slide-w);
  min-width: 0;
  opacity: var(--flyer-peek-opacity);
  transition: opacity 0.25s ease;
}

.flyer-carousel:not(.is-ready) .flyer-carousel__slide:nth-child(-n + 3),
.flyer-carousel__slide.is-primary {
  opacity: 1;
}

@media (min-width: 768px) {
  .flyer-carousel:not(.is-ready) .flyer-carousel__slide:nth-child(-n + 3) {
    opacity: var(--flyer-peek-opacity);
  }

  .flyer-carousel:not(.is-ready) .flyer-carousel__slide:nth-child(-n + 4) {
    opacity: 1;
  }
}

.flyer-card {
  display: block;
  margin: 0;
  border-radius: var(--flyer-radius);
  overflow: hidden;
  background: #fff;
  box-shadow: 0 1px 2px rgb(42 51 58 / 8%);
  text-decoration: none;
  color: inherit;
}

.flyer-card img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  aspect-ratio: 5 / 7;
  object-fit: cover;
}

/* テキストのみスライド（画像チラシと同比率の帯） */
.flyer-card--text {
  display: flex;
  aspect-ratio: 5 / 7;
  background:
    linear-gradient(180deg, rgb(255 255 255 / 92%) 0%, rgb(248 250 251 / 96%) 100%),
    var(--color-muted, #eef2f5);
  border: 1px solid rgb(42 51 58 / 10%);
  box-shadow: none;
  color: var(--color-slate, #2a333a);
}

.flyer-card__text {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  width: 100%;
  height: 100%;
  padding: 0.95rem 0.85rem 1rem;
  overflow: auto;
  box-sizing: border-box;
  -webkit-overflow-scrolling: touch;
}

.flyer-card__title {
  margin: 0;
  font-family: var(--font-serif);
  font-size: 0.9375rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  line-height: 1.45;
  color: var(--color-slate, #2a333a);
}

.flyer-card__body {
  margin: 0;
  font-size: 0.75rem;
  line-height: 1.7;
  letter-spacing: 0.02em;
  color: rgb(42 51 58 / 88%);
}

.flyer-card__body br + br {
  display: none;
}

@media (min-width: 768px) {
  .flyer-card__text {
    padding: 1.1rem 1rem 1.15rem;
    gap: 0.65rem;
  }

  .flyer-card__title {
    font-size: 1rem;
  }

  .flyer-card__body {
    font-size: 0.8125rem;
    line-height: 1.75;
  }
}

.flyer-carousel__controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  margin-top: 0.85rem;
}

.flyer-carousel__nav {
  display: grid;
  place-items: center;
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid #b8c2cb;
  border-radius: 999px;
  background: #eef2f5;
  color: #5c6a76;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
  box-shadow: 0 1px 2px rgb(0 0 0 / 6%);
}

.flyer-carousel__nav:hover,
.flyer-carousel__nav:focus-visible {
  background: #e2e8ed;
  border-color: #8a969f;
  color: var(--color-slate);
}

.flyer-carousel__nav-icon {
  display: block;
  width: 10px;
  height: 10px;
  border-style: solid;
  border-color: currentColor;
  border-width: 0 0 2.5px 2.5px;
}

.flyer-carousel__nav--prev .flyer-carousel__nav-icon {
  transform: translateX(2px) rotate(45deg);
}

.flyer-carousel__nav--next .flyer-carousel__nav-icon {
  transform: translateX(-2px) rotate(-135deg);
}

.flyer-carousel__pager {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 0.45rem;
  min-height: 44px;
}

.flyer-carousel__dot {
  width: 8px;
  height: 8px;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: #b8c2cb;
  cursor: pointer;
  transition: background 0.2s, width 0.2s;
}

.flyer-carousel__dot.is-active {
  width: 20px;
  background: #6a7682;
}

.flyer-carousel__dot:hover:not(.is-active),
.flyer-carousel__dot:focus-visible:not(.is-active) {
  background: #8a969f;
}

.alert-banner {
  padding: 0.75rem 0;
  background: var(--color-accent);
  color: #fff;
}

.alert-banner__text,
.alert-banner__link {
  margin: 0;
  color: #fff;
  font-weight: 700;
  text-decoration: none;
}

.alert-banner__link:hover,
.alert-banner__link:focus-visible {
  color: #fff;
  text-decoration: underline;
}

/* 特集（旅しおりなど）— カルーセルと施設スライダーの間 */
.feature-promo {
  position: relative;
  z-index: 1;
  margin-block: 0;
  padding-block: 1.75rem 2rem;
  overflow: visible;
  /* 帯は透過寄りにして texture を見せる（不透明にするとグランジが消える） */
  background: color-mix(in srgb, var(--color-brand) 10%, transparent);
  border: 0;
}

.feature-promo__inner.container {
  width: min(100% - (var(--header-gutter) * 2), 40rem);
  max-width: none;
}

.feature-promo__head {
  margin: 0 0 1.15rem;
  text-align: center;
}

.feature-promo__title {
  margin: 0;
  font-size: clamp(1rem, 2.8vw, 1.25rem);
  font-weight: 700;
  line-height: 1.5;
  color: var(--color-brand);
}

.feature-promo__media {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.75rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

@media (min-width: 640px) {
  .feature-promo__media {
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
  }
}

.feature-promo__item {
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--color-brand) 16%, #fff);
  border-radius: 4px;
  background: #fff;
  box-shadow: 0 2px 10px rgb(58 69 80 / 8%);
}

.feature-promo__img {
  display: block;
  width: 100%;
  height: auto;
}

.feature-promo__more {
  margin: 1.35rem 0 0;
  text-align: center;
}

.feature-promo .site-header__cta.feature-promo__cta {
  order: 0;
  margin-left: 0;
}

.feature-promo__cta .link-ext {
  margin-left: 0.35em;
}

.facility-slider__placeholder,
.external-ticket__placeholder {
  margin: 0;
  padding: 1.5rem;
  color: var(--color-text-muted);
  text-align: center;
}

.section--facilities {
  padding-block: 2.75rem 3.25rem;
}

.facility-slider {
  background: transparent;
}

.facility-slider__frame {
  width: 100%;
}

.facility-slider__viewport {
  overflow: hidden;
  touch-action: pan-y;
  cursor: grab;
  border: 1px solid rgb(63 83 96 / 12%);
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 1px 0 rgb(42 51 58 / 4%);
}

.facility-slider__viewport:active {
  cursor: grabbing;
}

.facility-slider__track {
  display: flex;
  list-style: none;
  margin: 0;
  padding: 0;
  will-change: transform;
  transition: transform 0.65s cubic-bezier(0.22, 0.61, 0.36, 1);
}

@media (prefers-reduced-motion: reduce) {
  .facility-slider__track {
    transition: none;
  }
}

.facility-slider__slide {
  flex: 0 0 100%;
  min-width: 0;
}

.facility-slide {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  gap: 0;
  align-items: stretch;
  min-height: 0;
  color: inherit;
  text-decoration: none;
}

.facility-slide:hover,
.facility-slide:focus-visible {
  color: inherit;
}

.facility-slide__media {
  display: block;
  min-height: 0;
  overflow: hidden;
  background: #e4ebef;
}

.facility-slide__media img {
  width: 100%;
  height: 100%;
  max-height: 260px;
  object-fit: cover;
  aspect-ratio: 16 / 10;
}

.facility-slide__body {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.45rem;
  padding: 1rem 1.15rem;
  border-left: 3px solid var(--color-primary);
}

.facility-slide__name {
  color: var(--color-slate);
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1.3;
  margin-bottom: 0.35rem;
}

@media (min-width: 768px) {
  .facility-slide__name {
    font-size: 2.5rem;
    letter-spacing: 0.06em;
  }
}

.facility-slide__excerpt {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
  overflow: hidden;
  color: var(--color-text-muted);
  font-size: 1rem;
  line-height: 1.7;
}

.facility-slide__more {
  display: inline-flex;
  align-items: center;
  align-self: flex-end;
  gap: 0.35rem;
  margin-top: auto;
  color: var(--color-primary);
  font-size: 0.8125rem;
  font-weight: 700;
}

.facility-slide__more::after {
  content: "";
  display: block;
  width: 0.35rem;
  height: 0.35rem;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(-45deg);
}

.facility-slide:hover .facility-slide__more,
.facility-slide:focus-visible .facility-slide__more {
  color: var(--color-link-hover);
}

.facility-slider__controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  margin-top: 0.85rem;
}

.facility-slider__nav {
  display: grid;
  place-items: center;
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid #b8c2cb;
  border-radius: 999px;
  background: #eef2f5;
  color: #5c6a76;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
  box-shadow: 0 1px 2px rgb(0 0 0 / 6%);
}

.facility-slider__nav:hover,
.facility-slider__nav:focus-visible {
  background: #e2e8ed;
  border-color: #8a969f;
  color: var(--color-slate);
}

.facility-slider__nav:disabled {
  opacity: 0.35;
  cursor: default;
  pointer-events: none;
}

.facility-slider__nav-icon {
  display: block;
  width: 10px;
  height: 10px;
  border-style: solid;
  border-color: currentColor;
  border-width: 0 0 2.5px 2.5px;
}

.facility-slider__nav--prev .facility-slider__nav-icon {
  transform: translateX(2px) rotate(45deg);
}

.facility-slider__nav--next .facility-slider__nav-icon {
  transform: translateX(-2px) rotate(-135deg);
}

.facility-slider__pager {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 0.45rem;
  min-height: 44px;
}

.facility-slider__dot {
  width: 8px;
  height: 8px;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: #b8c2cb;
  cursor: pointer;
  transition: background 0.2s, width 0.2s;
}

.facility-slider__dot.is-active {
  width: 20px;
  background: #6a7682;
}

.facility-slider__dot:hover:not(.is-active),
.facility-slider__dot:focus-visible:not(.is-active) {
  background: #8a969f;
}

@media (max-width: 719px) {
  .facility-slide {
    grid-template-columns: 1fr;
  }

  .facility-slide__media img {
    max-height: 200px;
    aspect-ratio: 16 / 9;
  }

  .facility-slide__body {
    border-left: 0;
    border-top: 3px solid var(--color-primary);
    padding: 0.9rem 1rem 1.05rem;
  }

  .facility-slide__excerpt {
    -webkit-line-clamp: 3;
  }
}

.notice-cards {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.65rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

@media (min-width: 640px) {
  .notice-cards {
    grid-template-columns: repeat(2, 1fr);
    gap: 1rem;
  }
}

@media (min-width: 1024px) {
  .notice-cards {
    grid-template-columns: repeat(3, 1fr);
    gap: 1.15rem;
  }
}

.notice-card {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  height: 100%;
  min-height: 0;
  overflow: hidden;
  color: inherit;
  text-decoration: none;
  background: #fff;
  border: 1px solid rgb(0 0 0 / 10%);
  border-radius: 8px;
  box-shadow: 0 1px 0 rgb(0 0 0 / 4%);
  transition:
    transform 0.25s ease,
    border-color 0.25s ease,
    box-shadow 0.25s ease;
}

.notice-card:hover,
.notice-card:focus-visible {
  color: inherit;
  border-color: rgb(0 0 0 / 22%);
  box-shadow: 0 8px 22px rgb(0 0 0 / 8%);
  transform: translateY(-3px);
}

@media (prefers-reduced-motion: reduce) {
  .notice-card {
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
  }

  .notice-card:hover,
  .notice-card:focus-visible {
    transform: none;
  }
}

.notice-card__media {
  display: block;
  flex: 0 0 5.25rem;
  width: 5.25rem;
  aspect-ratio: 4 / 5;
  align-self: center;
  overflow: hidden;
  background: #e8edf1;
}

@media (min-width: 640px) {
  .notice-card__media {
    flex-basis: 6.25rem;
    width: 6.25rem;
  }
}

@media (min-width: 1024px) {
  .notice-card__media {
    flex-basis: 7rem;
    width: 7rem;
  }
}

.notice-card__media--dummy {
  background: #eef2f5;
}

.notice-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  transition: transform 0.35s ease;
}

.notice-card__media--dummy img {
  object-fit: cover;
  background: #eef2f5;
}

.notice-card:hover .notice-card__media img,
.notice-card:focus-visible .notice-card__media img {
  transform: scale(1.04);
}

@media (prefers-reduced-motion: reduce) {
  .notice-card__media img {
    transition: none;
  }

  .notice-card:hover .notice-card__media img,
  .notice-card:focus-visible .notice-card__media img {
    transform: none;
  }
}

.notice-card__body {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  flex: 1;
  min-width: 0;
  justify-content: center;
  padding: 0.55rem 0.7rem;
  border-top: 0;
  border-left: 2px solid #a8b4be;
}

@media (min-width: 640px) {
  .notice-card__body {
    gap: 0.35rem;
    padding: 0.7rem 0.85rem;
  }
}

.notice-card__event {
  --notice-kind-bg: #3e7394;
  --notice-kind-fg: #2f5a72;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.25rem 0.4rem;
  color: var(--notice-kind-fg);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1.3;
}

@media (min-width: 640px) {
  .notice-card__event {
    gap: 0.35rem 0.5rem;
    font-size: 0.75rem;
  }
}

.notice-card__event--sale {
  --notice-kind-bg: #3e8160;
  --notice-kind-fg: #2f634a;
}

.notice-card__event-label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.35em 0.45em;
  color: #fff;
  background: var(--notice-kind-bg);
  border-radius: 3px;
  letter-spacing: 0.06em;
  line-height: 1;
}

.notice-card__event-date {
  letter-spacing: 0.04em;
}

.notice-card__date {
  color: var(--color-text-subtle);
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  line-height: 1.3;
}

.entry-event {
  --notice-kind-bg: #3e7394;
  --notice-kind-fg: #2f5a72;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem 0.6rem;
  margin: 0 0 0.5rem;
  color: var(--notice-kind-fg);
  font-size: 0.9375rem;
  font-weight: 700;
}

.entry-event--sale {
  --notice-kind-bg: #3e8160;
  --notice-kind-fg: #2f634a;
}

.entry-event__label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.4em 0.5em;
  color: #fff;
  background: var(--notice-kind-bg);
  border-radius: 3px;
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  line-height: 1;
}

.notice-card__title {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  color: var(--color-text);
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1.4;
}

.notice-card__title small {
  font-size: 0.72em;
  font-weight: inherit;
}

@media (min-width: 640px) {
  .notice-card__title {
    font-size: 0.9375rem;
    line-height: 1.45;
  }
}

.notice-cards__more {
  margin: 1.75rem 0 0;
  text-align: center;
}

.notice-cards__more-link {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.65rem 1.25rem;
  color: var(--color-text);
  font-weight: 700;
  text-decoration: none;
  background: #fff;
  border: 1px solid rgb(0 0 0 / 16%);
  border-radius: 999px;
  transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.notice-cards__more-link::after {
  content: "";
  display: block;
  width: 0.4rem;
  height: 0.4rem;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(-45deg);
}

.notice-cards__more-link:hover,
.notice-cards__more-link:focus-visible {
  color: #fff;
  background: var(--color-action);
  border-color: var(--color-action);
}

/* お知らせ固定カード（画像のみ） SP 2x3 / PC 6x1 */
.notice-pins {
  position: relative;
  z-index: 1;
  margin-top: 0;
  padding-block: 3.75rem 0;
  border-bottom: 0;
}

/* お知らせ固定カード等の下線（1px 表示 + はみ出しグランジ） */
.notices-edge {
  display: block;
  width: 100%;
  height: 1px;
  margin: 3.75rem 0 0;
  padding: 0;
  border: 0;
  line-height: 0;
  overflow: visible;
  background: none;
  color: #7a848e;
}

.notices-edge--brand {
  /* ヘッダ・下層ヒーロ用：かなり濃いブランド調 */
  color: color-mix(in srgb, var(--color-brand) 82%, #fff);
}

.notices-edge--archive {
  color: color-mix(in srgb, var(--color-brand) 70%, #7a848e);
}

.notices-edge--section {
  color: color-mix(in srgb, var(--color-brand) 55%, #7a848e);
}

.notices-edge--widget {
  color: #7a848e;
}

.notices-edge__svg {
  display: block;
  width: 100%;
  height: 1px;
  overflow: visible;
}

/* 外部チケット直上（セクション上端の線） */
.external-ticket > .notices-edge {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  margin: 0;
}

/* 体験プログラム 4 カード */
.exp-cards {
  position: relative;
  z-index: 1;
  padding-block: 3.75rem;
}

.exp-cards__list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.25rem 0.75rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

@media (min-width: 768px) {
  .exp-cards__list {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1.5rem 1rem;
  }
}

.exp-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  height: 100%;
  text-align: center;
}

.exp-card__title {
  margin: 0 0 0.65rem;
  color: var(--color-text);
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.45;
}

@media (min-width: 768px) {
  .exp-card__title {
    font-size: 0.875rem;
  }
}

.exp-card__media {
  width: 100%;
  margin: 0 0 0.85rem;
  padding: 0.5rem;
  background: #fff;
  box-shadow: 0 1px 8px rgb(42 51 58 / 14%);
  border-radius: 2px;
}

.exp-card__media img {
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  object-position: center;
  display: block;
}

.exp-card--paused .exp-card__media img {
  opacity: 0.5;
}

.exp-card__link {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin-top: auto;
  padding: 0.45rem 0.9rem;
  color: var(--color-text);
  font-size: 0.8125rem;
  font-weight: 700;
  text-decoration: none;
  background: #fff;
  border: 1px solid rgb(0 0 0 / 16%);
  border-radius: 999px;
  transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.exp-card__link::after {
  content: "";
  display: block;
  width: 0.35rem;
  height: 0.35rem;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(-45deg);
}

.exp-card__link:hover,
.exp-card__link:focus-visible {
  color: #fff;
  background: var(--color-slate);
  border-color: var(--color-slate);
}

.exp-card__status {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  margin: auto 0 0;
  padding: 0.45rem 0.6rem;
  color: var(--color-text);
  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1.4;
  background: color-mix(in srgb, var(--band-gray) 65%, #fff);
  border-radius: 4px;
}

.exp-card__status-note {
  font-size: 0.6875rem;
  font-weight: 500;
  color: var(--color-text-muted);
}

.notice-pins__list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.65rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

@media (min-width: 1024px) {
  .notice-pins__list {
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 0.85rem;
  }
}

.notice-pins__link {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  text-decoration: none;
  color: inherit;
}

.notice-pins__card {
  display: block;
  overflow: hidden;
  border-radius: 6px;
  background: #fff;
  box-shadow: 0 1px 3px rgb(42 51 58 / 10%);
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.notice-pins__link:hover .notice-pins__card,
.notice-pins__link:focus-visible .notice-pins__card {
  box-shadow: 0 4px 14px rgb(42 51 58 / 14%);
  transform: translateY(-1px);
}

.notice-pins__media {
  display: block;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  background: #e8edf1;
}

.notice-pins__media--dummy {
  background: #eef2f5;
}

.notice-pins__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transition: transform 0.35s ease;
}

.notice-pins__title {
  display: -webkit-box;
  margin: 0;
  padding: 0;
  overflow: hidden;
  color: var(--color-text);
  font-size: 0.8125rem;
  font-weight: 600;
  line-height: 1.4;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.notice-pins__title small {
  font-size: 0.72em;
  font-weight: inherit;
}

.notice-pins__link:hover .notice-pins__title,
.notice-pins__link:focus-visible .notice-pins__title {
  color: var(--color-brand);
}

.notice-pins__link:hover .notice-pins__media img,
.notice-pins__link:focus-visible .notice-pins__media img {
  transform: scale(1.04);
}

@media (prefers-reduced-motion: reduce) {
  .notice-pins__card,
  .notice-pins__media img {
    transition: none;
  }

  .notice-pins__link:hover .notice-pins__card,
  .notice-pins__link:focus-visible .notice-pins__card {
    transform: none;
  }

  .notice-pins__link:hover .notice-pins__media img,
  .notice-pins__link:focus-visible .notice-pins__media img {
    transform: none;
  }
}

.archive-header {
  margin-bottom: 2.25rem;
}

.archive-header__kicker {
  margin: 0 0 0.45rem;
  color: var(--color-brand);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 1.4;
}

.archive-header__title {
  margin: 0;
  font-size: clamp(1.35rem, 1.15rem + 0.75vw, 1.7rem);
  font-weight: 800;
  line-height: 1.35;
  letter-spacing: 0.05em;
  color: var(--color-slate);
}

.archive-header__lead {
  margin: 0.65rem 0 0;
  color: var(--color-text-muted);
  font-size: 0.9375rem;
  line-height: 1.7;
}

.archive-header__lead > :first-child {
  margin-top: 0;
}

.archive-header__lead > :last-child {
  margin-bottom: 0;
}

.archive-header .notices-edge--archive {
  margin: 0.85rem 0 0;
}

.post-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.post-list li + li {
  margin-top: 0.75rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--color-border);
}

.post-list a {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  color: var(--color-text);
  text-decoration: none;
}

/* 投稿一覧・検索結果 — ページネーション */
.archive-pagination {
  margin-top: 2.5rem;
}

.navigation.pagination--posts,
.archive-pagination .navigation {
  padding-top: 1.75rem;
}

.navigation.pagination--posts .nav-links,
.archive-pagination .nav-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
}

.navigation.pagination--posts .page-numbers,
.archive-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  min-width: var(--touch-target, 2.75rem);
  min-height: var(--touch-target, 2.75rem);
  padding: 0 0.7rem;
  color: var(--color-text);
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
  background: #fff;
  border: 1px solid color-mix(in srgb, var(--color-slate) 20%, transparent);
  border-radius: var(--radius-md);
  transition:
    background 0.2s ease,
    border-color 0.2s ease,
    color 0.2s ease,
    box-shadow 0.2s ease;
}

.navigation.pagination--posts a.page-numbers:hover,
.navigation.pagination--posts a.page-numbers:focus-visible,
.archive-pagination a.page-numbers:hover,
.archive-pagination a.page-numbers:focus-visible {
  color: var(--color-brand);
  border-color: color-mix(in srgb, var(--color-brand) 45%, transparent);
  background: color-mix(in srgb, var(--color-brand) 6%, #fff);
  box-shadow: 0 2px 8px rgb(0 0 0 / 6%);
}

.navigation.pagination--posts .page-numbers:focus-visible,
.archive-pagination .page-numbers:focus-visible {
  outline: 2px solid var(--color-brand);
  outline-offset: 2px;
}

.navigation.pagination--posts .page-numbers.current,
.archive-pagination .page-numbers.current {
  color: #fff;
  background: var(--color-slate);
  border-color: var(--color-slate);
  box-shadow: none;
  cursor: default;
}

.navigation.pagination--posts .page-numbers.dots,
.archive-pagination .page-numbers.dots {
  min-width: auto;
  padding-inline: 0.35rem;
  color: var(--color-text-subtle);
  font-weight: 600;
  background: transparent;
  border-color: transparent;
  cursor: default;
}

.navigation.pagination--posts a.page-numbers.prev,
.navigation.pagination--posts a.page-numbers.next,
.archive-pagination a.page-numbers.prev,
.archive-pagination a.page-numbers.next {
  min-width: auto;
  padding-inline: 1rem;
  font-size: 0.8125rem;
}

.navigation.pagination--posts .pagination__arrow,
.archive-pagination .pagination__arrow {
  font-size: 0.95rem;
  line-height: 1;
}

@media (max-width: 639px) {
  .navigation.pagination--posts .nav-links,
  .archive-pagination .nav-links {
    gap: 0.4rem;
  }

  .navigation.pagination--posts a.page-numbers.prev,
  .navigation.pagination--posts a.page-numbers.next,
  .archive-pagination a.page-numbers.prev,
  .archive-pagination a.page-numbers.next {
    flex: 1 1 calc(50% - 0.2rem);
    max-width: calc(50% - 0.2rem);
    order: 1;
  }

  .navigation.pagination--posts a.page-numbers.prev,
  .archive-pagination a.page-numbers.prev {
    justify-content: flex-start;
  }

  .navigation.pagination--posts a.page-numbers.next,
  .archive-pagination a.page-numbers.next {
    justify-content: flex-end;
  }

  .navigation.pagination--posts .page-numbers:not(.prev):not(.next),
  .archive-pagination .page-numbers:not(.prev):not(.next) {
    order: 0;
  }
}

@media (min-width: 640px) {
  .navigation.pagination--posts .nav-links,
  .archive-pagination .nav-links {
    gap: 0.5rem;
  }

  .navigation.pagination--posts a.page-numbers.prev,
  .archive-pagination a.page-numbers.prev {
    margin-right: 0.35rem;
  }

  .navigation.pagination--posts a.page-numbers.next,
  .archive-pagination a.page-numbers.next {
    margin-left: 0.35rem;
  }
}

.post-list__date {
  color: var(--color-text-subtle);
  font-size: 0.875rem;
}

.post-list__more {
  margin: 1.25rem 0 0;
}
.external-ticket {
  position: relative;
  padding: 5rem 0;
}

.external-ticket__list {
  display: flex;
  flex-wrap: nowrap;
  justify-content: center;
  align-items: center;
  gap: 0.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.external-ticket__item {
  flex: 1 1 0;
  width: auto;
  min-width: 0;
  max-width: 6.5rem;
}

@media (min-width: 768px) {
  .external-ticket__list {
    gap: 1rem 1.25rem;
  }

  .external-ticket__item {
    flex: 0 0 auto;
    width: 140px;
    max-width: none;
  }
}

.external-ticket__link {
  display: block;
  overflow: hidden;
  border-radius: 8px;
  line-height: 0;
  opacity: 0.9;
  transition: opacity 0.3s ease;
}

.external-ticket__link:hover,
.external-ticket__link:focus-visible {
  opacity: 1;
}

.external-ticket__link img,
.external-ticket__asoview-svg {
  width: 100%;
  height: auto;
  vertical-align: top;
}

.external-ticket__link--asoview {
  position: relative;
  opacity: 1;
  overflow: hidden;
  border-radius: 50%;
}

.external-ticket__asoview-bg {
  fill: rgb(176 57 32 / 88%);
  transition: fill 0.3s ease;
}

.external-ticket__link--asoview:hover .external-ticket__asoview-bg,
.external-ticket__link--asoview:focus-visible .external-ticket__asoview-bg {
  fill: rgb(176 57 32 / 100%);
}

.external-ticket__asoview-ring {
  fill: none;
  stroke: #fff;
}

.external-ticket__asoview-svg text {
  fill: #fff;
  font-family: inherit;
  font-size: 1.05rem;
  font-weight: 700;
}

.external-ticket__asoview-em {
  font-size: 1.125rem;
}

.external-ticket .link-ext {
  display: none;
}

/* -------------------------------------------------------------------------- */

/* Layout: sidebar 2-column                                                   */
/* -------------------------------------------------------------------------- */
.layout-with-sidebar {
  display: grid;
  gap: 2rem;
  padding-block: 2rem 3rem;
}

.layout-with-sidebar__main > .container,
.layout-with-sidebar__main .tourist-page__section > .container,
.layout-with-sidebar__main .tourist-page__cta > .container {
  width: 100%;
  max-width: none;
  margin-inline: 0;
  padding-inline: 0;
}

@media (min-width: 1024px) {
  .layout-with-sidebar {
    position: relative;
    grid-template-columns: minmax(0, 1fr) 16.5rem;
    align-items: start;
    gap: 2.5rem;
  }

  /* 長いサイドバーの位置は JS（上/下端が見えてから固定、逆方向は追従） */
  .site-sidebar.is-fixed,
  .site-sidebar.is-abs {
    z-index: 4;
  }

  .site-sidebar__spacer {
    visibility: hidden;
    pointer-events: none;
  }
}

@media (max-width: 1023px) {
  /* SP は冒頭 page-quick に案内を集約。サイドバー目次は出さない */
  .site-sidebar--tourist .widget--toc {
    display: none;
  }

  /* 目次が無いのでサイドバーを本文より先に持ってこない */
  .layout-with-sidebar--toc-first .site-sidebar {
    order: initial;
  }
}

.layout-with-sidebar__main {
  min-width: 0;
}

.site-main--landing > .layout-with-sidebar {
  padding-top: 0;
}

.layout-with-sidebar__main .about-page__section,
.layout-with-sidebar__main .company-page__section,
.layout-with-sidebar__main .tourist-page__section,
.layout-with-sidebar__main .dayori-page__section:not(.dayori-page__section--note) {
  padding-inline: 0;
}

.layout-with-sidebar__main .about-page__section:first-child,
.layout-with-sidebar__main .company-page__section:first-child,
.layout-with-sidebar__main .tourist-page__section:first-child,
.layout-with-sidebar__main .dayori-page__section:first-child {
  padding-top: 1.75rem;
}

/* 上の帯（数字セクション等）の下線とサイドバー上端が密着しないように */
.site-main--landing > .layout-with-sidebar > .site-sidebar {
  padding-top: 1.75rem;
}

.site-sidebar {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.widget {
  margin: 0;
  padding: 1.05rem 1.1rem 1.15rem;
  background: #fff;
  border: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
}

.widget-title {
  margin: 0;
  padding-bottom: 0;
  border-bottom: 0;
  font-size: 0.875rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  line-height: 1.35;
}

.widget .notices-edge--widget {
  margin: 0.45rem 0 0.75rem;
}

.section-heading {
  margin: 0 0 1.15rem;
}

.section-heading__title {
  margin: 0;
  font-size: 1.2rem;
  font-weight: 800;
  line-height: 1.35;
}

.widget-lead {
  margin: 0 0 0.75rem;
  color: var(--color-text-muted);
  font-size: 0.8125rem;
  line-height: 1.55;
}

.widget-cta {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: var(--touch-target, 2.75rem);
  margin: 0 0 0.75rem;
  padding: 0.55rem 0.85rem;
  background: var(--color-brand);
  color: #fff;
  font-size: 0.875rem;
  font-weight: 700;
  text-align: center;
  text-decoration: none;
  line-height: 1.3;
}

.widget-cta:hover,
.widget-cta:focus-visible {
  filter: brightness(1.06);
  color: #fff;
}

.widget-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.widget-list li + li {
  margin-top: 0.15rem;
}

.widget-list a,
.widget-list__current {
  display: block;
  padding: 0.4rem 0;
  color: inherit;
  font-size: 0.875rem;
  line-height: 1.45;
  text-decoration: none;
}

.widget-list a:hover,
.widget-list a:focus-visible {
  color: var(--color-brand);
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

.widget-list__current {
  font-weight: 800;
  color: var(--color-brand);
}

.widget-list--compact {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.15rem 0.65rem;
  padding-top: 0.15rem;
  border-top: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
}

.widget-list--compact a {
  padding: 0.45rem 0;
  font-size: 0.8125rem;
  font-weight: 600;
}

.widget-list--facilities .is-divider {
  margin-top: 0.55rem;
  padding-top: 0.55rem;
  border-top: 1px dashed color-mix(in srgb, var(--color-slate) 22%, transparent);
}

.widget-list--notices a {
  display: grid;
  gap: 0.15rem;
  padding: 0.55rem 0;
}

.widget-list--notices li + li a {
  border-top: 1px solid color-mix(in srgb, var(--color-slate) 10%, transparent);
}

.widget-notice__date {
  color: var(--color-text-muted);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}

.widget-notice__title {
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.45;
}

.widget-more {
  margin: 0.55rem 0 0;
  padding-top: 0.55rem;
  border-top: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
  font-size: 0.8125rem;
  font-weight: 700;
}

.widget-more a {
  color: var(--color-brand);
  text-decoration: none;
}

.widget-more a:hover,
.widget-more a:focus-visible {
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

.widget--search .search-form {
  display: flex;
  gap: 0.4rem;
}

.widget--search input[type="search"] {
  flex: 1 1 auto;
  min-width: 0;
  min-height: var(--touch-target, 2.75rem);
  padding: 0.4rem 0.6rem;
}

.widget--search input[type="submit"] {
  flex: 0 0 auto;
  min-height: var(--touch-target, 2.75rem);
  padding: 0.4rem 0.75rem;
}

.site-sidebar__widgets {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  padding-top: 0.25rem;
  border-top: 1px dashed color-mix(in srgb, var(--color-slate) 22%, transparent);
}

.widget--compact .widget-cta {
  margin-bottom: 0;
}

.widget-list--toc a {
  font-weight: 600;
}

@media (min-width: 1024px) {
  .site-sidebar--tourist .widget--toc {
    background: color-mix(in srgb, var(--band-gray, #f3f1ec) 70%, #fff);
  }
}

.entry-header {
  margin-bottom: 1.25rem;
}

.entry-title {
  margin: 0;
  font-size: clamp(1.35rem, 1.1rem + 1vw, 1.85rem);
  line-height: 1.35;
}

.entry-meta {
  margin: 0 0 0.4rem;
  color: var(--color-text-subtle);
  font-size: 0.875rem;
}

.entry-thumbnail {
  margin: 0 0 1.25rem;
}

.entry-thumbnail img {
  display: block;
  width: 100%;
  height: auto;
}

.entry-content > *:first-child {
  margin-top: 0;
}

/* -------------------------------------------------------------------------- */

/* -------------------------------------------------------------------------- */
/* Footer                                                                     */
/* -------------------------------------------------------------------------- */
.site-footer {
  margin-top: 0;
  padding: 2.5rem 0 2rem;
  border-top: 0;
  color: #d7dde3;
}

.site-footer__inner {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.site-footer__primary {
  display: grid;
  gap: 1.5rem;
  padding-bottom: 2rem;
}

@media (min-width: 1024px) {
  .site-footer__primary {
    grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.15fr);
    gap: 2rem;
    align-items: stretch;
  }
}

.site-footer__map {
  position: relative;
  overflow: hidden;
  min-height: 14rem;
  aspect-ratio: 4 / 3;
  background: #1a2229;
  border: 1px solid rgb(255 255 255 / 12%);
  border-radius: 4px;
}

@media (min-width: 1024px) {
  .site-footer__map {
    min-height: 100%;
    aspect-ratio: auto;
  }
}

.site-footer__map iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

.site-footer__primary-text {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.site-footer__panel {
  padding: 1.15rem 0 1.25rem;
}

.site-footer__panel + .site-footer__panel {
  border-top: 1px solid rgb(255 255 255 / 14%);
}

.site-footer__eyebrow,
.site-footer__docs-label {
  margin: 0 0 0.55rem;
  color: #9eb0bd;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: none;
}

.site-footer__brand {
  margin: 0;
  color: #fff;
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.4;
}

.site-footer__address,
.site-footer__contact {
  margin: 0.45rem 0 0;
  color: #c5ced6;
  font-size: 0.8125rem;
  line-height: 1.6;
}

.site-footer__contact a {
  color: inherit;
  text-decoration: none;
}

.site-footer__contact a:hover,
.site-footer__contact a:focus-visible {
  color: #fff;
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

.site-footer__contact-sep {
  margin: 0 0.35rem;
  opacity: 0.55;
}

.site-footer__access {
  margin: 0;
}

.site-footer__access > div {
  display: grid;
  grid-template-columns: 2.5rem 1fr;
  gap: 0.5rem 0.75rem;
  margin: 0 0 0.65rem;
}

.site-footer__access dt {
  margin: 0;
  color: #fff;
  font-size: 0.75rem;
  font-weight: 700;
}

.site-footer__access dd {
  margin: 0;
  color: #c5ced6;
  font-size: 0.8125rem;
  line-height: 1.55;
}

.site-footer__note {
  margin: 0.35rem 0 0.85rem;
  padding: 0.55rem 0.7rem;
  color: #fff;
  font-size: 0.75rem;
  line-height: 1.5;
  background: rgb(255 255 255 / 10%);
  border-left: 2px solid rgb(255 255 255 / 45%);
}

.site-footer__quick {
  margin: 0;
  padding: 0;
  list-style: none;
}

.site-footer__quick li + li {
  margin-top: 0.4rem;
}

.site-footer__quick a,
.site-footer__resources a,
.site-footer__docs-more {
  color: #e8eef3;
  font-size: 0.8125rem;
  line-height: 1.45;
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.site-footer__quick a:hover,
.site-footer__quick a:focus-visible,
.site-footer__resources a:hover,
.site-footer__resources a:focus-visible,
.site-footer__docs-more:hover,
.site-footer__docs-more:focus-visible {
  color: #fff;
}

.site-footer__docs {
  padding: 1.75rem 0;
  border-top: 1px solid rgb(255 255 255 / 14%);
}

.site-footer__docs-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem 1.25rem;
  margin-bottom: 1.1rem;
}

.site-footer__section-title {
  margin: 0;
  color: #fff;
  font-size: 0.95rem;
  font-weight: 700;
}

.site-footer__docs-grid {
  display: grid;
  gap: 1.5rem;
}

@media (min-width: 768px) {
  .site-footer__docs-grid {
    grid-template-columns: 1.4fr 1fr;
    gap: 2rem;
  }
}

.site-footer__docs-col + .site-footer__docs-col {
  padding-top: 1.25rem;
  border-top: 1px solid rgb(255 255 255 / 10%);
}

@media (min-width: 768px) {
  .site-footer__docs-col + .site-footer__docs-col {
    padding-top: 0;
    padding-left: 2rem;
    border-top: 0;
    border-left: 1px solid rgb(255 255 255 / 12%);
  }
}

.site-footer__resources {
  margin: 0;
  padding: 0;
  list-style: none;
}

.site-footer__resources li + li {
  margin-top: 0.4rem;
}

.site-footer__meta {
  display: grid;
  gap: 1rem;
  padding-top: 1.5rem;
  border-top: 1px solid rgb(255 255 255 / 14%);
}

@media (min-width: 768px) {
  .site-footer__meta {
    grid-template-columns: 1fr auto;
    align-items: center;
  }

  .site-footer__copy {
    grid-column: 1 / -1;
  }
}

.site-footer__nav ul {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem 1.15rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.site-footer__nav a {
  color: #c5ced6;
  font-size: 0.8125rem;
  text-decoration: none;
}

.site-footer__nav a:hover,
.site-footer__nav a:focus-visible {
  color: #fff;
}

.site-footer__sns {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.site-footer__sns-link {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border: 1px solid rgb(255 255 255 / 28%);
  border-radius: 999px;
  color: #d7dde3;
  text-decoration: none;
  transition: color 0.2s ease, background 0.2s ease, border-color 0.2s ease;
}

.site-footer__sns-link:hover,
.site-footer__sns-link:focus-visible {
  color: #fff;
  background: rgb(255 255 255 / 12%);
  border-color: rgb(255 255 255 / 55%);
}

.site-footer__sns-icon {
  display: block;
  width: 1.15rem;
  height: 1.15rem;
}

.site-footer__copy {
  margin: 0.25rem 0 0;
  color: #9aa6b0;
  font-size: 0.8125rem;
}

/* -------------------------------------------------------------------------- */
/* Landing pages (about / tourist / company)                                  */
/* -------------------------------------------------------------------------- */
.site-main--landing {
  padding-top: 0;
  padding-bottom: 0;
}

.landing-kicker {
  margin: 0 0 0.55rem;
  color: var(--color-brand);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
}

.about-page__hero,
.tourist-page__hero,
.company-page__hero {
  padding: 2.25rem 0 1.75rem;
}

.about-page__hero .notices-edge--brand,
.tourist-page__hero .notices-edge--brand,
.company-page__hero .notices-edge--brand {
  margin: 1.15rem 0 0;
}

.about-page__title,
.tourist-page__title,
.company-page__title {
  margin: 0;
  font-size: clamp(1.55rem, 1.25rem + 1.3vw, 2.15rem);
  font-weight: 800;
  line-height: 1.3;
  letter-spacing: 0.02em;
}

.about-page__hero-image {
  margin-top: 1.25rem;
}

.about-page__hero-image img {
  display: block;
  width: 100%;
  max-height: 22rem;
  object-fit: cover;
}

.about-page__section,
.tourist-page__section,
.company-page__section {
  padding: 2.5rem 0;
}


.about-page__section h2,
.tourist-page__section h2,
.company-page__section h2,
.about-page__section .section-heading__title,
.tourist-page__section .section-heading__title,
.company-page__section .section-heading__title {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 1.2rem;
  font-weight: 800;
  line-height: 1.35;
}

/* 詳細本文：2つ目以降の見出しは直前段落とのあいだを2倍 */
.about-page__section--editor .entry-content > h2:not(:first-child) {
  margin-top: 2em;
}

.about-page__section .section-heading,
.tourist-page__section .section-heading,
.company-page__section .section-heading {
  margin-bottom: 1.15rem;
}

.about-page__section .notices-edge--section,
.tourist-page__section .notices-edge--section,
.company-page__section .notices-edge--section {
  margin-top: 0.55rem;
}

.about-page__prose p,
.tourist-page__lead {
  margin: 0 0 1rem;
  color: var(--color-text);
  font-size: 1rem;
  line-height: 1.85;
}

.about-page__lead,
.company-page__lead {
  margin: -0.25rem 0 1.15rem;
  color: var(--color-text-muted);
  font-size: 0.9375rem;
  line-height: 1.7;
}

.about-page__section--hints {
  background: color-mix(in srgb, var(--band-gray) 55%, transparent);
}

.about-hints {
  display: grid;
  gap: 0.85rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

@media (min-width: 768px) {
  .about-hints {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
  }
}

.about-hints__item {
  display: grid;
  gap: 0.35rem;
  padding: 1.1rem 1rem 1.15rem;
  background: #fff;
  border-top: 3px solid var(--color-brand);
}

.about-hints__num {
  color: var(--color-brand);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.06em;
}

.about-hints__title {
  font-size: 1rem;
  font-weight: 800;
}

.about-hints__text {
  color: var(--color-text-muted);
  font-size: 0.875rem;
  line-height: 1.55;
}

.about-facilities {
  display: grid;
  gap: 0.75rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

@media (min-width: 768px) {
  .about-facilities {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.85rem 1rem;
  }
}

.about-facilities__link {
  display: grid;
  gap: 0.4rem;
  min-height: 100%;
  padding: 1rem 1.05rem;
  color: inherit;
  text-decoration: none;
  background: color-mix(in srgb, #fff 92%, transparent);
  border: 1px solid color-mix(in srgb, var(--color-slate) 14%, transparent);
  border-left: 3px solid color-mix(in srgb, var(--color-brand) 70%, transparent);
  transition: background 0.2s ease, border-color 0.2s ease;
}

.about-facilities__link:hover,
.about-facilities__link:focus-visible {
  background: #fff;
  border-color: color-mix(in srgb, var(--color-brand) 40%, transparent);
}

.about-facilities__name {
  font-weight: 800;
  font-size: 0.975rem;
}

.about-facilities__blurb {
  color: var(--color-text-muted);
  font-size: 0.875rem;
  line-height: 1.55;
}

.about-page__video {
  position: relative;
  overflow: hidden;
  aspect-ratio: 16 / 9;
  max-width: 48rem;
  background: #111;
  border: 1px solid color-mix(in srgb, var(--color-slate) 16%, transparent);
}

.about-page__video iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

.about-page__prose ul {
  margin: 0;
  padding-left: 1.2rem;
  line-height: 1.75;
}

.about-page__prose li + li {
  margin-top: 0.45rem;
}

.about-page__intro-row {
  display: grid;
  gap: 1rem;
}

.about-page__br-pc {
  display: none;
}

.about-page__intro-cta {
  margin: 0;
}

.about-page__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  min-height: 3rem;
  padding: 0.7rem 1.4rem;
  color: var(--color-brand);
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.3;
  text-decoration: none;
  background: #fff;
  border: 1px solid color-mix(in srgb, var(--color-brand) 40%, transparent);
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.about-page__btn::after {
  content: "";
  display: block;
  width: 0.45em;
  height: 0.45em;
  margin-top: -0.15em;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg);
}

.about-page__btn:hover,
.about-page__btn:focus-visible {
  color: var(--color-brand);
  background: var(--color-brand-hover-bg);
  border-color: var(--color-brand);
}

@media (min-width: 1024px) {
  .about-page__intro-row {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 1.5rem;
  }

  .about-page__br-pc {
    display: block;
  }

  .about-page__intro-cta {
    flex-shrink: 0;
  }
}

.tourist-page__toc {
  margin-top: 1.35rem;
  padding-top: 1rem;
  border-top: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
}

.tourist-page__toc ul {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tourist-page__toc a {
  display: inline-flex;
  align-items: center;
  min-height: 2.25rem;
  padding: 0.25rem 0.75rem;
  color: var(--color-text);
  font-size: 0.8125rem;
  font-weight: 600;
  text-decoration: none;
  background: #fff;
  border: 1px solid color-mix(in srgb, var(--color-slate) 18%, transparent);
}

.tourist-page__toc a:hover,
.tourist-page__toc a:focus-visible {
  border-color: var(--color-brand);
  color: var(--color-brand);
}

.tourist-page__section h3 {
  margin: 1.65rem 0 0.7rem;
  font-size: 1.02rem;
  font-weight: 800;
}

.tourist-table-wrap {
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
  margin: 0 0 0.35rem;
  -webkit-overflow-scrolling: touch;
  border: 1px solid color-mix(in srgb, var(--color-slate) 14%, transparent);
  background: #fff;
}

.tourist-table {
  width: 100%;
  max-width: none;
  min-width: 28rem;
  border-collapse: collapse;
  font-size: 0.875rem;
}

.tourist-table th,
.tourist-table td {
  padding: 0.65rem 0.75rem;
  border-bottom: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
  border-right: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
  text-align: left;
  vertical-align: top;
}

.tourist-table th:last-child,
.tourist-table td:last-child {
  border-right: 0;
}

.tourist-table tr:last-child th,
.tourist-table tr:last-child td,
.tourist-table th[rowspan] {
  border-bottom: 0;
}

.tourist-table th[rowspan] {
  vertical-align: middle;
}

.tourist-table thead th {
  background: color-mix(in srgb, var(--color-slate) 7%, #fff);
  font-weight: 800;
  border-bottom-color: color-mix(in srgb, var(--color-slate) 18%, transparent);
}

.tourist-table--fees {
  min-width: 48rem;
}

.tourist-table--fees th,
.tourist-table--fees td {
  vertical-align: middle;
}

.tourist-table--fees thead th {
  text-align: center;
}

.tourist-table--fees tbody td {
  text-align: center;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
}

.tourist-table--fees tbody th[scope="rowgroup"],
.tourist-table--fees tbody th[scope="row"] {
  text-align: center;
  white-space: nowrap;
}

/* 着付けなど区分が長い表（rowspan なし）：先頭列は左寄せ */
.tourist-table--fees:not(:has([rowspan])) tbody th[scope="row"] {
  text-align: left;
  white-space: normal;
}

/* SP: グリッド子の min-width:auto によるページ横スクロールを防ぐ */
.tourist-exp-grid,
.tourist-exp {
  min-width: 0;
  max-width: 100%;
}

@media (max-width: 1023px) {
  /* 2列表・着付け料金（列が少ない表）は画面内に収める */
  .tourist-table--cols-2,
  .tourist-table--fees:not(:has([rowspan])):not(:has(thead th:nth-child(5))) {
    min-width: 0;
    table-layout: fixed;
    font-size: 0.8125rem;
  }

  .tourist-table--cols-2 th,
  .tourist-table--cols-2 td,
  .tourist-table--fees:not(:has([rowspan])):not(:has(thead th:nth-child(5))) th,
  .tourist-table--fees:not(:has([rowspan])):not(:has(thead th:nth-child(5))) td {
    padding: 0.5rem 0.4rem;
    overflow-wrap: anywhere;
    word-break: break-word;
    white-space: normal;
  }

  /* 単独観覧料など多列表は枠内スクロールに留める（ページは広げない） */
  .tourist-table--fees:has([rowspan]),
  .tourist-table--fees:has(thead th:nth-child(5)) {
    min-width: 48rem;
  }
}

@media (min-width: 1024px) {
  .tourist-table--cols-2 {
    table-layout: fixed;
    min-width: 0;
  }

  .tourist-table--cols-2 th:nth-child(1),
  .tourist-table--cols-2 td:nth-child(1),
  .entry-content table.table:not(:has([rowspan])):not(:has([colspan])) th:nth-child(1),
  .entry-content table.table:not(:has([rowspan])):not(:has([colspan])) td:nth-child(1) {
    width: 40%;
  }

  .tourist-table--cols-2 th:nth-child(2),
  .tourist-table--cols-2 td:nth-child(2),
  .entry-content table.table:not(:has([rowspan])):not(:has([colspan])) th:nth-child(2),
  .entry-content table.table:not(:has([rowspan])):not(:has([colspan])) td:nth-child(2) {
    width: 60%;
  }

  /* CMS 本文の2列表（開館・休館・沿革）。料金表（rowspan/colspan）は除外 */
  .entry-content table.table:not(:has([rowspan])):not(:has([colspan])) {
    table-layout: fixed;
    min-width: 0;
  }
}

/* CMS 本文の料金表（旧 Bootstrap table 代替） */
.entry-content .table-responsive {
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
  margin: 0.85rem 0 1.1rem;
  -webkit-overflow-scrolling: touch;
  border: 1px solid color-mix(in srgb, var(--color-slate) 14%, transparent);
  background: #fff;
}

/* Bootstrap 互換: 施設ページの地図埋め込み枠 */
.entry-content .embed-responsive {
  position: relative;
  display: block;
  width: 100%;
  overflow: hidden;
  margin: 0.85rem 0 1.25rem;
  background: color-mix(in srgb, var(--color-slate) 8%, #fff);
}

.entry-content .embed-responsive::before {
  display: block;
  content: "";
  padding-top: 56.25%;
}

.entry-content .embed-responsive-4by3::before {
  padding-top: 75%;
}

.entry-content .embed-responsive .embed-responsive-item,
.entry-content .embed-responsive iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

.entry-content table.table {
  width: 100% !important; /* CMS の width="485" 等を打ち消す */
  max-width: none;
  min-width: 28rem;
  height: auto !important;
  border-collapse: collapse;
  font-size: 0.875rem;
}

@media (max-width: 1023px) {
  .layout-with-sidebar__main,
  .entry-content,
  .facility-page,
  .entry--renewal {
    min-width: 0;
    max-width: 100%;
  }
}

.entry-content table.table th,
.entry-content table.table td {
  padding: 0.65rem 0.75rem;
  border-bottom: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
  border-right: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
  text-align: left;
  vertical-align: top;
}

.entry-content table.table th:last-child,
.entry-content table.table td:last-child {
  border-right: 0;
}

.entry-content table.table tr:last-child th,
.entry-content table.table tr:last-child td,
.entry-content table.table [rowspan] {
  border-bottom: 0;
}

.entry-content table.table [rowspan] {
  vertical-align: middle;
  font-weight: 800;
}

.entry-content table.table tr:first-child th,
.entry-content table.table tr:first-child td {
  background: color-mix(in srgb, var(--color-slate) 7%, #fff);
  font-weight: 800;
  border-bottom-color: color-mix(in srgb, var(--color-slate) 18%, transparent);
}

/* 施設本文の料金マトリクス（rowspan あり）：数値・見出しを中央寄せ */
.entry-content table.table:has([rowspan]) th,
.entry-content table.table:has([rowspan]) td {
  text-align: center;
  vertical-align: middle;
}

.entry-content table.table:has([rowspan]) td:not([rowspan]):not([colspan]) {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
}

.entry-content table.table:has([rowspan]) td[rowspan],
.entry-content table.table:has([rowspan]) th[rowspan] {
  font-weight: 800;
}

.tourist-page__note,
.tourist-list,
.tourist-doc-list {
  margin: 0.85rem 0 0;
  line-height: 1.7;
}

.tourist-list,
.tourist-doc-list {
  padding-left: 1.15rem;
}

.tourist-doc-list li + li,
.tourist-list li + li {
  margin-top: 0.4rem;
}

.tourist-docs-split {
  display: grid;
  gap: 1.75rem;
}

@media (min-width: 768px) {
  .tourist-docs-split {
    grid-template-columns: 1.35fr 1fr;
    gap: 2rem;
  }

  .tourist-docs-split > div + div {
    padding-left: 2rem;
    border-left: 1px solid color-mix(in srgb, var(--color-slate) 14%, transparent);
  }
}

.tourist-docs-split h3 {
  margin-top: 0;
}

.tourist-page__alert {
  margin: 0.85rem 0;
  padding: 0.8rem 0.95rem;
  color: #6b2a1a;
  font-size: 0.9rem;
  line-height: 1.55;
  background: color-mix(in srgb, #f7e4dc 85%, #fff);
  border-left: 3px solid #b03920;
}

.tourist-page__alert strong {
  display: block;
  margin-bottom: 0.35rem;
}

.tourist-page__alert-routes {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.2rem 0.55rem;
}

.tourist-page__alert-route {
  display: inline-flex;
  align-items: baseline;
  gap: 0.35rem;
}

.tourist-page__alert-mark {
  font-weight: 800;
}

.tourist-page__alert-route--ng .tourist-page__alert-mark {
  color: #a32015;
}

.tourist-page__alert-route--ok .tourist-page__alert-mark {
  color: #1f6b3a;
}

.tourist-page__alert-sep {
  color: color-mix(in srgb, #6b2a1a 55%, transparent);
}

@media (max-width: 1023px) {
  .tourist-page__alert-routes {
    flex-direction: column;
    gap: 0.25rem;
  }

  .tourist-page__alert-sep {
    display: none;
  }
}

.tourist-exp {
  margin-top: 1.75rem;
  padding: 1.25rem 0 0;
  border-top: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
}

.tourist-exp:first-of-type {
  margin-top: 0.75rem;
  padding-top: 0;
  border-top: 0;
}

.tourist-exp h3 {
  margin-top: 0;
}

.tourist-feature {
  display: grid;
  gap: 1rem 1.5rem;
  margin-top: 1.75rem;
  padding-top: 1.5rem;
  border-top: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
}

.tourist-feature:first-of-type {
  margin-top: 1.35rem;
}

.tourist-feature__body > .tourist-page__subhead:first-child {
  margin-top: 0;
}

.tourist-feature__body > p {
  margin: 0 0 0.85rem;
  line-height: 1.8;
}

.tourist-fact-list {
  margin: 0;
  padding: 0;
  list-style: none;
  border: 1px solid color-mix(in srgb, var(--color-slate) 14%, transparent);
  background: color-mix(in srgb, var(--color-surface) 70%, #fff);
}

.tourist-fact-list li {
  display: grid;
  gap: 0.2rem 1rem;
  padding: 0.7rem 0.9rem;
}

.tourist-fact-list li + li {
  border-top: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
}

.tourist-fact-list strong {
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--color-text-muted);
}

.tourist-fact-list span {
  line-height: 1.6;
}

.tourist-feature__media {
  margin: 0;
}

.tourist-feature__media img,
.tourist-exp__media img {
  display: block;
  width: 100%;
  height: auto;
}

.tourist-feature__media figcaption {
  margin-top: 0.55rem;
  font-size: 0.92rem;
  line-height: 1.55;
}

.tourist-feature__gallery,
.tourist-exp__gallery {
  display: grid;
  gap: 0.75rem;
}

.tourist-exp__media {
  margin: 0.85rem 0;
}

.tourist-feature--stack .tourist-feature__gallery {
  margin-top: 0.15rem;
}

@media (min-width: 640px) {
  .tourist-feature:not(.tourist-feature--stack) {
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
    align-items: start;
  }

  .tourist-feature__gallery,
  .tourist-exp__gallery {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .tourist-fact-list li {
    grid-template-columns: 5.5rem minmax(0, 1fr);
    align-items: baseline;
  }
}

/* -------------------------------------------------------------------------- */
/* 404                                                                        */
/* -------------------------------------------------------------------------- */
.error-404 {
  padding-block: 2.5rem 3.5rem;
}

.error-404__title {
  margin: 0 0 0.75rem;
  font-size: clamp(1.4rem, 1.15rem + 1vw, 1.9rem);
  font-weight: 800;
}

.error-404__lead {
  margin: 0;
  line-height: 1.75;
  color: var(--color-text-muted);
}

.error-404__section {
  margin-top: 2rem;
  padding-top: 1.25rem;
  border-top: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
}

.error-404__section-title {
  margin: 0 0 0.75rem;
  font-size: 1.02rem;
  font-weight: 800;
}

.error-404__links {
  margin: 0;
  padding: 0;
  list-style: none;
}

.error-404__links li + li {
  margin-top: 0.5rem;
}

.error-404__links a {
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

/* -------------------------------------------------------------------------- */
/* External link icon                                                         */
/* -------------------------------------------------------------------------- */
.link-ext {
  display: inline-flex;
  align-items: center;
  margin-left: 0.28em;
  vertical-align: -0.12em;
  color: currentColor;
  opacity: 0.78;
}

.link-ext__svg {
  display: block;
}

a:hover .link-ext,
a:focus-visible .link-ext {
  opacity: 1;
}

.link-file {
  display: inline-flex;
  align-items: center;
  margin-left: 0.4em;
  vertical-align: 0.05em;
  color: currentColor;
  opacity: 0.88;
  transform: translateY(1px);
}

.link-file__label {
  display: inline-block;
  padding: 0.12em 0.35em 0.1em;
  border: 1px solid currentColor;
  border-radius: 2px;
  font-size: 0.62rem;
  font-weight: 800;
  line-height: 1.2;
  letter-spacing: 0.02em;
}

a:hover .link-file,
a:focus-visible .link-file {
  opacity: 1;
}

/* Company page */
.company-profile-wrap .tourist-table {
  min-width: 0;
}

.company-profile th {
  width: 7.5rem;
  background: color-mix(in srgb, var(--color-slate) 6%, #fff);
  font-weight: 800;
  white-space: nowrap;
}

.company-business {
  margin: 0;
  padding-left: 1.15rem;
  line-height: 1.7;
}

.company-business li + li {
  margin-top: 0.25rem;
}

.company-page__note {
  margin: 1rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.7;
}

.company-orgs {
  margin: 0;
  padding: 0;
  list-style: none;
  border: 1px solid color-mix(in srgb, var(--color-slate) 14%, transparent);
  background: #fff;
}

.company-orgs li + li {
  border-top: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
}

.company-orgs a {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.15rem 0.35rem;
  min-height: var(--touch-target, 2.75rem);
  padding: 0.75rem 1rem;
  color: var(--color-text);
  text-decoration: none;
  font-weight: 600;
  line-height: 1.45;
}

.company-orgs a:hover,
.company-orgs a:focus-visible {
  background: color-mix(in srgb, var(--color-brand) 6%, #fff);
  color: var(--color-brand);
}

/* ==========================================================================
   トップ / About 改修（2026）— FV・グリッド・透過ヘッダー・ボトムバー
   ========================================================================== */

:root {
  --font-serif: "Shippori Mincho", "Yu Mincho", "Hiragino Mincho ProN", serif;
  --hero-height: 100vh;
  --hero-height: 100dvh;
  --bottom-bar-height: calc(3.25 * var(--sp-unit, 1rem));
  --color-body-text: #333333;
}

@media (max-width: 1023px) {
  body.has-mobile-bottom-bar {
    padding-bottom: var(--bottom-bar-height);
    /* 固定フッタ上の可視領域を SP の「全画面」とする */
    --hero-height: calc(100vh - var(--bottom-bar-height));
    --hero-height: calc(100dvh - var(--bottom-bar-height));
  }
}

.site-header__cta-long {
  display: inline;
}

.site-header__cta-short {
  display: none;
}

/* SP: チケットはボトムバーのみ（ヘッダと二重にしない） */
@media (max-width: 1023px) {
  .site-header__cta--desktop {
    display: none;
  }

  .site-header__toggle {
    margin-left: auto;
  }
}

@media (min-width: 1024px) {
  .site-header__cta-long {
    display: inline;
  }

  .site-header__cta-short {
    display: none;
  }
}

@media (max-width: 430px) {
  .site-header__cta-long {
    display: none;
  }

  .site-header__cta-short {
    display: inline;
  }
}

/* 透過ヘッダー（SP/PC 共通・スクロールで白＋ブランド下線に統一） */
body.has-hero-header {
  padding-top: 0;
}

/* sticky より優先して必ずビューポート先頭に重ねる */
body.has-hero-header .site-header.site-header--hero {
  position: fixed !important;
  top: 0;
  left: 0;
  right: 0;
  z-index: 200;
  width: 100%;
  min-height: var(--header-height);
  background: transparent;
  transition: background 0.3s ease;
}

body.has-hero-header .site-header.site-header--hero.is-scrolled {
  background: rgba(255, 255, 255, 0.96);
}

.site-header--hero {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 200;
  width: 100%;
  min-height: var(--header-height);
  background: transparent;
  transition: background 0.3s ease;
}

body.admin-bar.has-hero-header .site-header.site-header--hero {
  top: 32px;
}

@media screen and (max-width: 782px) {
  body.admin-bar.has-hero-header .site-header.site-header--hero {
    top: 46px;
  }
}

.site-header--hero.is-scrolled {
  background: rgba(255, 255, 255, 0.96);
}

/* ヒーロー未スクロール時は下線を隠し、通常／スクロール後だけ表示 */
.site-header--hero:not(.is-scrolled) > .notices-edge {
  opacity: 0;
}

.site-header--hero > .notices-edge {
  transition: opacity 0.3s ease;
}

.site-header--hero:not(.is-scrolled) .site-header__logo-img {
  filter: brightness(0) invert(1) drop-shadow(0 2px 8px rgb(0 0 0 / 35%));
}

.site-header--hero:not(.is-scrolled) .site-header__toggle-bar {
  background: #fff;
  box-shadow: 0 1px 4px rgb(0 0 0 / 25%);
}

.site-header--hero:not(.is-scrolled) .site-header__cta {
  border-color: rgb(255 255 255 / 55%);
  background: rgb(255 255 255 / 12%);
  color: #fff;
  backdrop-filter: blur(6px);
}

.site-header--hero:not(.is-scrolled) .site-header__cta:hover,
.site-header--hero:not(.is-scrolled) .site-header__cta:focus-visible {
  background: rgb(255 255 255 / 22%);
  border-color: rgb(255 255 255 / 75%);
  color: #fff;
}

.site-header--hero:not(.is-scrolled) .site-header__nav.is-open {
  background: #fff;
}

@media (min-width: 1024px) {
  .site-header--hero:not(.is-scrolled) .site-header__menu a,
  .site-header--hero:not(.is-scrolled) .site-header__app {
    color: #fff;
    text-shadow: 0 1px 6px rgb(0 0 0 / 45%);
  }

  .site-header--hero:not(.is-scrolled) .site-header__menu a:hover,
  .site-header--hero:not(.is-scrolled) .site-header__menu a:focus-visible {
    color: #fff;
    opacity: 0.88;
  }

  .site-header--hero:not(.is-scrolled) .site-header__menu .sub-menu::before {
    background: #fff;
  }

  .site-header--hero:not(.is-scrolled) .site-header__menu .sub-menu a {
    color: var(--color-brand);
    text-shadow: none;
  }
}

/* トップ FV — 写真上にコンパクトなキャッチ（全面暗幕なし） */
.site-main--front {
  position: relative;
  z-index: 1;
  --front-ink: #2e363c;
  --front-muted: #5f6b74;
  --front-paper: #f7f8f9;
  --front-line: color-mix(in srgb, var(--color-slate) 12%, transparent);
  color: var(--front-ink);
  background: #fff;
}

.site-main--front .front-section-head__lead {
  color: var(--front-muted);
}

.front-section-head {
  max-width: 36rem;
  margin-bottom: 1.5rem;
}

.front-section-head__kicker {
  margin: 0 0 0.45rem;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--color-action);
}

.front-section-head .section-heading {
  margin-bottom: 0.65rem;
}

/* SP: 見出し〜グランジ下線の余白を半分（3.75rem → 1.875rem） */
@media (max-width: 1023px) {
  .site-main--front .front-section-head .section-heading .notices-edge--section {
    margin-top: 1.875rem;
  }
}

.front-section-head .section-heading__title {
  font-family: var(--font-serif);
  font-size: clamp(1.375rem, calc(1.1rem + 1.1vw), 1.875rem);
  font-weight: 600;
  letter-spacing: 0.04em;
  line-height: 1.4;
  color: var(--front-ink);
}

.front-section-head__lead {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.8;
  color: var(--front-muted);
}

.front-hero {
  position: relative;
  min-height: var(--hero-height);
  height: var(--hero-height);
  display: grid;
  overflow: hidden;
  color: var(--front-ink);
  background: #1a1e22;
}

.front-hero__media {
  position: absolute;
  inset: 0;
}

.front-hero__image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* SP: 門と館がバランスよく入る位置（わずかに左寄り） */
  object-position: 49% 42%;
  transform: scale(1.04);
  animation: front-hero-ken 22s ease-out forwards;
}

/* スライド時は重ねてフェード（Ken Burns は単枚時のみ） */
.front-hero--slideshow .front-hero__image {
  position: absolute;
  inset: 0;
  opacity: 0;
  transform: none;
  animation: none;
  transition: opacity 1.25s ease;
  z-index: 0;
  pointer-events: none;
}

.front-hero--slideshow .front-hero__image.is-active {
  opacity: 1;
  z-index: 1;
}

/* ヘッダー用：上部だけ薄い帯（写真全体は暗くしない） */
.front-hero__header-scrim {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 2;
  height: calc(var(--header-height) + 2.25rem);
  background: linear-gradient(180deg, rgb(20 24 28 / 34%) 0%, transparent 100%);
  pointer-events: none;
}

.front-hero__stage {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: flex-end;
  align-self: end;
  width: 100%;
  max-width: var(--container-max);
  margin-inline: auto;
  padding:
    calc(var(--header-height) + 1rem)
    max(1rem, var(--header-gutter))
    4.25rem;
  box-sizing: border-box;
}

.front-hero__caption {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.85rem;
  max-width: 22rem;
  padding: 1.05rem 1.15rem 1.15rem;
  background: rgb(255 255 255 / 88%);
  border: 1px solid rgb(255 255 255 / 70%);
  border-radius: 2px;
  backdrop-filter: blur(12px);
  box-shadow: 0 10px 36px rgb(20 24 28 / 10%);
  animation: front-hero-rise 0.85s ease-out both;
}

.front-hero__brand {
  margin: 0;
  font-size: 0.6875rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  color: var(--color-brand);
}

.front-hero__copy {
  margin: 0;
  font-family: var(--font-serif);
  font-size: clamp(1.25rem, calc(1rem + 1.5vw), 1.75rem);
  font-weight: 600;
  line-height: 1.55;
  letter-spacing: 0.06em;
  color: var(--front-ink);
}

.front-hero__about {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  min-height: var(--touch-target);
  padding: 0 1.15rem;
  border-radius: 999px;
  background: var(--color-action);
  color: #fff;
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-decoration: none;
  transition: background 0.2s ease, transform 0.2s ease;
}

.front-hero__about-arrow {
  transition: transform 0.2s ease;
}

.front-hero__about:hover,
.front-hero__about:focus-visible {
  background: var(--color-action-hover);
  color: #fff;
}

.front-hero__about:hover .front-hero__about-arrow,
.front-hero__about:focus-visible .front-hero__about-arrow {
  transform: translateX(3px);
}

.front-hero__scroll {
  position: absolute;
  left: 50%;
  bottom: 1.1rem;
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.4rem;
  color: #fff;
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-decoration: none;
  text-transform: uppercase;
  transform: translateX(-50%);
  opacity: 0.85;
  text-shadow: 0 1px 8px rgb(0 0 0 / 45%);
}

@media (max-width: 1023px) {
  .front-hero__stage {
    padding-bottom: 2.25rem;
  }

  .front-hero__scroll {
    left: 50%;
    right: auto;
    bottom: 0.55rem;
    transform: translateX(-50%);
  }
}

.front-hero__scroll-line {
  display: block;
  width: 1px;
  height: 1.75rem;
  background: linear-gradient(180deg, transparent, #fff);
  animation: front-hero-line 2s ease-in-out infinite;
}

@keyframes front-hero-ken {
  from { transform: scale(1.05); }
  to { transform: scale(1); }
}

@keyframes front-hero-rise {
  from {
    opacity: 0;
    transform: translateY(0.75rem);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

@keyframes front-hero-line {
  0%, 100% {
    opacity: 0.4;
    transform: scaleY(0.85);
    transform-origin: top;
  }
  50% {
    opacity: 1;
    transform: scaleY(1);
    transform-origin: top;
  }
}

@media (min-width: 768px) {
  .front-hero__stage {
    padding-bottom: 3.5rem;
  }

  .front-hero__caption {
    max-width: 26rem;
    padding: 1.25rem 1.35rem 1.35rem;
    gap: 1rem;
  }

  .front-hero__copy {
    letter-spacing: 0.08em;
  }
}

@media (min-width: 1024px) {
  /* PC: 館のファサードが主役になるようやや上寄りにトリミング */
  .front-hero__image {
    object-position: 50% 28%;
  }

  .front-hero__stage {
    padding-inline: 2rem;
    padding-bottom: 3.25rem;
  }

  .front-hero__caption {
    max-width: 28rem;
  }

  .front-hero__scroll {
    bottom: 1.35rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .front-hero__image,
  .front-hero__caption,
  .front-hero__scroll-line {
    animation: none;
  }

  .front-hero__image {
    transform: none;
  }

  .front-hero--slideshow .front-hero__image {
    transition: none;
  }
}

.js-reveal {
  opacity: 0;
  transform: translateY(1rem);
  transition: opacity 0.7s ease, transform 0.7s ease;
}

.js-reveal.is-revealed {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .js-reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* 体験3軸 — 写真全面 + オーバーレイ文言 */
.section--axis {
  padding-block: 2.75rem 2.5rem;
  background: var(--front-paper, #f7f8f9);
}

.axis-cards {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.65rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.axis-cards__item {
  min-width: 0;
}

.axis-cards__item:first-child {
  grid-column: 1 / -1;
}

.axis-card {
  position: relative;
  display: block;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  border-radius: 2px;
  text-decoration: none;
  color: #fff;
  isolation: isolate;
}

.axis-cards__item:first-child .axis-card {
  aspect-ratio: 16 / 10;
}

.axis-card__media {
  position: absolute;
  inset: 0;
}

.axis-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.55s ease;
}

/* 見る・学ぶ: 屋根の頂点が中央付近に来るようやや右寄りを基準に（画像が左へ寄って見える） */
.axis-cards__item:first-child .axis-card__media img {
  object-position: 52% 40%;
}

.axis-card__shade {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  /* カード高ではなくテキスト帯に合わせた rem 高さ（幅変化でも帯がずれない） */
  height: 6.5rem;
  background: linear-gradient(
    180deg,
    transparent 0%,
    rgb(20 24 28 / 48%) 38%,
    rgb(20 24 28 / 78%) 100%
  );
  transition: background 0.35s ease, height 0.35s ease;
  pointer-events: none;
}

.axis-card__body {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding: 1rem 0.95rem 1.05rem;
}

.axis-card__index {
  margin-bottom: 0.25rem;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  color: rgb(255 255 255 / 72%);
}

.axis-card__title {
  font-family: var(--font-serif);
  font-size: 1.0625rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  line-height: 1.35;
}

.axis-card__subtitle {
  font-size: 0.75rem;
  letter-spacing: 0.04em;
  color: rgb(255 255 255 / 82%);
  line-height: 1.45;
}

.axis-card:hover .axis-card__media img,
.axis-card:focus-visible .axis-card__media img {
  transform: scale(1.05);
}

.axis-card:hover .axis-card__shade,
.axis-card:focus-visible .axis-card__shade {
  background: linear-gradient(
    180deg,
    transparent 0%,
    rgb(20 24 28 / 56%) 35%,
    rgb(20 24 28 / 84%) 100%
  );
}

.axis-card:hover,
.axis-card:focus-visible {
  color: #fff;
}

/* SP: 3行テキスト帯に合わせて下端グラデを広げ、行間を詰める */
@media (max-width: 767px) {
  .axis-card__body {
    gap: 0.05rem;
    padding: 0.7rem 0.85rem 0.8rem;
  }

  .axis-card__index {
    margin-bottom: 0.08rem;
    line-height: 1.15;
  }

  .axis-card__title {
    line-height: 1.2;
  }

  .axis-card__subtitle {
    line-height: 1.25;
  }

  /* 3行テキスト＋padding 相当。カード aspect が変わっても帯だけ追従 */
  .axis-card__shade {
    height: 5.75rem;
    background: linear-gradient(
      180deg,
      transparent 0%,
      rgb(20 24 28 / 55%) 40%,
      rgb(20 24 28 / 84%) 100%
    );
  }

  .axis-card:hover .axis-card__shade,
  .axis-card:focus-visible .axis-card__shade {
    background: linear-gradient(
      180deg,
      transparent 0%,
      rgb(20 24 28 / 62%) 36%,
      rgb(20 24 28 / 90%) 100%
    );
  }
}

@media (min-width: 768px) {
  .axis-cards {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.85rem;
  }

  .axis-cards__item:first-child {
    grid-column: auto;
  }

  .axis-cards__item:first-child .axis-card,
  .axis-card {
    aspect-ratio: 3 / 4;
  }

  .axis-card__body {
    padding: 1.15rem 1.1rem 1.2rem;
  }

  .axis-card__title {
    font-size: 1.125rem;
  }
}

.axis-cards--about {
  margin-top: 1rem;
}

.axis-cards--about .axis-card {
  aspect-ratio: 4 / 5;
}

/* 施設グリッド — 写真主導・余白で区切る */
.section--facilities {
  padding-block: 2.75rem;
  background: #fff;
}

.facility-grid__list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem 0.65rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.facility-card {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  height: 100%;
  text-decoration: none;
  color: var(--color-body-text);
}

.facility-card:hover,
.facility-card:focus-visible {
  color: var(--color-body-text);
}

.facility-card__media {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: 2px;
  background: var(--color-muted);
}

.facility-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.55s ease;
}

.facility-card__shade {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 55%, rgb(20 24 28 / 18%));
  opacity: 0;
  transition: opacity 0.3s ease;
  pointer-events: none;
}

.facility-card__body {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding: 0 0.1rem;
}

.facility-card__name {
  font-family: var(--font-serif);
  font-size: 0.9375rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  line-height: 1.4;
}

.facility-card__more {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--color-action);
  opacity: 0.9;
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.facility-card:hover .facility-card__media img,
.facility-card:focus-visible .facility-card__media img {
  transform: scale(1.04);
}

.facility-card:hover .facility-card__shade,
.facility-card:focus-visible .facility-card__shade {
  opacity: 1;
}

.facility-card:hover .facility-card__more,
.facility-card:focus-visible .facility-card__more {
  opacity: 1;
}

@media (min-width: 768px) {
  .facility-grid__list {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.5rem 1rem;
  }

  .facility-card__name {
    font-size: 1rem;
  }
}

/* イベント（チラシ） */
.section--events {
  padding-block: 2.75rem 2.25rem;
  background: var(--front-paper, #f7f8f9);
}

.section--events > .container {
  margin-bottom: 0.25rem;
}

.flyer-carousel--events {
  --flyer-primary: 2;
  --flyer-radius: 2px;
  padding-block: 0.35rem 0.75rem;
}

@media (min-width: 768px) {
  .flyer-carousel--events {
    --flyer-primary: 3;
  }
}

.flyer-carousel--events:not(.is-ready) .flyer-carousel__slide:nth-child(-n + 2) {
  opacity: 1;
}

@media (min-width: 768px) {
  .flyer-carousel--events:not(.is-ready) .flyer-carousel__slide:nth-child(-n + 2) {
    opacity: var(--flyer-peek-opacity);
  }

  .flyer-carousel--events:not(.is-ready) .flyer-carousel__slide:nth-child(-n + 3) {
    opacity: 1;
  }
}

/* SP ボトムバー */
.mobile-bottom-bar {
  display: none;
}

@media (max-width: 1023px) {
  .mobile-bottom-bar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 180;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0;
    min-height: var(--bottom-bar-height);
    padding: 0;
    border-top: 1px solid color-mix(in srgb, var(--color-slate) 14%, transparent);
    background: rgb(255 255 255 / 96%);
    backdrop-filter: blur(10px);
    box-shadow: 0 -6px 20px rgb(58 69 80 / 8%);
  }

  .mobile-bottom-bar a {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: var(--bottom-bar-height);
    padding: 0.5rem 0.75rem;
    font-size: 0.8125rem;
    font-weight: 600;
    line-height: 1.25;
    text-align: center;
    text-decoration: none;
  }

  .mobile-bottom-bar__ticket {
    background: transparent;
    color: var(--color-text-muted);
    border-right: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
  }

  .mobile-bottom-bar__ticket:hover,
  .mobile-bottom-bar__ticket:focus-visible {
    background: var(--color-surface);
    color: var(--color-slate);
  }

  .mobile-bottom-bar__access {
    color: var(--color-slate);
    background: transparent;
    font-weight: 700;
  }

  .mobile-bottom-bar__access:hover,
  .mobile-bottom-bar__access:focus-visible {
    background: var(--color-surface);
    color: var(--color-slate);
  }
}

/* About 改修 */
.site-main--about {
  position: relative;
  z-index: 1;
  /* .site-main の padding-block 上余白を打ち消し（FV を画面上端まで） */
  padding-top: 0;
}

.about-hero {
  position: relative;
  min-height: clamp(18rem, 52vh, 28rem);
  color: #fff;
  overflow: hidden;
  background: #1a1e22;
}

.about-hero__media {
  position: absolute;
  inset: 0;
}

.about-hero__image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 40%;
}

/* 写真を沈めない：上部ヘッダー帯＋下部テキスト用のみ */
.about-hero__overlay {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgb(0 0 0 / 32%) 0%, transparent 22%),
    linear-gradient(0deg, rgb(0 0 0 / 48%) 0%, transparent 46%);
  pointer-events: none;
}

.about-hero__content {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: inherit;
  padding-block: calc(var(--header-height) + 1.25rem) 2.25rem;
}

.about-hero__title {
  margin: 0.35rem 0 0;
  font-size: clamp(1.5rem, calc(1rem + 2vw), 2.125rem);
  font-weight: 800;
  line-height: 1.35;
  text-shadow: 0 2px 12px rgb(0 0 0 / 35%);
}

.about-hero__lead {
  margin: 0.75rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.75;
  color: rgb(255 255 255 / 92%);
}

.about-hero__credit {
  margin: 0.85rem 0 0;
  font-size: 0.6875rem;
  letter-spacing: 0.04em;
  color: rgb(255 255 255 / 72%);
}

.about-stats {
  padding-block: 2rem;
  background: var(--band-white);
  border-bottom: 1px solid color-mix(in srgb, var(--color-slate) 10%, transparent);
}

.about-stats__kicker {
  margin: 0;
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--color-brand);
}

.about-stats__list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.75rem;
  margin: 1rem 0 0;
  padding: 0;
  list-style: none;
}

.about-stats__item {
  padding: 1rem 0.75rem;
  border-radius: var(--radius-md);
  background: var(--color-surface);
  text-align: center;
}

.about-stats__num {
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: center;
  gap: 0 0.06em;
  font-size: clamp(1.5rem, calc(1rem + 2.2vw), 2rem);
  line-height: 1;
  color: var(--color-brand);
}

.about-stats__em {
  display: inline-block;
  font-size: 1em;
  font-weight: 800;
  letter-spacing: 0.02em;
  line-height: 1;
}

/* アラビア数字は字形が上寄りなので、わずかに下げる */
.about-stats__em:not(.about-stats__em--lg):not(.about-stats__em--md) {
  translate: 0 0.04em;
}

.about-stats__em--md {
  font-size: 0.67em;
}

.about-stats__em--lg {
  /* 漢字の視覚的な大きさを数字に近づける */
  font-size: 0.75em;
}

.about-stats__sub {
  display: inline-block;
  font-size: 0.55em;
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1;
}

.about-stats__label {
  margin: 0.45rem 0 0;
  font-size: 0.75rem;
  line-height: 1.45;
  color: var(--color-text-muted);
}

@media (max-width: 767px) {
  .about-stats__list {
    grid-template-columns: 1fr;
  }
}

.about-page--renewal .about-page__prose--compact p {
  margin: 0;
  font-size: 1rem;
  line-height: 1.85;
  color: var(--color-body-text);
}

.about-page--renewal .about-page__prose--compact .about-page__intro-cta {
  margin: 0;
}

.about-facility-cards {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
  margin: 1rem 0 0;
  padding: 0;
  list-style: none;
}

.about-facility-card {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  min-height: 100%;
  padding: 1rem;
  border-radius: var(--radius-md);
  border: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
  background: #fff;
  text-decoration: none;
  color: var(--color-body-text);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.about-facility-card:hover,
.about-facility-card:focus-visible {
  border-color: color-mix(in srgb, var(--color-brand) 35%, transparent);
  box-shadow: 0 8px 24px rgb(58 69 80 / 8%);
  color: var(--color-body-text);
}

.about-facility-card__name {
  font-size: 0.9375rem;
  font-weight: 800;
  line-height: 1.35;
}

.about-facility-card__blurb {
  font-size: 0.8125rem;
  line-height: 1.55;
  color: var(--color-text-muted);
}

@media (min-width: 768px) {
  .about-facility-cards {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
  }
}

@media (min-width: 1024px) {
  .about-hero {
    min-height: clamp(20rem, 56vh, 32rem);
  }
}

/* -------------------------------------------------------------------------- */
/* Lower-page shell (page-hero / quick / next / facility)                      */
/* -------------------------------------------------------------------------- */
.page-hero {
  position: relative;
  padding: 2rem 0 1.65rem;
  background: var(--band-white);
  border-bottom: 1px solid color-mix(in srgb, var(--color-slate) 10%, transparent);
}

.page-hero__title {
  margin: 0;
  font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2.05rem);
  font-weight: 800;
  line-height: 1.3;
  letter-spacing: 0.02em;
}

.page-hero__lead {
  margin: 0.75rem 0 0;
  color: var(--color-text-muted);
  font-size: 0.9375rem;
  line-height: 1.75;
}

.page-hero--media {
  min-height: clamp(16rem, 46vh, 24rem);
  padding: 0;
  color: #fff;
  overflow: hidden;
  background: #1a1e22;
  border-bottom: 0;
}

.page-hero--media .page-hero__media {
  position: absolute;
  inset: 0;
}

.page-hero--media .page-hero__image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 42%;
}

.page-hero--media .page-hero__overlay {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgb(0 0 0 / 32%) 0%, transparent 22%),
    linear-gradient(0deg, rgb(0 0 0 / 52%) 0%, transparent 48%);
  pointer-events: none;
}

.page-hero--media .page-hero__content {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: inherit;
  padding-block: calc(var(--header-height) + 1.15rem) 2rem;
}

.page-hero--media .landing-kicker {
  color: color-mix(in srgb, #f3e7df 88%, var(--color-brand));
}

.page-hero--media .page-hero__title {
  margin-top: 0.35rem;
  text-shadow: 0 2px 12px rgb(0 0 0 / 35%);
}

.page-hero--media .page-hero__lead {
  color: rgb(255 255 255 / 92%);
}

.site-main--facility {
  padding-top: 0;
}

.facility-cover {
  margin: 0 0 1.35rem;
  overflow: hidden;
  background: color-mix(in srgb, var(--color-slate) 8%, #fff);
}

.facility-cover__image {
  display: block;
  width: 100%;
  height: auto;
  vertical-align: middle;
}

.facility-cover--multi {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.35rem;
}

.facility-cover--multi .facility-cover__image {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  object-position: center;
}

@media (min-width: 640px) {
  .facility-cover--multi {
    grid-template-columns: 1fr 1fr 1fr;
  }
}

/* PC: 冒頭写真の高さをおおよそ 2/3 にトリミング（3:2 想定 → 9:4）。森舞台（複数枚）は対象外 */
@media (min-width: 1024px) {
  .facility-cover:not(.facility-cover--multi) {
    aspect-ratio: 9 / 4;
  }

  .facility-cover:not(.facility-cover--multi) .facility-cover__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
  }
}

.page-quick {
  padding: 1.15rem 0 0.35rem;
  background: color-mix(in srgb, var(--band-gray) 48%, transparent);
  border-bottom: 1px solid color-mix(in srgb, var(--color-slate) 10%, transparent);
}

.page-quick__list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.55rem;
  margin: 0;
  padding: 0 0 1.15rem;
  list-style: none;
}

.page-quick__list--3 {
  grid-template-columns: 1fr;
}

.page-quick__link {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  min-height: var(--touch-target, 2.75rem);
  padding: 0.85rem 1rem;
  background: #fff;
  border: 1px solid color-mix(in srgb, var(--color-slate) 14%, transparent);
  border-left: 3px solid color-mix(in srgb, var(--color-brand) 70%, transparent);
  color: var(--color-body-text);
  text-decoration: none;
  transition: border-color 0.2s ease, background 0.2s ease;
}

.page-quick__link:hover,
.page-quick__link:focus-visible {
  border-color: color-mix(in srgb, var(--color-brand) 40%, transparent);
  border-left-color: var(--color-brand);
  background: color-mix(in srgb, var(--color-brand) 4%, #fff);
  color: var(--color-body-text);
}

.page-quick__label {
  font-size: 0.9375rem;
  font-weight: 800;
  line-height: 1.35;
}

.page-quick__blurb {
  font-size: 0.8125rem;
  line-height: 1.45;
  color: var(--color-text-muted);
}

@media (min-width: 640px) {
  .page-quick__list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.65rem;
  }

  .page-quick__list--3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (min-width: 1024px) {
  .page-quick__list {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .page-quick__item--sp-only {
    display: none;
  }

  .page-hero--media {
    min-height: clamp(18rem, 50vh, 26rem);
  }
}

.page-next {
  margin-top: 2.75rem;
  padding-top: 1.75rem;
  border-top: 2px solid color-mix(in srgb, var(--color-brand) 28%, transparent);
}

.page-next__title {
  margin: 0;
  font-size: 1.15rem;
  font-weight: 800;
  line-height: 1.35;
}

.page-next__lead {
  margin: 0.55rem 0 0;
  color: var(--color-text-muted);
  font-size: 0.9375rem;
  line-height: 1.7;
}

.page-next__list {
  display: grid;
  gap: 0;
  margin: 1.15rem 0 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid color-mix(in srgb, var(--color-slate) 14%, transparent);
}

.page-next__item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  min-height: var(--touch-target, 2.75rem);
  padding: 0.95rem 0.15rem 0.95rem 0;
  border-bottom: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
  color: inherit;
  text-decoration: none;
  transition: background 0.15s ease, padding-left 0.15s ease;
}

.page-next__item:hover,
.page-next__item:focus-visible {
  padding-left: 0.35rem;
  background: color-mix(in srgb, var(--color-surface) 70%, transparent);
}

.page-next__item--primary .page-next__item-title {
  color: var(--color-brand);
}

.page-next__item-body {
  display: grid;
  gap: 0.2rem;
  min-width: 0;
}

.page-next__item-title {
  font-size: 0.975rem;
  font-weight: 800;
  line-height: 1.4;
}

.page-next__item-text {
  color: var(--color-text-muted);
  font-size: 0.8125rem;
  font-weight: 500;
  line-height: 1.5;
}

.page-next__item-arrow {
  flex: 0 0 auto;
  width: 0.55rem;
  height: 0.55rem;
  margin-right: 0.15rem;
  border-right: 1.5px solid color-mix(in srgb, var(--color-slate) 55%, transparent);
  border-bottom: 1.5px solid color-mix(in srgb, var(--color-slate) 55%, transparent);
  transform: rotate(-45deg);
}

.page-next__item:hover .page-next__item-arrow,
.page-next__item:focus-visible .page-next__item-arrow,
.page-next__item--primary .page-next__item-arrow {
  border-color: var(--color-brand);
}

/* 遠山之里本文 */
.tohyama-kurara__intro {
  display: grid;
  gap: 1.25rem;
  margin: 0 0 1.75rem;
}

.tohyama-kurara__logo {
  display: block;
  width: auto;
  max-width: 12.5rem;
  height: auto;
  margin: 0 0 0.85rem;
}

.tohyama-kurara__portrait {
  margin: 0;
}

.tohyama-kurara__portrait img {
  display: block;
  width: 100%;
  max-width: 16rem;
  height: auto;
  margin-inline: auto;
}

.tohyama-menu {
  display: grid;
  gap: 1.75rem;
  margin: 0 0 1.75rem;
}

.tohyama-menu__media {
  margin: 0 0 0.85rem;
}

.tohyama-menu__media img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid color-mix(in srgb, var(--color-slate) 18%, transparent);
}

.tohyama-menu__name {
  margin: 0 0 0.55rem;
  font-size: 1.05rem;
  font-weight: 800;
  line-height: 1.35;
}

.tohyama-menu__price {
  margin-left: 0.35rem;
  color: var(--color-text-muted);
  font-size: 0.875rem;
  font-weight: 700;
}

@media (min-width: 768px) {
  .tohyama-kurara__intro {
    grid-template-columns: minmax(0, 1fr) 12rem;
    align-items: start;
    gap: 1.5rem 1.75rem;
  }

  .tohyama-kurara__portrait img {
    margin-inline: 0;
    max-width: none;
  }

  .tohyama-menu {
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem 1.75rem;
  }
}

.facility-facts {
  margin: 0 0 1.75rem;
  padding: 1.15rem 1.1rem 1.2rem;
  background: #fff;
  border: 1px solid color-mix(in srgb, var(--color-slate) 14%, transparent);
}

.facility-facts__list {
  display: grid;
  gap: 0.85rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.facility-facts__label {
  display: block;
  margin-bottom: 0.2rem;
  color: var(--color-brand);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.06em;
}

.facility-facts__value {
  display: block;
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.55;
}

.facility-facts__note {
  margin: 1rem 0 0;
  padding-top: 0.85rem;
  border-top: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
  font-size: 0.875rem;
  line-height: 1.55;
}

.facility-facts__note a {
  color: var(--color-brand);
  font-weight: 700;
  text-decoration: none;
}

.facility-facts__note a:hover,
.facility-facts__note a:focus-visible {
  text-decoration: underline;
}

@media (min-width: 640px) {
  .facility-facts__list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem 1.25rem;
  }
}

.tourist-page__subhead {
  margin: 1.65rem 0 0.7rem;
  font-size: 1.02rem;
  font-weight: 800;
}

.tourist-exp-grid {
  display: grid;
  gap: 0;
}

.tourist-page--renewal .tourist-exp:first-of-type {
  margin-top: 0.35rem;
}

.entry--renewal .entry-content {
  font-size: 1rem;
  line-height: 1.85;
}

.entry--renewal .entry-thumbnail {
  margin-bottom: 1.35rem;
}

.facility-page .entry-content {
  margin-top: 0.25rem;
}

/* WordPress 画像寄せ（右／左に回り込ませる） */
.entry-content .alignleft,
.entry-content img.alignleft,
.entry-content figure.alignleft {
  float: left;
  margin: 0.25rem 1.15rem 0.9rem 0;
}

.entry-content .alignright,
.entry-content img.alignright,
.entry-content figure.alignright {
  float: right;
  margin: 0.25rem 0 0.9rem 1.15rem;
}

.entry-content .aligncenter,
.entry-content img.aligncenter,
.entry-content figure.aligncenter {
  display: block;
  float: none;
  margin-left: auto;
  margin-right: auto;
}

.entry-content img.alignleft,
.entry-content img.alignright,
.entry-content img.aligncenter,
.entry-content figure.alignleft,
.entry-content figure.alignright,
.entry-content figure.aligncenter {
  max-width: min(55%, 20rem);
  height: auto;
}

.entry-content figure.alignleft img,
.entry-content figure.alignright img,
.entry-content figure.aligncenter img {
  display: block;
  width: 100%;
  max-width: none;
  height: auto;
}

.entry-content img.border,
.entry-content .border {
  border: 1px solid color-mix(in srgb, var(--color-slate) 18%, transparent);
}

/* 下層本文：観光案内と同系のセクション見出し＋間隔（罫線なし）
   clear 付き要素の margin-top はフロートはみ出し分に食い込むため padding-top で確保 */
.entry-content .section-heading {
  clear: both;
  margin: 0 0 1.15rem;
  padding-top: 5rem;
}

.entry-content > .section-heading:first-child {
  padding-top: 0;
}

.entry-content .section-heading__title {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 1.2rem;
  font-weight: 800;
  line-height: 1.35;
  color: var(--color-slate);
}

.entry-content .section-heading .notices-edge--section {
  margin-top: 0.55rem;
}

.entry-content h2:not(.section-heading__title),
.entry-content h3:not(.section-heading__title),
.entry-content h4 {
  clear: both;
  margin: 0 0 0.85rem;
  padding-top: 5rem;
  font-weight: 800;
  line-height: 1.35;
  color: var(--color-slate);
}

.entry-content h2:not(.section-heading__title) {
  font-size: 1.2rem;
}

.entry-content h3:not(.section-heading__title) {
  font-size: 1.05rem;
}

.entry-content h4 {
  padding-top: 2.35rem;
  font-size: 1rem;
}

.entry-content > h2:first-child,
.entry-content > h3:first-child,
.entry-content > h4:first-child {
  padding-top: 0;
}

.entry-content .table-responsive,
.entry-content .embed-responsive {
  clear: both;
}

@media (max-width: 639px) {
  .entry-content .alignleft,
  .entry-content .alignright,
  .entry-content img.alignleft,
  .entry-content img.alignright,
  .entry-content figure.alignleft,
  .entry-content figure.alignright {
    float: none;
    display: block;
    margin-left: auto;
    margin-right: auto;
    max-width: min(80%, 16rem);
  }
}

.search-results {
  margin: 0;
  padding: 0;
  list-style: none;
  border: 1px solid color-mix(in srgb, var(--color-slate) 14%, transparent);
  background: #fff;
}

.search-results__item + .search-results__item {
  border-top: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
}

.search-results__link {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding: 1rem 1.1rem;
  color: var(--color-body-text);
  text-decoration: none;
  transition: background 0.2s ease;
}

.search-results__link:hover,
.search-results__link:focus-visible {
  background: color-mix(in srgb, var(--color-brand) 5%, #fff);
  color: var(--color-body-text);
}

.search-results__type {
  color: var(--color-brand);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.04em;
}

.search-results__title {
  font-size: 1rem;
  font-weight: 800;
  line-height: 1.4;
}

.search-results__excerpt {
  color: var(--color-text-muted);
  font-size: 0.875rem;
  line-height: 1.6;
}

.search-results__empty {
  margin: 0 0 1.25rem;
  line-height: 1.7;
}

/* 団体：予約方法タブ（ガイド向け・下線切替） */
.entry-content .nav-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.15rem 1.75rem;
  margin: 1.75rem 0 0;
  padding: 0;
  list-style: none;
  border: 0;
  background: transparent;
}

.entry-content .nav-tabs > li {
  margin: 0;
  border: 0;
}

.entry-content .nav-tabs > li > a {
  position: relative;
  display: inline-flex;
  align-items: center;
  min-height: var(--touch-target, 2.75rem);
  padding: 0.35rem 0.1rem 0.7rem;
  color: var(--color-text-muted);
  font-size: 0.9375rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  line-height: 1.35;
  text-decoration: none;
  background: transparent;
}

.entry-content .nav-tabs > li > a:hover,
.entry-content .nav-tabs > li > a:focus-visible {
  color: var(--color-brand);
  background: transparent;
}

.entry-content .nav-tabs > li.active > a {
  color: var(--color-brand);
  font-weight: 800;
  background: transparent;
}

.entry-content .nav-tabs > li.active > a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 2px;
  background: var(--color-brand);
}

.entry-content .tab-content {
  margin: 0 0 1.75rem;
  padding: 1.15rem 1.1rem 1.25rem;
  border: 1px solid color-mix(in srgb, var(--color-slate) 28%, transparent);
  background: #fff;
}

.entry-content .tab-content > .tab-pane {
  display: none;
}

.entry-content .tab-content > .tab-pane.active,
.entry-content .tab-content > .tab-pane.in {
  display: block;
}

/* 旧FAアイコンの代替（Font Awesome未読込） */
.entry-content .fa-arrow-down {
  display: block;
  width: 1rem;
  height: 1rem;
  margin: 0.65rem 0;
  border-right: 1.5px solid color-mix(in srgb, var(--color-slate) 45%, transparent);
  border-bottom: 1.5px solid color-mix(in srgb, var(--color-slate) 45%, transparent);
  transform: rotate(45deg);
  font-size: 0;
}

.entry-content .fa-exclamation-triangle::before {
  content: "！";
  margin-right: 0.2rem;
  color: var(--color-brand);
  font-family: inherit;
  font-style: normal;
  font-weight: 800;
}

.entry-content .fa-external-link::before {
  content: "↗";
  margin-left: 0.15rem;
  font-family: inherit;
  font-style: normal;
  font-weight: 700;
}

/* 注意喚起帯（団体ページ Fax/電話タブ・申込フォーム共通） */
.entry-content .bg-warning,
.dantai-entry .notice-callout,
.dantai-entry .form-horizontal > .form-group:first-child > [style*="color:#a00"],
.dantai-entry .form-horizontal > .form-group:first-child > [style*="color: #a00"],
.dantai-entry .form-horizontal > .form-group:first-child > [class*="col-"]:first-child {
  display: block;
  box-sizing: border-box;
  width: 100%;
  margin: 0 0 0.75rem;
  padding: 0.75rem 0.95rem !important;
  border: 1px solid color-mix(in srgb, #c9a227 38%, transparent) !important;
  background: color-mix(in srgb, #efd56a 26%, #fff) !important;
  color: #8a6d1f !important;
  font-size: 0.9375rem !important;
  font-weight: 700;
  line-height: 1.55;
  text-align: center;
}

.entry-content .bg-warning strong,
.dantai-entry .notice-callout strong,
.dantai-entry .form-horizontal > .form-group:first-child > [class*="col-"]:first-child strong,
.dantai-entry .form-horizontal > .form-group:first-child > [style*="color:#a00"] strong,
.dantai-entry .form-horizontal > .form-group:first-child > [style*="color: #a00"] strong {
  color: inherit;
  font-weight: 800;
}

/* 団体申込フォーム（テーマ流。Bootstrap 格子・互換は使わない） */
.dantai-entry {
  width: 100%;
  max-width: none;
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.5;
}

/* 流用マークアップの Bootstrap 残骸を無効化 */
.dantai-entry .row,
.dantai-entry [class*="col-"],
.dantai-entry .form-horizontal,
.dantai-entry .form-group,
.dantai-entry .form-inline,
.dantai-entry .control-label,
.dantai-entry .form-control,
.dantai-entry .input-sm,
.dantai-entry .btn,
.dantai-entry .btn-default {
  float: none;
  clear: none;
  width: auto;
  max-width: none;
  height: auto;
  margin: 0;
  padding: 0;
  border-radius: 0;
  box-shadow: none;
  background: transparent;
}

.dantai-entry [class*="col-"] {
  display: block;
  width: 100%;
}

.dantai-entry .form-horizontal > .form-group:first-child {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin: 0 0 1rem;
  padding: 0 0 0.85rem;
  border-bottom: 1px solid color-mix(in srgb, var(--color-slate) 14%, transparent);
}

.dantai-entry .form-horizontal > .form-group:first-child .small {
  margin: 0;
  color: var(--color-text-muted);
  font-size: 0.8125rem;
  font-weight: 500;
}

.dantai-entry .form-group {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  margin: 0 0 0.75rem;
}

.dantai-entry .form-group p {
  margin: 0;
}

/* 人数・金額など短い値: ラベルと入力を同一行 */
.dantai-entry .form-group:has(input[size="5"]),
.dantai-entry .form-group:has(input[size="8"]),
.dantai-entry .form-group:has(input.dantai-entry__time) {
  display: grid;
  grid-template-columns: 8.75rem minmax(0, 1fr);
  align-items: start;
  column-gap: 0.85rem;
  row-gap: 0.25rem;
  margin-bottom: 0.5rem;
}

.dantai-entry .form-group:has(input[size="5"]) > [class*="col-"],
.dantai-entry .form-group:has(input[size="8"]) > [class*="col-"],
.dantai-entry .form-group:has(input.dantai-entry__time) > [class*="col-"] {
  min-width: 0;
}

@media (max-width: 359px) {
  .dantai-entry .form-group:has(input[size="5"]),
  .dantai-entry .form-group:has(input[size="8"]),
  .dantai-entry .form-group:has(input.dantai-entry__time) {
    grid-template-columns: 7.25rem minmax(0, 1fr);
  }
}

.dantai-entry label,
.dantai-entry .control-label {
  display: block;
  margin: 0;
  color: var(--color-text);
  font-size: 0.875rem;
  font-weight: 800;
  line-height: 1.4;
  letter-spacing: 0.02em;
}

.dantai-entry .form-group > p:has(> label.col-sm-12:not(.control-label)),
.dantai-entry .form-group > label.col-sm-12:not(.control-label) {
  grid-column: 1 / -1;
  margin-top: 0.2rem;
  padding-bottom: 0.25rem;
  border-bottom: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
  font-size: 0.9375rem;
}

.dantai-entry input[type="text"],
.dantai-entry input[type="tel"],
.dantai-entry input[type="email"],
.dantai-entry input[type="number"],
.dantai-entry input[type="date"],
.dantai-entry input[type="time"],
.dantai-entry select,
.dantai-entry textarea,
.dantai-entry .form-control {
  box-sizing: border-box;
  display: block;
  width: 100%;
  max-width: 100%;
  min-height: 2.5rem;
  margin: 0;
  padding: 0.45rem 0.65rem;
  border: 1px solid color-mix(in srgb, var(--color-slate) 22%, transparent);
  border-radius: 0;
  background: #fff;
  color: var(--color-text);
  font: inherit;
  line-height: 1.4;
}

.dantai-entry textarea {
  min-height: 6.5rem;
  resize: vertical;
}

.dantai-entry input:focus,
.dantai-entry select:focus,
.dantai-entry textarea:focus,
.dantai-entry .form-control:focus {
  outline: 2px solid color-mix(in srgb, var(--color-brand) 45%, transparent);
  outline-offset: 1px;
  border-color: color-mix(in srgb, var(--color-brand) 40%, transparent);
}

.dantai-entry input[readonly] {
  background: color-mix(in srgb, var(--color-slate) 5%, #fff);
  color: var(--color-text-muted);
}

.dantai-entry .form-inline {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 0.6rem;
  align-items: center;
}

.dantai-entry .form-inline > p {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 0.6rem;
  align-items: center;
  margin: 0;
  width: 100%;
}

.dantai-entry .form-inline > p > br {
  display: none;
}

.dantai-entry .form-inline .text-warning {
  flex: 1 0 100%;
}

.dantai-entry .form-inline input[type="text"],
.dantai-entry .form-inline input[type="date"],
.dantai-entry .form-inline input[type="time"],
.dantai-entry .form-inline .form-control {
  display: inline-block;
  width: auto;
  max-width: 100%;
}

.dantai-entry .form-inline input[size="5"],
.dantai-entry input[size="5"] {
  width: 4.75rem;
  min-width: 4.75rem;
}

.dantai-entry .form-inline input[size="8"],
.dantai-entry input[size="8"] {
  width: 6.5rem;
  min-width: 6.5rem;
}

.dantai-entry input.dantai-entry__date,
.dantai-entry .form-inline input.dantai-entry__date {
  display: inline-block;
  width: 11.5rem;
  min-width: 11.5rem;
  max-width: 100%;
}

.dantai-entry input.dantai-entry__time,
.dantai-entry .form-inline input.dantai-entry__time {
  display: inline-block;
  width: 7.5rem;
  min-width: 7.5rem;
  max-width: 100%;
}

.dantai-entry .wpcf7-form-control-wrap {
  display: block;
  position: relative;
  width: 100%;
}

.dantai-entry .form-inline .wpcf7-form-control-wrap {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  flex: 0 0 auto;
  width: auto;
  max-width: 100%;
}

/* 日時はラベル上＋入力横並び */
.dantai-entry .form-group:has(input.dantai-entry__date),
.dantai-entry .form-group:has(input[type="date"]) {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.dantai-entry .wpcf7-checkbox,
.dantai-entry .wpcf7-radio {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 1rem;
}

.dantai-entry .form-group:has(.wpcf7-checkbox),
.dantai-entry .form-group:has(.wpcf7-radio) {
  gap: 0.25rem;
}

.dantai-entry .wpcf7-list-item {
  display: inline-flex;
  gap: 0.45rem;
  align-items: center;
  margin: 0;
  min-height: 0;
  padding: 0.15rem 0;
}

.dantai-entry .wpcf7-list-item-label {
  line-height: 1.35;
}

.dantai-entry .wpcf7-list-item input[type="checkbox"],
.dantai-entry .wpcf7-list-item input[type="radio"],
.dantai-entry input[type="checkbox"],
.dantai-entry input[type="radio"] {
  width: 1.2rem;
  height: 1.2rem;
  min-width: 1.2rem;
  min-height: 1.2rem;
  margin: 0;
  flex: 0 0 auto;
  accent-color: var(--color-brand);
  cursor: pointer;
}

/* エラー: 浮遊チップをやめて入力の直下に */
.dantai-entry .wpcf7-not-valid-tip,
.dantai-entry.use-floating-validation-tip .wpcf7-not-valid-tip,
.dantai-entry .use-floating-validation-tip .wpcf7-not-valid-tip,
.dantai-entry form.use-floating-validation-tip .wpcf7-not-valid-tip {
  position: static !important;
  top: auto !important;
  left: auto !important;
  z-index: auto !important;
  display: block;
  width: auto !important;
  max-width: 100%;
  margin: 0.35rem 0 0;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  color: #a00;
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.4;
}

.dantai-entry .wpcf7-not-valid {
  border-color: #c0392b !important;
}

.dantai-entry .text-danger,
.dantai-entry .small.text-danger {
  color: #a00;
}

.dantai-entry .text-warning,
.dantai-entry .small.text-warning {
  display: inline-block;
  margin-top: 0.15rem;
  color: color-mix(in srgb, var(--color-brand) 72%, #6a4a18);
}

.dantai-entry .small {
  font-size: 0.8125rem;
  font-weight: 500;
  line-height: 1.55;
}

.dantai-entry .text-normal {
  font-weight: 500;
}

.dantai-entry .dantai-wrap,
.dantai-entry .kengaku-wrap > div[style*="background"],
.dantai-entry .shokuji-wrap > div[style*="background"],
.dantai-entry .form-horizontal > div[style*="background"] {
  margin: 0 0 0.25rem;
  padding: 0.85rem 0.9rem 0.25rem !important;
  border: 1px solid color-mix(in srgb, var(--color-slate) 16%, transparent);
  background: color-mix(in srgb, var(--color-slate) 4%, #fff) !important;
  overflow: visible;
}

.dantai-entry .kengaku-wrap,
.dantai-entry .guide-wrap,
.dantai-entry .shokuji-wrap {
  display: none;
}

.dantai-entry .kengaku-wrap.is-open,
.dantai-entry .shokuji-wrap.is-open {
  display: block;
  margin: 0 0 1.5rem;
  overflow: visible;
}

.dantai-entry .guide-wrap.is-open {
  display: block;
  margin: 0.55rem 0 0.25rem;
  padding: 0.75rem 0.85rem;
  border: 1px dashed color-mix(in srgb, var(--color-slate) 22%, transparent);
  background: #fff;
  overflow: visible;
}

.dantai-entry div[style*="height:1px"] {
  height: 0 !important;
  margin: 0.95rem 0 1rem !important;
  padding: 0;
  border: 0;
  border-top: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
  background: transparent !important;
}

.dantai-entry h3,
.dantai-entry .section-heading {
  clear: none;
  margin: 0.85rem 0 0.45rem;
  padding-top: 0;
}

.dantai-entry .form-horizontal > .section-heading:first-of-type,
.dantai-entry .form-horizontal > h3:first-of-type {
  margin-top: 0.35rem;
}

.dantai-entry .section-heading__title,
.dantai-entry h3 {
  margin: 0;
  padding-left: 0.65rem;
  border-left: 3px solid var(--color-brand);
  color: var(--color-text);
  font-size: 1.05rem;
  font-weight: 800;
  line-height: 1.35;
}

.dantai-entry .section-heading .notices-edge {
  margin-top: 0.55rem;
}

.dantai-entry p.text-warning {
  margin: 0.85rem 0 1rem;
  padding: 0.85rem 0.95rem;
  border-left: 3px solid color-mix(in srgb, var(--color-brand) 55%, transparent);
  background: color-mix(in srgb, var(--color-brand) 6%, #fff);
  color: var(--color-text);
  font-size: 0.875rem;
  line-height: 1.65;
}

.dantai-entry p.text-warning strong {
  display: block;
  margin-bottom: 0.35rem;
  color: var(--color-brand);
  font-size: 0.9375rem;
}

.dantai-entry .form-horizontal > p:has(.wpcf7-acceptance),
.dantai-entry .form-horizontal > p:has(+ p > .wpcf7-submit),
.dantai-entry .wpcf7-form > p:has(.wpcf7-acceptance) {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 0.65rem;
  align-items: center;
  width: 100%;
  box-sizing: border-box;
  margin: 1.25rem 0 0;
  padding: 0.95rem 1rem 0.7rem;
  border: 1px solid color-mix(in srgb, var(--color-slate) 16%, transparent);
  border-bottom: 0;
  background: color-mix(in srgb, var(--color-slate) 4%, #fff);
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.45;
}

/* wrap が width:100% だと同意文言が改行される */
.dantai-entry .form-horizontal > p:has(.wpcf7-acceptance) .wpcf7-form-control-wrap,
.dantai-entry .form-horizontal > p:has(+ p > .wpcf7-submit) .wpcf7-form-control-wrap,
.dantai-entry .wpcf7-form > p:has(.wpcf7-acceptance) .wpcf7-form-control-wrap {
  display: inline-flex;
  width: auto;
  flex: 0 0 auto;
}

.dantai-entry .form-horizontal > p:has(.wpcf7-acceptance) .wpcf7-acceptance,
.dantai-entry .wpcf7-form > p:has(.wpcf7-acceptance) .wpcf7-acceptance {
  display: inline-flex;
}

.dantai-entry .form-horizontal > p:has(.wpcf7-acceptance) .wpcf7-list-item,
.dantai-entry .form-horizontal > p:has(+ p > .wpcf7-submit) .wpcf7-list-item,
.dantai-entry .wpcf7-form > p:has(.wpcf7-acceptance) .wpcf7-list-item {
  min-height: 0;
  padding: 0;
}

.dantai-entry .form-horizontal > p:has(.wpcf7-acceptance) .wpcf7-not-valid-tip,
.dantai-entry .form-horizontal > p:has(+ p > .wpcf7-submit) .wpcf7-not-valid-tip,
.dantai-entry .wpcf7-form > p:has(.wpcf7-acceptance) .wpcf7-not-valid-tip {
  flex: 1 0 100%;
  margin-top: 0.35rem;
}

/* 団体・コスプレ：確認帯と接続する送信エリア（上ボーダーなし） */
.dantai-entry .form-horizontal > p:has(.wpcf7-submit) {
  display: block;
  width: 100%;
  box-sizing: border-box;
  margin: 0 0 0.5rem;
  padding: 0.85rem 1rem 1.15rem;
  border: 1px solid color-mix(in srgb, var(--color-slate) 16%, transparent);
  border-top: 0;
  background: color-mix(in srgb, var(--color-slate) 4%, #fff);
}

/* 送信直前の空段落（全角スペースのみ等）を隠す */
.dantai-entry .form-horizontal > p:not(:has(a, input, textarea, select, label, .wpcf7-form-control-wrap, .wpcf7-list-item, button)) {
  display: none;
}

.dantai-entry .wpcf7-submit,
.dantai-entry input[type="submit"] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  max-width: 100%;
  min-width: min(100%, 17rem);
  min-height: var(--touch-target, 2.75rem);
  margin: 0;
  padding: 0.85rem 1.25rem;
  border: 0;
  background: var(--color-brand);
  color: #fff;
  font: inherit;
  font-size: 1rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  cursor: pointer;
  transition: background 0.15s ease;
}

.dantai-entry .wpcf7-submit:hover,
.dantai-entry .wpcf7-submit:focus-visible,
.dantai-entry input[type="submit"]:hover,
.dantai-entry input[type="submit"]:focus-visible {
  background: color-mix(in srgb, var(--color-brand) 88%, #000);
}

.dantai-entry .wpcf7-submit[disabled],
.dantai-entry input[type="submit"][disabled] {
  opacity: 0.42;
  cursor: not-allowed;
  background: var(--color-brand);
}

/* 問い合わせなど form-horizontal なし：全体を団体と同様の帯に */
.dantai-entry .wpcf7-form:not(:has(.form-horizontal)),
.page-contact .dantai-entry .wpcf7-form {
  margin: 0.35rem 0 0.75rem;
  padding: 1rem;
  border: 1px solid color-mix(in srgb, var(--color-slate) 16%, transparent);
  background: color-mix(in srgb, var(--color-slate) 4%, #fff);
}

.dantai-entry .wpcf7-form:not(:has(.form-horizontal)) > .form-group,
.page-contact .dantai-entry .wpcf7-form > .form-group {
  margin-bottom: 0.85rem;
}

.dantai-entry .wpcf7-form:not(:has(.form-horizontal)) > .form-group:last-of-type,
.page-contact .dantai-entry .wpcf7-form > .form-group:last-of-type {
  margin-bottom: 0;
}

/* 問い合わせ：送信エリアは上に余白＋区切り線（団体の接続帯ルールを当てない） */
.dantai-entry .wpcf7-form:not(:has(.form-horizontal)) p:has(> .wpcf7-submit),
.page-contact .dantai-entry .wpcf7-form p:has(> .wpcf7-submit) {
  display: block;
  box-sizing: border-box;
  width: auto;
  margin: 1.5rem 0 0;
  padding: 1.15rem 0 0.25rem;
  border: 0;
  border-top: 1px solid color-mix(in srgb, var(--color-slate) 16%, transparent);
  background: transparent;
}

.dantai-entry .wpcf7-response-output {
  margin: 1rem 0 0;
  padding: 0.75rem 0.9rem;
  font-size: 0.875rem;
  line-height: 1.5;
}

/* 文言が空のときは CF7 既定の青枠を出さない */
.dantai-entry .wpcf7-response-output:empty {
  display: none !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
}

@media (min-width: 1024px) {
  /* 団体情報の入力欄だけ 2/3。枠・フォーム全体は 100% */
  .dantai-entry .dantai-wrap .wpcf7-form-control-wrap {
    width: 66.666%;
    max-width: 66.666%;
  }

  .dantai-entry .form-horizontal > p:has(.wpcf7-submit) {
    display: flex;
    justify-content: flex-start;
  }

  .dantai-entry .wpcf7-submit,
  .dantai-entry input[type="submit"] {
    width: auto;
    min-width: 17rem;
  }
}

/* Bootstrap modal 互換（料金表・ガイド詳細） */
.modal {
  position: fixed;
  inset: 0;
  z-index: 1200;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  background: color-mix(in srgb, #000 45%, transparent);
}

.modal.is-open {
  display: flex;
}

html.is-modal-open {
  overflow: hidden;
}

.modal-dialog {
  width: min(100%, 42rem);
  max-height: calc(100vh - 2rem);
  overflow: auto;
  background: #fff;
  border: 1px solid color-mix(in srgb, var(--color-slate) 16%, transparent);
}

.modal-dialog.modal-lg {
  width: min(100%, 52rem);
}

.modal-header,
.modal-body,
.modal-footer {
  padding: 1rem 1.1rem;
}

.modal-header {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  align-items: flex-start;
  justify-content: space-between;
  border-bottom: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
}

.modal-title {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 800;
}

.modal-header .close {
  margin-left: auto;
  padding: 0.25rem 0.5rem;
  border: 0;
  background: transparent;
  color: var(--color-text);
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
}

.modal-footer {
  border-top: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
  text-align: right;
}

.group-page .entry-content,
.company-page__section--editor .entry-content {
  margin-top: 0.5rem;
}

.layout-with-sidebar__main .facility-page > .facility-cover {
  margin-top: 1.75rem;
}

.layout-with-sidebar__main .facility-page > .facility-facts {
  padding-top: 0;
}

.layout-with-sidebar__main .group-page > .entry-content {
  padding-top: 1.75rem;
}

/* 申込フォーム等: ランディング側サイドバー上余白(1.75rem)とメイン上端を揃える */
.site-main--landing.site-main--page .layout-with-sidebar__main > .entry--renewal {
  padding-top: 1.75rem;
}

.site-main--archive .layout-with-sidebar,
.site-main--search .layout-with-sidebar,
.site-main--single .layout-with-sidebar,
.site-main--page .layout-with-sidebar,
.site-main--facility .layout-with-sidebar,
.site-main--group .layout-with-sidebar,
.site-main--company .layout-with-sidebar,
.site-main--meiji150 .layout-with-sidebar {
  padding-block: 0 2.5rem;
}

/* 明治黎明150年（Elementor 非依存） */
.meiji150-page__section {
  padding: 2.25rem 0;
  border-bottom: 1px solid rgb(42 51 58 / 10%);
}

.meiji150-page__section:first-child {
  padding-top: 1.75rem;
}

.meiji150-page__section:last-of-type {
  border-bottom: 0;
}

.meiji150-page__section .section-heading {
  margin-bottom: 1.15rem;
}

.meiji150-page__lead,
.meiji150-page__note,
.meiji150-page__prose p {
  margin: 0 0 1rem;
  color: var(--color-text);
  font-size: 1rem;
  line-height: 1.85;
}

.meiji150-page__note {
  color: var(--color-text-muted, #5c6a76);
  font-size: 0.9375rem;
}

.meiji150-page__subhead {
  margin: 1.75rem 0 0.75rem;
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1.4;
}

.meiji150-page__logos {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 1.5rem;
  align-items: center;
  margin: 0 0 1.35rem;
}

.meiji150-page__logos img {
  display: block;
  width: auto;
  max-width: min(9.5rem, 42vw);
  height: auto;
}

.meiji150-page__poster-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
  margin: 0 0 1.25rem;
}

.meiji150-page__poster,
.meiji150-page__wide,
.meiji150-page__map,
.meiji150-page__closing {
  margin: 0;
}

.meiji150-page__poster img,
.meiji150-page__wide img,
.meiji150-page__map img,
.meiji150-page__closing img,
.meiji150-flyer__media img,
.meiji150-page__gallery img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 2px;
}

.meiji150-page__poster figcaption {
  margin-top: 0.45rem;
  font-size: 0.8125rem;
  letter-spacing: 0.04em;
  color: var(--color-text-muted, #5c6a76);
}

.meiji150-page__wide,
.meiji150-page__closing {
  margin: 0 0 1.25rem;
}

.meiji150-page__flyers {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.meiji150-flyer {
  display: grid;
  grid-template-columns: minmax(0, 8.5rem) minmax(0, 1fr);
  gap: 0.85rem 1rem;
  align-items: start;
  padding: 0.85rem 0;
  border-top: 1px solid rgb(42 51 58 / 10%);
}

.meiji150-flyer:first-child {
  border-top: 0;
  padding-top: 0;
}

.meiji150-flyer__title {
  margin: 0 0 0.55rem;
  font-family: var(--font-serif);
  font-size: 1.05rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  line-height: 1.45;
}

.meiji150-flyer__link {
  margin: 0;
  font-size: 0.9375rem;
}

.meiji150-page__plans {
  display: grid;
  gap: 1rem;
}

.meiji150-plan {
  padding: 1rem 1rem 0.85rem;
  border: 1px solid rgb(42 51 58 / 12%);
  background: #fff;
}

.meiji150-plan__title {
  margin: 0 0 0.75rem;
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  line-height: 1.45;
}

.meiji150-plan__table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.9375rem;
  line-height: 1.65;
}

.meiji150-plan__table th,
.meiji150-plan__table td {
  padding: 0.35rem 0;
  vertical-align: top;
  border-top: 1px solid rgb(42 51 58 / 8%);
}

.meiji150-plan__table tr:first-child th,
.meiji150-plan__table tr:first-child td {
  border-top: 0;
}

.meiji150-plan__table th {
  width: 4.5rem;
  padding-right: 0.75rem;
  font-weight: 700;
  color: var(--color-text-muted, #5c6a76);
  white-space: nowrap;
}

.meiji150-page__maps {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
  margin: 1.25rem 0;
}

.meiji150-page__gallery {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.65rem;
  margin: 1rem 0 0;
  padding: 0;
  list-style: none;
}

@media (min-width: 768px) {
  .meiji150-page__flyers {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.5rem 1.25rem;
  }

  .meiji150-flyer {
    grid-template-columns: minmax(0, 10rem) minmax(0, 1fr);
    border-top: 0;
    padding: 0;
  }

  .meiji150-page__gallery {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.85rem;
  }

  .meiji150-page__poster-row {
    gap: 1rem;
  }
}

@media (min-width: 1024px) {
  .meiji150-page__flyers {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.site-main--archive .notice-cards,
.site-main--search .search-results {
  margin-top: 1.75rem;
}

.site-main--single .entry--renewal {
  padding-top: 1.75rem;
}

/* -------------------------------------------------------------------------
   資料館だより（本番 Elementor グリッドに寄せたテーマ実装）
--------------------------------------------------------------------------- */
.dayori-page__section {
  margin: 0 0 2.25rem;
  padding-bottom: 2rem;
  border-bottom: 1px solid color-mix(in srgb, var(--color-slate) 12%, transparent);
}

.dayori-page__section:last-of-type,
.dayori-page__section.page-next,
.dayori-page .page-next {
  border-bottom: 0;
  padding-bottom: 0;
}

.dayori-page__year {
  margin: 0 0 1rem;
  text-align: center;
  font-family: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  font-size: 1.125rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: var(--color-text);
}

.dayori-page__section--note {
  padding-block: 1.25rem 1.35rem;
  padding-inline: 1.15rem;
  border: 1px solid color-mix(in srgb, var(--color-brand) 22%, #fff);
  border-bottom: 1px solid color-mix(in srgb, var(--color-brand) 22%, #fff);
  background: color-mix(in srgb, var(--color-brand) 5%, #fff);
}

.dayori-page__prose {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.85;
  color: var(--color-text);
}

.dayori-page__prose p {
  margin: 0 0 1rem;
}

.dayori-page__prose p:last-child {
  margin-bottom: 0;
}

.dayori-page__contact {
  margin-top: 1.1rem;
  color: var(--color-text-muted);
}

.dayori-page__contact a {
  color: var(--color-brand);
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

.dayori-page__contact a:hover,
.dayori-page__contact a:focus-visible {
  color: var(--color-action);
}

.dayori-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid #fadad3;
  border-left: 1px solid #fadad3;
  background: #fff;
}

.dayori-grid__item {
  display: flex;
  margin: 0;
  border-right: 1px solid #fadad3;
  border-bottom: 1px solid #fadad3;
}

.dayori-card {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.2rem;
  width: 100%;
  min-height: var(--touch-target, 2.75rem);
  padding: 1rem 0.65rem;
  text-align: center;
  text-decoration: none;
  color: var(--color-brand);
  line-height: 1.45;
  transition: background-color 0.15s ease, color 0.15s ease;
}

.dayori-card:hover,
.dayori-card:focus-visible,
.dayori-card:active {
  background: color-mix(in srgb, #fadad3 35%, #fff);
  color: var(--color-action);
}

.dayori-card__no,
.dayori-card__title {
  display: block;
  font-size: 0.875rem;
  font-weight: 500;
}

.dayori-card__meta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-top: 0.15rem;
}

.dayori-card__badge {
  color: var(--color-action);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}

@media (min-width: 1024px) {
  .dayori-grid--cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .dayori-grid--cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .dayori-grid--cols-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .dayori-card {
    padding: 1.15rem 0.75rem;
  }

  .dayori-card__no,
  .dayori-card__title {
    font-size: 0.9375rem;
  }
}

