/* =========================================================
   SANS TOI MAMIE ／ 共通スタイル（全ページ）
   ---------------------------------------------------------
   色・フォントは :root の変数でまとめて変更できます。
   TOPページ専用の演出は top.css にあります。
   ========================================================= */

:root {
  /* Base */
  --c-black:      #0a0908;
  --c-charcoal:   #131110;
  --c-charcoal-2: #1b1815;
  --c-brown:      #2a1f18;

  /* Accent（使いすぎない） */
  --c-gold:       #c9ae80;
  --c-gold-soft:  rgba(201, 174, 128, .55);
  --c-gold-line:  rgba(201, 174, 128, .28);
  --c-wine:       #5b1c26;

  /* Text */
  --c-text:       #e7e0d4;
  --c-text-sub:   #a79e92;
  --c-text-dim:   #6f675e;
  --c-border:     rgba(231, 224, 212, .10);

  /* Fonts */
  --f-en:     "Cormorant Garamond", "Times New Roman", serif;
  --f-mincho: "Shippori Mincho", "Yu Mincho", "YuMincho", "Hiragino Mincho ProN", "Noto Serif JP", "Noto Serif CJK JP", serif;
  --f-body:   "Noto Sans JP", "Hiragino Sans", "Yu Gothic", "YuGothic", "Noto Sans CJK JP", sans-serif;

  /* Layout */
  --header-h: 76px;
  --gutter:   clamp(20px, 6vw, 72px);
  --maxw:     1240px;
  --ease:     cubic-bezier(.22, .61, .36, 1);
}
@media (max-width: 767px) {
  :root { --header-h: 62px; }
}

/* ---------- Reset / Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--c-black);
  color: var(--c-text);
  font-family: var(--f-body);
  font-weight: 300;
  font-size: 15px;
  line-height: 2.05;
  letter-spacing: .06em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}
@media (min-width: 768px) { body { font-size: 16px; } }
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
h1, h2, h3, p, ul, dl, dd, figure { margin: 0; padding: 0; }
ul { list-style: none; }
::selection { background: var(--c-wine); color: var(--c-text); }
:focus-visible { outline: 1px solid var(--c-gold); outline-offset: 4px; }
html.is-locked, html.is-locked body { overflow: hidden; }

.sr-only {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap;
}
.container { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 var(--gutter); }

/* 写真の枠：画像が読み込めない場合も暗い面が残る */
.media { position: relative; overflow: hidden; background: var(--c-charcoal-2); }
.media img { width: 100%; height: 100%; object-fit: cover; }
.media img.is-missing { visibility: hidden; }

/* ---------- Typography helpers ---------- */
.en { font-family: var(--f-en); font-weight: 400; letter-spacing: .24em; }
.mincho { font-family: var(--f-mincho); font-weight: 400; }

.sec-title { display: flex; flex-direction: column; gap: 14px; }
.sec-title__en {
  font-family: var(--f-en); font-weight: 300;
  font-size: clamp(30px, 5vw, 46px);
  letter-spacing: .22em; line-height: 1.1;
  color: var(--c-gold);
}
.sec-title__ja {
  font-family: var(--f-mincho); font-size: 13px;
  letter-spacing: .3em; color: var(--c-text-sub);
}
.sec-title--center { align-items: center; text-align: center; }

.gold-line { display: block; width: 56px; height: 1px; background: var(--c-gold-soft); }
.sec-title--center .gold-line { margin: 0 auto; }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 18px;
  min-height: 54px; padding: 0 34px;
  border: 1px solid var(--c-gold-line);
  color: var(--c-gold);
  font-family: var(--f-en); font-size: 14px; letter-spacing: .28em;
  transition: border-color .5s var(--ease), background-color .5s var(--ease), color .5s var(--ease);
}
.btn__arrow {
  position: relative; width: 28px; height: 1px; background: currentColor;
  transition: width .5s var(--ease);
}
.btn__arrow::after {
  content: ""; position: absolute; right: 0; top: -3px;
  width: 7px; height: 1px; background: currentColor; transform: rotate(35deg); transform-origin: right;
}
.btn:hover { border-color: var(--c-gold-soft); background-color: rgba(201, 174, 128, .06); }
.btn:hover .btn__arrow { width: 40px; }

