@font-face {
  font-family: "Noto Serif JP";
  src: url("fonts/noto-serif-jp-400.ttf") format("truetype");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "Noto Serif JP";
  src: url("fonts/noto-serif-jp-400.ttf") format("truetype");
  font-style: normal;
  font-weight: 500;
  font-display: swap;
}

:root {
  --site-font: "Noto Serif JP", 游明朝, YuMincho, "Hiragino Mincho ProN W3", "ヒラギノ明朝 ProN W3", "Hiragino Mincho ProN", HG明朝E, "ＭＳ Ｐ明朝", "ＭＳ 明朝", serif;
}

html { font-size: 10px; }
body { background: var(--color-bg); color: var(--color-text); font-family: var(--site-font); font-size: 16px; font-weight: 400; line-height: 1.5; letter-spacing: .06em; overflow-x: hidden; word-break: normal; overflow-wrap: anywhere; }
a { color: inherit; text-decoration: none; transition: color .3s cubic-bezier(.215, .61, .355, 1), opacity .3s cubic-bezier(.215, .61, .355, 1); }
a:hover { color: var(--color-primary); opacity: .8; }
img { display: block; max-width: 100%; }
button { color: inherit; font: inherit; }
.container { width: min(1120px, calc(100% - 80px)); margin-inline: auto; }

.site-header { position: sticky; top: 0; z-index: 20; background: var(--color-bg); border-bottom: 1px solid color-mix(in srgb, var(--color-text) 25%, transparent); }
.site-header .container { min-height: 125px; display: flex; align-items: center; gap: 42px; }
.site-logo { flex: 0 0 auto; display: block; }
.site-logo img { width: auto; height: 56px; max-width: 220px; object-fit: contain; }
.site-nav { margin-left: auto; }
.site-nav ul { display: flex; align-items: center; gap: 27px; list-style: none; }
.site-nav a { display: block; padding: 12px 0; font-size: 15px; line-height: 1.5; white-space: nowrap; }
.site-nav a:hover, .site-nav a.active { color: var(--color-primary); text-decoration: underline; text-underline-offset: 6px; }
.hamburger { display: none; border: 0; background: transparent; cursor: pointer; }

.intro-section { padding: 86px 0 92px; }
.intro-layout { display: grid; grid-template-columns: 1fr 2fr; gap: 9%; align-items: start; }
.section-label { color: var(--color-primary); font-size: 13px; line-height: 1.5; letter-spacing: .2em; word-break: keep-all; }
.intro-copy h1, .section-heading h2, .about-feature h2, .reservation-cta h2 { font-size: 32px; font-weight: 400; line-height: 1.5; letter-spacing: .2em; }
.intro-copy h1 { writing-mode: vertical-rl; min-height: 13.5em; margin-left: 12%; }
.intro-copy p { max-width: 576px; margin: 0 0 34px; font-size: 16px; line-height: 2.75; }
.outline-button { display: inline-flex; min-height: 58px; align-items: center; justify-content: center; padding: 19px 20px 18px; border: 1px solid var(--color-text); background: transparent; font-size: 16px; line-height: 1.25; }
.outline-button:hover { border-color: var(--color-primary); color: var(--color-primary); opacity: 1; }