.text-link {
  display: inline-flex; align-items: center; gap: 12px;
  font-family: var(--f-en); font-size: 14px; letter-spacing: .26em; color: var(--c-gold);
  padding: 8px 0; border-bottom: 1px solid var(--c-gold-line);
  transition: border-color .5s var(--ease);
}
.text-link:hover { border-color: var(--c-gold); }

/* =========================================================
   HEADER
   ========================================================= */
.site-header {
  position: fixed; inset: 0 0 auto 0; z-index: 100;
  height: var(--header-h);
  background: rgba(10, 9, 8, .82);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--c-border);
  transition: background-color .6s var(--ease), border-color .6s var(--ease);
}
.site-header__inner {
  height: 100%; max-width: 1440px; margin: 0 auto;
  padding: 0 var(--gutter);
  display: flex; align-items: center; justify-content: space-between;
}
.brand {
  font-family: var(--f-en); font-weight: 400;
  font-size: 17px; letter-spacing: .32em; white-space: nowrap;
  color: var(--c-text);
  transition: color .5s var(--ease);
}
.brand:hover { color: var(--c-gold); }
@media (max-width: 767px) { .brand { font-size: 15px; letter-spacing: .26em; } }

.gnav ul { display: flex; gap: clamp(22px, 2.6vw, 40px); }
.gnav a {
  position: relative; display: block; padding: 6px 0;
  font-family: var(--f-en); font-size: 13px; letter-spacing: .24em;
  color: var(--c-text-sub);
  transition: color .5s var(--ease);
}
.gnav a::after {
  content: ""; position: absolute; left: 0; right: .24em; bottom: 0;
  height: 1px; background: var(--c-gold);
  transform: scaleX(0); transform-origin: left;
  transition: transform .6s var(--ease);
}
.gnav a:hover { color: var(--c-gold); }
.gnav a:hover::after { transform: scaleX(1); }
.gnav a[aria-current="page"] { color: var(--c-gold); }
.gnav a[aria-current="page"]::after { transform: scaleX(1); background: var(--c-gold-soft); }

.menu-toggle { display: none; }

@media (max-width: 900px) {
  .gnav { display: none; }
  .menu-toggle {
    display: flex; flex-direction: column; justify-content: center; align-items: flex-end; gap: 7px;
    width: 48px; height: 48px; margin-right: -10px; padding: 0 10px;
  }
  .menu-toggle span {
    display: block; height: 1px; background: var(--c-text);
    transition: transform .5s var(--ease), width .5s var(--ease), background-color .5s;
  }
  .menu-toggle span:nth-child(1) { width: 28px; }
  .menu-toggle span:nth-child(2) { width: 18px; }
  .is-menu-open .menu-toggle span { background: var(--c-gold); }
  .is-menu-open .menu-toggle span:nth-child(1) { width: 26px; transform: translateY(4px) rotate(38deg); }
  .is-menu-open .menu-toggle span:nth-child(2) { width: 26px; transform: translateY(-4px) rotate(-38deg); }
}

/* ---------- Mobile drawer ---------- */
.drawer {
  position: fixed; inset: 0; z-index: 90;
  display: flex; flex-direction: column; justify-content: center;
  padding: calc(var(--header-h) + 20px) var(--gutter) 40px;
  background: var(--c-black);
  opacity: 0; visibility: hidden;
  transition: opacity .6s var(--ease), visibility 0s linear .6s;
}
.drawer::before { /* ごく淡いワインの灯り */
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(ellipse 80% 50% at 80% 100%, rgba(91, 28, 38, .22), transparent 70%);
}
.is-menu-open .drawer { opacity: 1; visibility: visible; transition: opacity .6s var(--ease), visibility 0s; }
.drawer nav { position: relative; }
.drawer li { border-bottom: 1px solid var(--c-border); }
.drawer li:first-child { border-top: 1px solid var(--c-border); }
.drawer a {
  display: flex; align-items: baseline; justify-content: space-between;
  padding: 18px 4px; min-height: 60px;
}
.drawer__en { font-family: var(--f-en); font-size: 22px; letter-spacing: .24em; color: var(--c-text); }
.drawer__ja { font-family: var(--f-mincho); font-size: 11px; letter-spacing: .24em; color: var(--c-text-dim); }
.drawer a[aria-current="page"] .drawer__en { color: var(--c-gold); }
.drawer__foot {
  position: relative; margin-top: 44px; text-align: center;
  font-family: var(--f-en); font-size: 12px; letter-spacing: .4em; color: var(--c-text-dim);
}
@media (min-width: 901px) { .drawer { display: none; } }

/* =========================================================
   FOOTER
   ========================================================= */
.site-footer {
  margin-top: clamp(100px, 14vw, 180px);
  padding: 72px var(--gutter) 40px;
  border-top: 1px solid var(--c-border);
  background: var(--c-charcoal);
  text-align: center;
}
.site-footer__brand { font-family: var(--f-en); font-size: 22px; letter-spacing: .34em; }
.site-footer__ja { margin-top: 6px; font-family: var(--f-mincho); font-size: 12px; letter-spacing: .3em; color: var(--c-text-sub); }
.site-footer .gold-line { margin: 28px auto; }
.site-footer__addr { font-size: 13px; line-height: 1.9; color: var(--c-text-sub); }
.site-footer__nav { margin-top: 36px; display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 26px; }
.site-footer__nav a {
  display: inline-block; padding: 8px 0;
  font-family: var(--f-en); font-size: 12px; letter-spacing: .22em; color: var(--c-text-dim);
  transition: color .5s var(--ease);
}
.site-footer__nav a:hover { color: var(--c-gold); }
.site-footer__copy { margin-top: 36px; font-family: var(--f-en); font-size: 11px; letter-spacing: .2em; color: var(--c-text-dim); }

/* =========================================================
   下層ページ共通：ページタイトル
   ========================================================= */
.page-head {
  position: relative;
  padding: calc(var(--header-h) + clamp(72px, 11vw, 140px)) var(--gutter) clamp(56px, 8vw, 100px);
  text-align: center;
}
.page-head::before {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(ellipse 60% 70% at 50% 0%, rgba(42, 31, 24, .55), transparent 72%);
}
.page-head h1 { position: relative; display: flex; flex-direction: column; align-items: center; gap: 20px; font-weight: 400; }
.page-head__en {
  font-family: var(--f-en); font-weight: 300;
  font-size: clamp(38px, 7vw, 64px); letter-spacing: .26em; line-height: 1;
  padding-left: .26em; /* letter-spacing の右余白を相殺して中央に */
  color: var(--c-gold);
}
.page-head__ja { font-family: var(--f-mincho); font-size: 13px; letter-spacing: .34em; color: var(--c-text-sub); }

.lead {
  font-family: var(--f-mincho); font-size: clamp(15px, 1.6vw, 17px);
  line-height: 2.3; letter-spacing: .12em; color: var(--c-text);
}
.prose p + p { margin-top: 1.4em; }
.prose p { color: var(--c-text-sub); }

.page-cta { margin-top: clamp(80px, 12vw, 140px); text-align: center; }
.page-cta__text { margin-bottom: 28px; font-family: var(--f-mincho); font-size: 14px; letter-spacing: .2em; color: var(--c-text-sub); }

/* =========================================================
   ABOUT
   ========================================================= */
.about-hero { max-width: 1440px; margin: 0 auto; padding: 0 var(--gutter); }
.about-hero .media { aspect-ratio: 21 / 9; }
@media (max-width: 767px) { .about-hero { padding: 0; } .about-hero .media { aspect-ratio: 4 / 3; } }

.about-concept {
  max-width: 820px; margin: clamp(80px, 12vw, 150px) auto 0; padding: 0 var(--gutter);
  text-align: center;
}
.about-concept__title {
  margin: 28px 0 40px;
  font-family: var(--f-mincho); font-weight: 400;
  font-size: clamp(21px, 3vw, 30px); letter-spacing: .16em; line-height: 1.9;
}
.about-concept .prose p { line-height: 2.4; }