.hero { position: relative; min-height: min(72vw, 780px); color: #fff; isolation: isolate; overflow: hidden; }
.hero::after, .reservation-cta::after { position: absolute; inset: 0; z-index: -1; background: color-mix(in srgb, var(--color-text) 38%, transparent); content: ""; }
.hero-slides, .hero-slide { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero-slide { aspect-ratio: 4 / 3; object-fit: cover; opacity: 0; transition: opacity .6s cubic-bezier(.215, .61, .355, 1); }
.hero-slide.is-active { opacity: 1; }
.hero-content { min-height: min(72vw, 780px); display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.hero-kicker { margin-bottom: 22px; font-size: 13px; line-height: 1.5; letter-spacing: .2em; }
.hero h2 { font-size: 40px; font-weight: 400; line-height: 1.5; letter-spacing: .2em; }
.hero-actions, .reservation-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin-top: 42px; }
.hero-button { display: inline-flex; min-width: 130px; min-height: 58px; align-items: center; justify-content: center; padding: 19px 20px 18px; border: 1px solid #fff; color: #fff; font-size: 16px; line-height: 1.25; }
.hero-button:hover { border-color: #fff; color: #fff; background: color-mix(in srgb, var(--color-bg) 18%, transparent); opacity: 1; }

.style-section { padding: 120px 0 124px; overflow: hidden; }
.section-heading { margin-bottom: 52px; }
.section-heading .section-label { margin-bottom: 13px; }
.style-gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 34px 20px; }
.style-gallery img, .service-card img, .about-feature-image img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.style-gallery figcaption { padding-top: 14px; color: var(--color-secondary); font-size: 14px; line-height: 1.8; }

.service-section { padding: 4px 0 126px; }
.centered-heading { text-align: center; }
.service-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; }
.service-card h3 { margin-top: 21px; font-size: 24px; font-weight: 400; line-height: 1.5; letter-spacing: .2em; }
.service-card p { margin-top: 15px; line-height: 2; }
.text-link { display: inline-block; margin-top: 20px; padding-bottom: 4px; border-bottom: 1px solid var(--color-text); font-size: 14px; line-height: 1.8; }
.text-link:hover { border-color: var(--color-primary); }

.about-feature { display: grid; grid-template-columns: 1.1fr .9fr; align-items: stretch; }
.about-feature-image { min-height: 500px; }
.about-feature-image img { height: 100%; }
.about-feature-copy { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; padding: 80px min(8vw, 120px); background: color-mix(in srgb, var(--color-primary) 7%, var(--color-bg)); }
.about-feature-copy .section-label { margin-bottom: 14px; }
.about-feature-copy h2 { margin-bottom: 25px; }
.about-feature-copy p { max-width: 420px; margin-bottom: 35px; line-height: 2.75; }

.information-section { padding: 122px 0 126px; }
.information-grid { display: grid; grid-template-columns: 1.45fr .55fr; gap: 10%; align-items: start; }
.information-grid dl { border-top: 1px solid var(--color-text); }
.information-grid dl > div { display: grid; grid-template-columns: 130px 1fr; }
dt, dd { padding: 21px 0; border-bottom: 1px solid color-mix(in srgb, var(--color-text) 35%, transparent); font-weight: 400; }
dt { letter-spacing: .2em; }
dd { line-height: 2; }
dd a:hover { text-decoration: underline; text-underline-offset: 4px; }
.information-links { display: grid; gap: 12px; }
.service-heading-break { display: none; }

.reservation-cta { position: relative; z-index: 0; min-height: 390px; display: grid; place-items: center; color: #fff; text-align: center; isolation: isolate; overflow: hidden; }
.reservation-cta > img { aspect-ratio: 4 / 3; position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; }
.reservation-inner { padding: 70px 0; }
.reservation-cta p { font-size: 16px; line-height: 1.5; }
.reservation-cta h2 { margin-top: 16px; }

@media (max-width: 599px) {
  body { font-size: 14px; }
  .container { width: min(100% - 40px, 1120px); }
  .site-header .container { min-height: 70px; gap: 16px; }
  .site-logo img { height: 38px; max-width: 160px; }
  .hamburger { display: inline-flex; width: 44px; height: 44px; flex-direction: column; align-items: center; justify-content: center; gap: 5px; margin-left: auto; }
  .hamburger span { width: 24px; height: 1px; background: var(--color-text); }
  .site-nav { position: absolute; top: 100%; right: 0; left: 0; display: none; margin: 0; background: var(--color-bg); border-top: 1px solid color-mix(in srgb, var(--color-text) 25%, transparent); border-bottom: 1px solid color-mix(in srgb, var(--color-text) 25%, transparent); }
  .site-nav.open { display: block; }
  .site-nav ul { display: block; padding: 12px 20px; }
  .site-nav a { min-height: 44px; padding: 12px 0; }

  .intro-section { padding: 55px 0 60px; }
  .intro-layout { grid-template-columns: 1fr; gap: 26px; }
  .intro-copy h1 { min-height: 0; margin: 0 0 25px; writing-mode: horizontal-tb; font-size: 29px; }
  .intro-copy p { margin-bottom: 28px; line-height: 2.3; }
  .outline-button { min-height: 54px; padding: 17px 20px 16px; }

  .hero, .hero-content { min-height: 610px; }
  .hero-content { justify-content: end; padding-bottom: 68px; }
  .hero h2 { font-size: 30px; line-height: 1.7; }
  .hero-actions, .reservation-actions { display: grid; grid-template-columns: repeat(3, 1fr); width: 100%; gap: 7px; margin-top: 30px; }
  .hero-button { min-width: 0; min-height: 52px; padding: 15px 5px 14px; font-size: 14px; }

  .style-section { padding: 74px 0 78px; }
  .section-heading { margin-bottom: 35px; }
  .section-heading h2, .about-feature h2, .reservation-cta h2 { font-size: 26px; line-height: 1.7; }
  .style-gallery { grid-template-columns: repeat(2, 1fr); gap: 25px 12px; }
  .style-gallery figcaption { padding-top: 11px; white-space: nowrap; }

  .service-section { padding: 0 0 80px; }
  .service-grid { grid-template-columns: 1fr; gap: 46px; }
  .service-card h3 { margin-top: 16px; font-size: 22px; }
  .service-card p { margin-top: 10px; line-height: 2; }

  .about-feature { grid-template-columns: 1fr; }
  .about-feature-image { min-height: 0; }
  .about-feature-copy { padding: 60px 20px 64px; }
  .about-feature-copy h2 { margin-bottom: 19px; }
  .about-feature-copy p { margin-bottom: 28px; line-height: 2.3; }

  .information-section { padding: 75px 0 80px; }
  .information-grid { grid-template-columns: 1fr; gap: 31px; }
  .information-grid dl > div { grid-template-columns: 82px 1fr; gap: 15px; }
  dt, dd { padding: 15px 0; }
  .information-links { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .information-links .outline-button { min-width: 0; padding-inline: 12px; white-space: nowrap; }
  .information-links .outline-button:last-child { grid-column: 1 / -1; }

  .service-heading-break { display: block; }

  .reservation-cta { min-height: 355px; }
  .reservation-inner { padding: 55px 0; }
  .reservation-cta h2 { margin-top: 12px; }
}

@media (max-width: 340px) {
  .hero h2 { font-size: 27px; }
  .information-links { grid-template-columns: 1fr; }
  .information-links .outline-button:last-child { grid-column: auto; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; }
}

.section { padding: 80px 0; }
.footer-brand { min-width: 0; }
.footer-logo-img { display: block; width: auto; max-width: 100%; height: 38px; margin-bottom: .6rem; object-fit: contain; }
.footer-privacy { display: inline-block; margin-left: .75rem; white-space: nowrap; }

/* sm-page-hero */
/* 下層ページの見出しの帯(全ページ共通。正本 = access の帯。高さは PC 390px / スマホ 300px。unify-page-hero.js) */
.smph-section-label { color: var(--color-primary); font-size: 13px; line-height: 1.5; letter-spacing: 0.2em; word-break: keep-all; }
.section-heading .smph-section-label { margin-bottom: 13px; }
.about-feature-copy .smph-section-label { margin-bottom: 14px; }
.smph-access-hero { display: grid; grid-template-columns: 1.1fr 0.9fr; min-height: 500px; background: color-mix(in srgb, var(--color-primary) 7%, var(--color-bg)); }
.smph.smph-access-hero__image img, .access-photo img { width: 100%; height: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.smph.smph-access-hero__copy { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; padding: 80px min(8vw, 120px); }
.smph.smph-access-hero__copy .smph-section-label { margin-bottom: 14px; }
.smph.smph-access-hero__copy h1, .access-map h2, .access-visit h2 { font-size: 32px; font-weight: 400; line-height: 1.5; letter-spacing: 0.2em; }
.smph.smph-access-hero__copy h1 { margin-bottom: 25px; }
.smph.smph-access-hero__copy p { max-width: 410px; line-height: 2.75; }
.access-details__copy .smph-section-label { margin-bottom: 13px; }
.access-visit__copy .smph-section-label { margin-bottom: 14px; }
@media (max-width: 599px) {.smph-access-hero, .access-details__grid, .access-visit { grid-template-columns: 1fr; } .smph.smph-access-hero__copy, .access-visit__copy { padding: 60px 20px 64px; } .smph.smph-access-hero__copy h1, .access-map h2, .access-visit h2, .access-details__copy h2 { font-size: 26px; line-height: 1.7; } .smph.smph-access-hero__copy h1 { margin-bottom: 19px; } .smph.smph-access-hero__copy p, .access-details__copy p, .access-visit__copy p { line-height: 2.3; }}
[data-sm-page-hero] [data-smph-media]{height:390px !important;min-height:0 !important;max-height:none !important;aspect-ratio:auto !important;overflow:hidden !important;}
[data-sm-page-hero] > :only-child{max-width:none !important;width:100% !important;margin-left:0 !important;margin-right:0 !important;}
[data-sm-page-hero] img{width:100% !important;height:100% !important;max-width:none !important;max-height:none !important;object-fit:cover !important;aspect-ratio:auto !important;}
[data-sm-page-hero]{height:auto !important;min-height:390px !important;max-height:none !important;}
@media (max-width: 767px){[data-sm-page-hero]{min-height:300px !important;}[data-sm-page-hero] [data-smph-media]{height:300px !important;}}

/* 下層ページの見出しの大きさを全ページでそろえる(unify-page-headings.js が実測の最多値から書く) */
[data-sm-page-title]{font-size:32px !important;line-height:48px !important;letter-spacing:0.96px !important;font-weight:700 !important;}
[data-sm-section-title]{font-size:32px !important;line-height:48px !important;letter-spacing:6.4px !important;font-weight:400 !important;}
@media (max-width: 767px){[data-sm-page-title]{font-size:28px !important;line-height:42px !important;letter-spacing:0.84px !important;font-weight:700 !important;}[data-sm-section-title]{font-size:26px !important;line-height:44.2px !important;letter-spacing:5.2px !important;font-weight:400 !important;}}

/* sm-normalize */
/* セクションの写真の縦横比をそろえる・スマホで狭すぎる段組みを1列に・見出しを文節で折り返す(normalize-sections.js) */
[data-sm-ratio]{aspect-ratio:1 / 0.7500 !important;height:auto !important;min-height:0 !important;max-height:none !important;}
img[data-sm-ratio]{width:100% !important;object-fit:cover !important;display:block;}
[data-sm-gallery]{display:grid !important;grid-template-columns:repeat(3,minmax(0,1fr)) !important;grid-auto-rows:auto !important;gap:16px !important;}
[data-sm-gallery] > *{grid-column:auto !important;grid-row:auto !important;width:auto !important;height:auto !important;margin:0 !important;position:relative !important;}
@media (min-width: 768px){[data-sm-gx-pc]{display:none !important;}}
@media (max-width: 767px){[data-sm-gallery]{grid-template-columns:repeat(2,minmax(0,1fr)) !important;gap:8px !important;}[data-sm-gx-sp]{display:none !important;}}

[data-sm-imgbox]{height:auto !important;min-height:0 !important;max-height:none !important;}
@media (max-width: 767px){[data-sm-sp1]{display:grid !important;grid-template-columns:1fr !important;gap:24px !important;}[data-sm-sp1] > *{width:auto !important;max-width:none !important;flex:none !important;grid-column:auto !important;}}
@media (max-width: 767px){[data-sm-sp-tall]{aspect-ratio:4 / 5 !important;height:auto !important;min-height:0 !important;max-height:none !important;}img[data-sm-sp-tall]{width:100% !important;object-fit:cover !important;}}
h1, h2, h3{word-break:auto-phrase;text-wrap:balance;}
[data-sm-hero-box="media"]{height:720px !important;min-height:0 !important;max-height:none !important;aspect-ratio:auto !important;}
[data-sm-hero-box="media"] > *{height:100% !important;min-height:0 !important;}
[data-sm-hero-wide]{max-width:none !important;width:100% !important;margin-left:0 !important;margin-right:0 !important;}
[data-sm-hero-box="section"]{height:auto !important;min-height:720px !important;max-height:none !important;}
img[data-sm-hero-img]{width:100% !important;height:100% !important;object-fit:cover !important;}
@media (max-width: 767px){[data-sm-hero-box="media"]{height:420px !important;}[data-sm-hero-box="section"]{min-height:420px !important;}}
.site-footer .footer-nav ul{display:grid !important;grid-auto-flow:column !important;grid-template-rows:repeat(5, auto) !important;grid-auto-columns:max-content !important;column-gap:clamp(24px, 3vw, 48px) !important;row-gap:0 !important;}
.site-footer .footer-nav li{margin:0 0 0.4rem !important;}
@media (min-width: 768px){.site-footer .footer-grid{grid-template-columns:minmax(0, 1.4fr) auto minmax(0, 1fr) !important;}}
@media (min-width: 768px){.site-header:not(.nav-collapsed) .site-nav ul{display:flex !important;flex-wrap:nowrap !important;grid-template-columns:none !important;align-items:center !important;gap:0 clamp(14px, 1.6vw, 28px) !important;}.site-header:not(.nav-collapsed) .site-nav li{flex:none !important;}.site-header:not(.nav-collapsed) .site-nav a{white-space:nowrap !important;}}

/* sm-reveal */
/* セクションのフェードイン(common.js が画面に入った .fade-in に .visible を付ける。add-section-reveal.js) */
.sm-js .fade-in{opacity:0;transform:translateY(30px);transition:opacity 0.6s ease,transform 0.6s ease;}
.sm-js .fade-in.visible{opacity:1;transform:none;}
@media (prefers-reduced-motion: reduce){.fade-in, .fade-in > *{opacity:1 !important;transform:none !important;transition:none !important;}}