.about-rows { margin-top: clamp(100px, 14vw, 180px); display: grid; gap: clamp(90px, 12vw, 160px); }
.about-row {
  display: grid; grid-template-columns: repeat(12, 1fr); gap: 0 clamp(20px, 3vw, 40px);
  align-items: center;
}
.about-row .media { grid-column: 1 / 8; aspect-ratio: 4 / 3; }
.about-row__body { grid-column: 9 / 13; }
.about-row--rev .media { grid-column: 6 / 13; grid-row: 1; aspect-ratio: 4 / 5; }
.about-row--rev .about-row__body { grid-column: 1 / 5; grid-row: 1; }
.about-row__num { font-family: var(--f-en); font-size: 13px; letter-spacing: .3em; color: var(--c-gold); }
.about-row__title {
  margin: 18px 0 26px; font-family: var(--f-mincho); font-weight: 400;
  font-size: clamp(19px, 2.2vw, 24px); letter-spacing: .14em; line-height: 1.8;
}
@media (max-width: 767px) {
  .about-row { grid-template-columns: 1fr; gap: 36px; }
  .about-row .media, .about-row--rev .media { grid-column: 1; grid-row: auto; margin: 0 calc(var(--gutter) * -1); }
  .about-row--rev .media { aspect-ratio: 4 / 3; }
  .about-row__body, .about-row--rev .about-row__body { grid-column: 1; grid-row: auto; }
}

/* =========================================================
   MENU
   ========================================================= */
.menu-wrap { max-width: 860px; margin: 0 auto; padding: 0 var(--gutter); }
.menu-board {
  position: relative;
  padding: clamp(40px, 7vw, 84px) clamp(24px, 6vw, 80px);
  background: var(--c-charcoal);
  border: 1px solid var(--c-border);
}
.menu-board::before { /* 内側の細いゴールド枠 */
  content: ""; position: absolute; inset: 10px; border: 1px solid var(--c-gold-line); pointer-events: none;
}
.menu-cat + .menu-cat { margin-top: clamp(56px, 8vw, 84px); }
.menu-cat__head { display: flex; align-items: baseline; gap: 18px; margin-bottom: 26px; }
.menu-cat__en { font-family: var(--f-en); font-weight: 400; font-size: clamp(24px, 3.4vw, 30px); letter-spacing: .24em; color: var(--c-gold); }
.menu-cat__ja { font-family: var(--f-mincho); font-size: 12px; letter-spacing: .26em; color: var(--c-text-sub); }
.menu-cat__rule { flex: 1; height: 1px; background: var(--c-gold-line); align-self: center; }

.menu-item {
  display: flex; align-items: baseline; gap: 14px;
  padding: 16px 0; border-bottom: 1px solid var(--c-border);
}
.menu-item__name { font-family: var(--f-mincho); font-size: 15px; letter-spacing: .1em; }
.menu-item__note { display: block; font-size: 12px; color: var(--c-text-dim); letter-spacing: .08em; line-height: 1.6; }
.menu-item__dots { flex: 1; border-bottom: 1px dotted var(--c-text-dim); transform: translateY(-5px); min-width: 20px; }
.menu-item__price { font-family: var(--f-en); font-size: 18px; letter-spacing: .08em; white-space: nowrap; }
.menu-empty {
  padding: 22px 0; border-top: 1px solid var(--c-border); border-bottom: 1px solid var(--c-border);
  text-align: center; font-family: var(--f-mincho); font-size: 13px; letter-spacing: .24em; color: var(--c-text-dim);
}
.menu-notes { margin-top: 40px; font-size: 12px; line-height: 2; color: var(--c-text-dim); }
.menu-notes li::before { content: "※"; margin-right: .4em; }

/* =========================================================
   GALLERY
   ========================================================= */
.gallery {
  max-width: 1360px; margin: 0 auto; padding: 0 var(--gutter);
  display: grid; grid-template-columns: repeat(12, 1fr);
  gap: clamp(70px, 9vw, 130px) clamp(16px, 2.4vw, 32px);
}
.gallery__item { grid-column: 1 / -1; }
.gallery__btn { position: relative; display: block; width: 100%; cursor: zoom-in; text-align: left; }
.gallery__btn .media { transition: opacity .6s var(--ease); }
.gallery__btn:hover .media { opacity: .82; }
.gallery__cap { display: flex; align-items: baseline; gap: 16px; margin-top: 16px; }
.gallery__num { font-family: var(--f-en); font-size: 13px; letter-spacing: .2em; color: var(--c-gold); }
.gallery__cat { font-family: var(--f-en); font-size: 15px; letter-spacing: .22em; }
.gallery__ja  { font-family: var(--f-mincho); font-size: 12px; letter-spacing: .2em; color: var(--c-text-dim); }

/* 7枚1セットの雑誌的な配置（枚数が変わっても崩れません） */
.gallery__item:nth-child(7n+1) { grid-column: 1 / -1; }
.gallery__item:nth-child(7n+1) .media { aspect-ratio: 16 / 9; }
.gallery__item:nth-child(7n+2) { grid-column: 1 / 8; }
.gallery__item:nth-child(7n+2) .media { aspect-ratio: 4 / 3; }
.gallery__item:nth-child(7n+3) { grid-column: 9 / 13; align-self: end; }
.gallery__item:nth-child(7n+3) .media { aspect-ratio: 3 / 4; }
.gallery__item:nth-child(7n+4) { grid-column: 3 / 11; }
.gallery__item:nth-child(7n+4) .media { aspect-ratio: 3 / 2; }
.gallery__item:nth-child(7n+5) { grid-column: 1 / 5; align-self: start; margin-top: 12%; }
.gallery__item:nth-child(7n+5) .media { aspect-ratio: 3 / 4; }
.gallery__item:nth-child(7n+6) { grid-column: 6 / 13; }
.gallery__item:nth-child(7n+6) .media { aspect-ratio: 4 / 3; }
.gallery__item:nth-child(7n+7) { grid-column: 2 / 12; }
.gallery__item:nth-child(7n+7) .media { aspect-ratio: 21 / 9; }

@media (max-width: 767px) {
  .gallery { gap: 56px 12px; }
  .gallery__item:nth-child(n) { grid-column: 1 / -1; margin-top: 0; }
  .gallery__item:nth-child(n) .media { aspect-ratio: 4 / 3; }
  .gallery__item:nth-child(7n+1) { margin: 0 calc(var(--gutter) * -1); }
  .gallery__item:nth-child(7n+1) .gallery__cap { padding: 0 var(--gutter); }
  .gallery__item:nth-child(7n+3), .gallery__item:nth-child(7n+5) { grid-column: 2 / -1; }
  .gallery__item:nth-child(7n+3) .media, .gallery__item:nth-child(7n+5) .media { aspect-ratio: 4 / 5; }
  .gallery__btn:hover .media { opacity: 1; }
}

/* ---------- Lightbox ---------- */
.lightbox {
  position: fixed; inset: 0; z-index: 200;
  display: flex; align-items: center; justify-content: center;
  background: rgba(6, 5, 5, .985);
  opacity: 0; visibility: hidden;
  transition: opacity .45s var(--ease), visibility 0s linear .45s;
  touch-action: pan-y;
}
.lightbox.is-open { opacity: 1; visibility: visible; transition: opacity .45s var(--ease), visibility 0s; }
.lightbox__figure { margin: 0; max-width: min(92vw, 1400px); display: flex; flex-direction: column; align-items: center; }
.lightbox__img {
  max-width: 100%; max-height: calc(100vh - 170px); max-height: calc(100svh - 170px);
  width: auto; height: auto; object-fit: contain;
  transition: opacity .35s var(--ease);
}
.lightbox__img.is-changing { opacity: 0; }
.lightbox__cap { margin-top: 18px; display: flex; gap: 18px; align-items: baseline; }
.lightbox__cat { font-family: var(--f-en); font-size: 15px; letter-spacing: .24em; color: var(--c-text); }
.lightbox__ja { font-family: var(--f-mincho); font-size: 12px; letter-spacing: .2em; color: var(--c-text-sub); }
.lightbox__count { font-family: var(--f-en); font-size: 13px; letter-spacing: .2em; color: var(--c-gold); }

.lightbox__close {
  position: absolute; top: 16px; right: 16px;
  display: flex; align-items: center; gap: 12px; min-height: 48px; padding: 0 12px;
  font-family: var(--f-en); font-size: 13px; letter-spacing: .26em; color: var(--c-text-sub);
  transition: color .4s var(--ease);
}
.lightbox__close i { position: relative; width: 20px; height: 20px; }
.lightbox__close i::before, .lightbox__close i::after {
  content: ""; position: absolute; left: 0; top: 50%; width: 100%; height: 1px; background: currentColor;
}
.lightbox__close i::before { transform: rotate(45deg); }
.lightbox__close i::after  { transform: rotate(-45deg); }
.lightbox__nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 64px; height: 96px; display: flex; align-items: center; justify-content: center;
  color: var(--c-text-sub); transition: color .4s var(--ease);
}
.lightbox__nav svg { width: 22px; height: 44px; }
.lightbox__prev { left: 8px; }
.lightbox__next { right: 8px; }
.lightbox__close:hover, .lightbox__nav:hover { color: var(--c-gold); }
@media (max-width: 767px) {
  .lightbox__figure { max-width: 100vw; }
  .lightbox__img { max-height: calc(100svh - 200px); }
  .lightbox__nav { top: auto; bottom: 18px; transform: none; width: 60px; height: 60px; }
  .lightbox__nav svg { width: 14px; height: 28px; }
  .lightbox__prev { left: calc(50% - 90px); }
  .lightbox__next { right: calc(50% - 90px); }
}

/* =========================================================
   ACCESS
   ========================================================= */
.access {
  max-width: var(--maxw); margin: 0 auto; padding: 0 var(--gutter);
  display: grid; grid-template-columns: 5fr 7fr; gap: clamp(40px, 6vw, 90px); align-items: start;
}
.access__name { font-family: var(--f-mincho); font-size: 22px; letter-spacing: .2em; }
.access__name-en { margin-top: 4px; font-family: var(--f-en); font-size: 13px; letter-spacing: .3em; color: var(--c-gold); }
.info-list { margin-top: 36px; border-top: 1px solid var(--c-border); }
.info-list__row { display: grid; grid-template-columns: 7.5em 1fr; gap: 16px; padding: 20px 0; border-bottom: 1px solid var(--c-border); }
.info-list dt { font-family: var(--f-en); font-size: 13px; letter-spacing: .24em; color: var(--c-gold); padding-top: 2px; }
.info-list dd { font-size: 15px; line-height: 1.9; }
.info-list dd a { border-bottom: 1px solid var(--c-gold-line); }
.access__btn { margin-top: 40px; }
.access__visual .media { aspect-ratio: 4 / 3; }
.access__map {
  margin-top: clamp(16px, 2vw, 24px); aspect-ratio: 16 / 10; border: 1px solid var(--c-border);
  background: var(--c-charcoal-2);
}
.access__map iframe {
  display: block; width: 100%; height: 100%; border: 0;
  filter: grayscale(1) invert(.92) contrast(.88) brightness(.95); /* 夜の雰囲気に合わせた暗い地図 */
}
@media (max-width: 900px) {
  .access { grid-template-columns: 1fr; }
  .access__btn .btn { width: 100%; }
}

/* =========================================================
   CONTACT
   ========================================================= */
.contact { max-width: 760px; margin: 0 auto; padding: 0 var(--gutter); text-align: center; }
.contact__lead { margin-bottom: clamp(48px, 7vw, 72px); }
.contact__list { display: grid; gap: 20px; }
.contact-card {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: 10px;
  padding: clamp(36px, 6vw, 56px) 24px;
  background: var(--c-charcoal); border: 1px solid var(--c-border);
  transition: border-color .5s var(--ease), background-color .5s var(--ease);
}
.contact-card:hover { border-color: var(--c-gold-line); background: var(--c-charcoal-2); }
.contact-card__label { font-family: var(--f-en); font-size: 14px; letter-spacing: .34em; color: var(--c-gold); }
.contact-card__value { font-family: var(--f-en); font-size: clamp(28px, 5vw, 40px); letter-spacing: .12em; line-height: 1.3; }
.contact-card__note { font-size: 12px; color: var(--c-text-dim); }
.contact__empty {
  padding: clamp(40px, 7vw, 64px) 24px;
  border-top: 1px solid var(--c-border); border-bottom: 1px solid var(--c-border);
}
.contact__empty p { font-family: var(--f-mincho); letter-spacing: .14em; color: var(--c-text-sub); line-height: 2.2; }
.contact__empty .btn { margin-top: 36px; }
@media (max-width: 480px) {
  .contact__empty p, .page-cta__text { font-size: 13px; letter-spacing: .06em; }
}

/* ---------- CONTACT：電話番号・LINEボタン ---------- */
.contact-tel__num { font-size: clamp(30px, 6vw, 44px); white-space: nowrap; }
.contact-line {
  display: flex; flex-direction: column; align-items: center; gap: 18px;
  padding: clamp(36px, 6vw, 56px) 24px;
  background: var(--c-charcoal); border: 1px solid var(--c-border);
}
.contact-line__btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 18px;
  width: min(100%, 360px); min-height: 60px; padding: 0 28px;
  border: 1px solid var(--c-gold-soft);
  background: rgba(91, 28, 38, .38); /* 深いワインレッド */
  color: var(--c-text);
  font-family: var(--f-mincho); font-size: 16px; letter-spacing: .16em;
  transition: background-color .5s var(--ease), border-color .5s var(--ease), color .5s var(--ease);
}
.contact-line__btn .btn__arrow { color: var(--c-gold); }
.contact-line__btn:hover { background: rgba(91, 28, 38, .6); border-color: var(--c-gold); color: var(--c-gold); }
.contact-line__btn:hover .btn__arrow { width: 40px; }
.contact-line__btn.is-disabled {
  opacity: .42; cursor: not-allowed; pointer-events: none;
  background: transparent; border-color: var(--c-gold-line);
}
@media (max-width: 480px) {
  .contact-line__btn { font-size: 15px; letter-spacing: .1em; }
}

/* ---------- CONTACT：赤・ワインレッド系の配色（2026-10 更新） ---------- */
.contact-tel,
.contact-line {
  background: rgba(91, 28, 38, .20);
  border-color: rgba(150, 52, 64, .45);
}
.contact-tel::before,
.contact-line::before { /* 内側の細いライン */
  content: ""; position: absolute; inset: 8px; pointer-events: none;
  border: 1px solid rgba(201, 174, 128, .12);
}
.contact-line { position: relative; }
.contact-tel:hover { background: rgba(91, 28, 38, .34); border-color: rgba(176, 64, 78, .7); }
.contact-tel .contact-card__label,
.contact-line .contact-card__label { color: #d48a8f; } /* 落ち着いたローズレッド */
.contact-tel__num { color: var(--c-text); }
.contact-tel .contact-card__note,
.contact-line .contact-card__note { color: #a98a86; font-size: 13px; }
.contact-line__btn {
  background: #5b1c26; border-color: rgba(201, 174, 128, .55); color: #f1e6da;
}
.contact-line__btn:hover { background: #722431; border-color: var(--c-gold); color: #fff6ec; }
.contact-line__btn.is-disabled { opacity: .5; background: rgba(91, 28, 38, .45); border-color: rgba(201, 174, 128, .25); }
@media (max-width: 480px) {
  .contact-tel .contact-card__note, .contact-line .contact-card__note { letter-spacing: .02em; }
}


/* ---------- CONTACT：LINE と Instagram を横並び（スマホは縦並び） ---------- */
.contact__sns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.contact__sns .contact-line { padding-left: 20px; padding-right: 20px; }
.contact__sns .contact-line__btn { width: 100%; padding: 0 20px; gap: 14px; font-size: 15px; letter-spacing: .1em; }
@media (max-width: 640px) {
  .contact__sns { grid-template-columns: 1fr; }
}


/* ---------- GALLERY：実際の写真に合わせた枠の比率（2026-10） ---------- */
/* 5枚目は横長写真のため、縦長枠 → 横長枠に（位置・幅はそのまま） */
.gallery__item:nth-child(7n+5) .media { aspect-ratio: 4 / 3; }
/* 7枚目：21:9 だと上下が切れすぎるため 16:9 に（位置・幅はそのまま） */
.gallery__item:nth-child(7n+7) .media { aspect-ratio: 16 / 9; }
@media (max-width: 767px) {
  .gallery__item:nth-child(7n+7) .media { aspect-ratio: 4 / 3; }
  .gallery__item:nth-child(7n+5) .media { aspect-ratio: 4 / 3; }
  .gallery__item:nth-child(7n+3) .media { aspect-ratio: 3 / 4; } /* 縦長の入口写真はそのままの比率で */
}

/* 1枚目（文字入りの写真）：スマホでは左右の文字が切れないよう写真の比率どおりに表示 */
@media (max-width: 767px) {
  .gallery__item:nth-child(1) .media { aspect-ratio: 3 / 2; }
}


/* ---------- ACCESS：写真なし（地図のみ）のレイアウト（2026-10） ---------- */
.access__visual .access__map:first-child { margin-top: 0; }
.access { align-items: center; }
.access__map { aspect-ratio: 4 / 3; }
@media (max-width: 900px) {
  .access { align-items: start; }
  .access__map { aspect-ratio: 4 / 3; }
}


/* ---------- ACCESS：Googleマップ（航空写真）（2026-10） ---------- */
.access__map-cap { display: flex; align-items: baseline; gap: 14px; margin-bottom: 14px; }
.access__map-cap-en { font-family: var(--f-en); font-size: 14px; letter-spacing: .3em; color: var(--c-gold); }
.access__map-cap-ja { font-family: var(--f-mincho); font-size: 12px; letter-spacing: .2em; color: var(--c-text-sub); }
.access__visual .access__map {
  position: relative; margin-top: 0; width: 100%; max-width: 100%; aspect-ratio: 4 / 3;
  border: 1px solid rgba(150, 52, 64, .55); background: var(--c-charcoal-2); overflow: hidden;
}
.access__visual .access__map::after { /* 内側の細いゴールドライン */
  content: ""; position: absolute; inset: 6px; pointer-events: none; z-index: 2;
  border: 1px solid rgba(201, 174, 128, .28);
}
.access__map iframe { filter: none; position: absolute; inset: 0; width: 100%; height: 100%; }
.access__map-link { /* 地図全体をタップするとGoogleマップへ */
  position: absolute; inset: 0; z-index: 1;
  display: flex; align-items: flex-start; justify-content: flex-end; padding: 16px; /* 右上：Googleの表記や操作ボタンと重ならない位置 */
}
.access__map-link-label {
  font-family: var(--f-mincho); font-size: 13px; letter-spacing: .12em; color: #f1e6da;
  padding: 8px 16px; background: rgba(60, 16, 24, .88); border: 1px solid var(--c-gold-soft);
  transition: background-color .4s var(--ease), border-color .4s var(--ease);
}
.access__map-link:hover .access__map-link-label { background: rgba(114, 36, 49, .95); border-color: var(--c-gold); }
.access__map-link:focus-visible { outline: 1px solid var(--c-gold); outline-offset: -8px; }
@media (max-width: 900px) {
  .access__visual { margin-top: 8px; }
}
@media (max-width: 767px) {
  .access__visual .access__map { aspect-ratio: 1 / 1; }
  .access__map-link { padding: 12px; }
  .access__map-link-label { font-size: 13px; padding: 8px 14px; }
}


/* ---------- GALLERY：写真構成の見直しに合わせた比率（2026-10-06） ---------- */
/* 6枚目・7枚目は横長（16:9）の写真なので、写真どおりの比率で表示 */
.gallery__item:nth-child(7n+6) .media { aspect-ratio: 16 / 9; }
.gallery__item:nth-child(7n+6) { align-self: center; }
@media (max-width: 767px) {
  .gallery__item:nth-child(7n+6) .media,
  .gallery__item:nth-child(7n+7) .media { aspect-ratio: 16 / 9; }
}


/* ---------- CONTACT：LINEボタン（アイコン付き／2026-10） ---------- */
.contact-line__btn--line { gap: 12px; min-height: 60px; }
.contact-line__icon { flex: none; width: 26px; height: 26px; color: var(--c-gold); transition: color .4s var(--ease); }
.contact-line__btn--line:hover .contact-line__icon { color: #f3dcae; }
@media (max-width: 640px) {
  .contact-line__btn--line { min-height: 60px; font-size: 15px; }
}
.contact-line__btn--line { padding: 0 14px; gap: 10px; letter-spacing: .04em; white-space: nowrap; }
.contact-line__btn--line .btn__arrow { width: 22px; flex: none; }
.contact-line__btn--line:hover .btn__arrow { width: 30px; }
@media (max-width: 360px) {
  .contact-line__btn--line { font-size: 14px; letter-spacing: 0; gap: 8px; }
  .contact-line__icon { width: 22px; height: 22px; }
}

/* ---------- CONTACT：Instagramボタン（LINEボタンとそろえる／2026-10） ---------- */
.contact-line__btn--ig .contact-line__icon { width: 24px; height: 24px; }
