/* ============================================================
   嘉村美容室  |  佐賀・三瀬
   Mobile-first / 〜767px / 768〜1024px / 1025px〜
============================================================ */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --ivory:    #FAFAF5;
  --natural:  #F5F0E8;
  --beige:    #EDE6D8;
  --beige-dk: #DDD3C4;
  --green:    #4B6742;
  --green-lt: #EFF4EB;
  --brown:    #7A5C50;
  --text:     #231709;
  --text-2:   #6A5646;
  --text-3:   #A89080;
  --line:     #06C755;
  --white:    #FFFFFF;
  --bd:       #DDD3C4;
  --bd-lt:    #EDE8E0;
  --sh:       0 2px 22px rgba(35,23,9,.08);
  --sh-sm:    0 1px 8px rgba(35,23,9,.06);
}

html {
  font-size: 17px;
  scroll-behavior: smooth;
  scroll-padding-top: 64px;
}
body {
  font-family: 'Noto Sans JP', 'Hiragino Kaku Gothic ProN', sans-serif;
  background: var(--ivory);
  color: var(--text);
  line-height: 2.0;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img  { max-width: 100%; height: auto; display: block; }
a    { color: inherit; text-decoration: none; }
ul   { list-style: none; }
button { font-family: inherit; cursor: pointer; border: none; background: none; }

/* ─── Layout ─── */
.wrap    { max-width: 960px; margin-inline: auto; padding-inline: clamp(20px,4.5vw,32px); }
.wrap-sm { max-width: 660px; margin-inline: auto; padding-inline: clamp(20px,4.5vw,32px); }

/* ─── Section heading ─── */
.sec-hd { text-align: center; margin-bottom: 56px; }
.sec-hd--l { text-align: left; }
.sec-ttl {
  font-family: 'Shippori Mincho B1', 'Noto Serif JP', serif;
  font-size: clamp(1.35rem, 3.8vw, 1.9rem);
  font-weight: 600;
  color: var(--text);
  letter-spacing: .10em;
  line-height: 1.6;
  display: inline-block;
  padding-bottom: 18px;
  position: relative;
}
/* 温かみのあるベージュ線（グリーン廃止） */
.sec-ttl::after {
  content: '';
  position: absolute;
  bottom: 0; left: 50%; transform: translateX(-50%);
  width: 36px; height: 1px;
  background: var(--bd);
  opacity: .8;
}
.sec-hd--l .sec-ttl::after {
  left: 0; transform: none;
  background: var(--green);
  opacity: .45;
}
.sec-sub {
  display: block;
  margin-top: 16px;
  font-size: .88rem;
  color: var(--text-3);
  line-height: 2.0;
  letter-spacing: .04em;
}

/* スマホ専用改行（PC では非表示） */
.sp-br { display: none; }

/* ─── Fade-in ─── */
.fi {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .7s ease, transform .7s ease;
}
.fi.d1 { transition-delay: .12s; }
.fi.d2 { transition-delay: .24s; }
.fi.on { opacity: 1; transform: none; }


/* ============================================================
   HEADER
============================================================ */
.hdr {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  height: 64px;
  background: rgba(250,249,244,.95);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(221,211,196,.40);
  transition: box-shadow .35s;
}
.hdr.scrolled { box-shadow: 0 1px 16px rgba(35,23,9,.08); }
.hdr-in {
  max-width: 960px;
  margin-inline: auto;
  padding-inline: clamp(20px,4.5vw,32px);
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.logo {
  display: flex; flex-direction: column; gap: 3px; flex-shrink: 0;
}
.logo-ja {
  font-family: 'Shippori Mincho B1', 'Noto Serif JP', serif;
  font-size: 1rem; font-weight: 600;
  color: var(--text); letter-spacing: .18em; line-height: 1;
}
.logo-en {
  font-size: .44rem; letter-spacing: .22em;
  color: var(--text-3); line-height: 1; text-transform: uppercase;
}

.hnav { display: flex; align-items: center; gap: 1px; }
.hnav a {
  font-size: .78rem; font-weight: 500; color: var(--text-2);
  padding: 7px 11px; border-radius: 4px;
  letter-spacing: .04em; transition: color .2s, background .2s; white-space: nowrap;
}
.hnav a:hover { color: var(--green); background: var(--green-lt); }

.hbtn {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--green); color: var(--white);
  font-size: .80rem; font-weight: 700;
  padding: 9px 16px; border-radius: 4px;
  white-space: nowrap; transition: background .2s;
}
.hbtn:hover { background: #3c5433; }
.hbtn svg { display: block; flex-shrink: 0; }

.ham {
  display: none; flex-direction: column; gap: 5px;
  padding: 6px; min-width: 36px; align-items: center;
}
.ham span {
  display: block; width: 22px; height: 1.5px;
  background: var(--text); border-radius: 2px; transition: all .3s;
}
.ham.open span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
.ham.open span:nth-child(2) { opacity: 0; }
.ham.open span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

.mnav {
  display: none; position: fixed;
  top: 64px; left: 0; right: 0; bottom: 0;
  background: var(--ivory); z-index: 99;
  padding: 28px clamp(20px,4.5vw,32px);
  flex-direction: column; overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.mnav.open { display: flex; }
.mnav a {
  display: block; padding: 20px 4px; font-size: 1.05rem;
  color: var(--text); border-bottom: 1px solid var(--bd-lt);
  letter-spacing: .05em; transition: color .2s;
}
.mnav a:hover { color: var(--green); }
.mnav-ctas { margin-top: 24px; display: flex; flex-direction: column; gap: 10px; }
.mnav-btn {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  font-size: 1rem; font-weight: 700;
  font-family: 'Noto Sans JP', sans-serif;
  padding: 18px; border-radius: 6px; min-height: 58px;
  letter-spacing: .04em; color: var(--white);
}
.mnav-btn svg { display: block; flex-shrink: 0; }
.mnav-btn--tel { background: var(--green); }
.mnav-btn--tel:hover { background: #3c5433; }
.mnav-btn--line { background: var(--line); }
.mnav-btn--line:hover { background: #04a847; }
/* LINE icon SVG */
.line-icon { display: block; flex-shrink: 0; }

@media (max-width: 860px) {
  .hnav, .hbtn { display: none; }
  .ham { display: flex; }
}


/* ============================================================
   HERO  — 左テキスト / 右写真
============================================================ */
.hero {
  position: relative; overflow: hidden; background: var(--ivory);
}
.hero-inner {
  display: flex; min-height: 100svh; min-height: 100vh;
}

.hero-photo {
  position: absolute; top: 0; right: 0; bottom: 0; left: 38%; overflow: hidden;
}
.hero-photo img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: 65% 15%; display: block;
}
.hero-photo::after {
  content: '';
  position: absolute; top: 0; left: 0; right: 0; height: 110px;
  background: linear-gradient(to bottom, rgba(250,249,244,.22) 0%, transparent 100%);
  pointer-events: none;
}

.hero-content {
  position: relative; z-index: 2;
  flex: 0 0 60%;
  display: flex; flex-direction: column; justify-content: center;
  padding: clamp(88px,12vh,120px) clamp(28px,4.5vw,64px) clamp(56px,9vh,88px) clamp(28px,4.5vw,72px);
  background: linear-gradient(to right,
    rgba(250,249,244,1.00)  0%,
    rgba(250,249,244,0.99) 55%,
    rgba(250,249,244,0.80) 80%,
    rgba(250,249,244,0.00) 100%
  );
  min-height: 100%;
}

.hero-vert {
  position: absolute; left: clamp(8px,1.8vw,14px);
  top: 50%; transform: translateY(-50%);
  writing-mode: vertical-lr; text-orientation: mixed;
  font-size: .38rem; letter-spacing: .36em;
  color: var(--text-3); opacity: 0.30;
  font-family: 'Noto Serif JP', serif; font-weight: 300;
  pointer-events: none; user-select: none;
}

.hero-brand { margin-bottom: clamp(22px,3.5vh,36px); }
.hero-brand-ja {
  font-family: 'Shippori Mincho B1', serif;
  font-size: clamp(.88rem, 1.6vw, 1.18rem); font-weight: 400;
  color: var(--text-2); letter-spacing: .28em; display: block; line-height: 1.2; margin-bottom: 7px;
}
.hero-brand-en {
  font-size: .38rem; letter-spacing: .30em; color: var(--text-3);
  font-family: 'Noto Sans JP', sans-serif; font-weight: 400; display: block; text-transform: uppercase;
}

/* ナチュラルブラウンの区切りライン */
.hero-div {
  width: 24px; height: 1px;
  background: var(--brown); opacity: .35;
  margin: clamp(18px,3vh,26px) 0;
}

.hero-copy-wrap { margin-bottom: clamp(20px,3.5vh,30px); }
.hero-loc-line {
  display: block;
  font-family: 'Noto Serif JP', serif;
  font-size: clamp(.70rem, 1.2vw, .84rem);
  color: var(--text-3); letter-spacing: .16em;
  margin-bottom: clamp(12px,2.2vh,18px); font-weight: 300;
}
.hero-main-copy {
  font-family: 'Shippori Mincho B1', 'Noto Serif JP', serif;
  font-size: clamp(2.6rem, 5.0vw, 4.2rem); font-weight: 400;
  color: var(--text); letter-spacing: .05em; line-height: 1.5;
}

.hero-sub-copy {
  font-family: 'Noto Serif JP', serif;
  font-size: clamp(.84rem, 1.3vw, .96rem);
  color: var(--text-2); line-height: 2.2;
  letter-spacing: .06em; font-weight: 300;
  margin-bottom: clamp(32px,5vh,44px); max-width: 320px;
}

.hero-btns { display: flex; gap: 10px; flex-wrap: wrap; }
.btn-tel {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  background: var(--green); color: var(--white);
  font-family: 'Noto Sans JP', sans-serif;
  font-size: .92rem; font-weight: 700;
  padding: 16px 28px; border-radius: 4px;
  min-height: 58px; min-width: 148px;
  letter-spacing: .04em; white-space: nowrap;
  transition: background .22s, transform .22s, box-shadow .22s;
  box-shadow: 0 2px 16px rgba(75,103,66,.24);
}
.btn-tel svg { display: block; flex-shrink: 0; }
.btn-tel:hover { background: #3c5433; transform: translateY(-2px); box-shadow: 0 6px 22px rgba(75,103,66,.30); }
.btn-line {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  background: var(--line); color: var(--white);
  font-family: 'Noto Sans JP', sans-serif;
  font-size: .92rem; font-weight: 700;
  padding: 16px 28px; border-radius: 4px;
  min-height: 58px; min-width: 148px;
  letter-spacing: .04em; white-space: nowrap;
  transition: background .22s, transform .22s;
  box-shadow: 0 2px 16px rgba(6,199,85,.22);
}
.btn-line:hover { background: #04a847; transform: translateY(-2px); }
.btn-line svg, .btn-line .line-icon { display: block; flex-shrink: 0; }

.hero-plant {
  position: absolute; bottom: 0; left: clamp(18px,3.5vw,44px);
  width: clamp(56px,6vw,84px); opacity: 0.42;
  pointer-events: none; user-select: none;
}
.hero-plant svg { display: block; width: 100%; height: auto; }

/* モバイル: テキストと画像を重ねる（PC世界観を維持） */
@media (max-width: 767px) {
  .hero { padding-top: 64px; }
  .hero-inner {
    flex-direction: column;
    min-height: 62svh;
    min-height: 62vh;
    position: relative;
  }
  .hero-photo {
    position: absolute; inset: 0;
    width: auto; height: auto;
    flex-shrink: 0; order: auto;
  }
  .hero-inner::after {
    content: '';
    position: absolute; inset: 0; z-index: 1; pointer-events: none;
    background: linear-gradient(
      to bottom,
      rgba(250,249,244,0.05) 0%,
      rgba(250,249,244,0.20) 35%,
      rgba(250,249,244,0.75) 62%,
      rgba(250,249,244,0.95) 85%,
      rgba(250,249,244,1.00) 100%
    );
  }
  .hero-content {
    flex: none; width: 100%; min-height: auto;
    background: transparent;
    padding: clamp(20vh,24vh,28vh) clamp(20px,5.5vw,28px) clamp(16px,2vh,24px);
    order: 1; z-index: 2;
  }
  .hero-copy-wrap { transform: translateY(-16px); }
  .hero-photo::after { height: 80px; }
  .hero-brand-ja { font-size: .92rem; }
  .hero-main-copy { font-size: clamp(2.1rem, 8.5vw, 2.8rem); line-height: 1.42; }
  .hero-sub-copy { max-width: 100%; font-size: clamp(.82rem, 3.8vw, .92rem); margin-bottom: 30px; }
  .hero-vert, .hero-plant { display: none; }
}
@media (max-width: 480px) {
  .hero-btns { flex-direction: row; gap: 8px; }
  .btn-tel, .btn-line { flex: 1; min-width: 0; width: auto; font-size: .78rem; padding: 12px 8px; }
}


/* ============================================================
   CONCEPT STRIP — アイコン廃止、テキストのみ
============================================================ */
.strip {
  background: var(--natural);
  border-top: 1px solid var(--bd-lt);
  border-bottom: 1px solid var(--bd-lt);
  padding: 30px clamp(20px,4.5vw,32px);
}
.strip-list {
  max-width: 760px; margin-inline: auto;
  display: flex; justify-content: center;
}
.si {
  flex: 1; min-width: 0; text-align: center;
  padding: 14px 20px; position: relative;
}
.si + .si::before {
  content: '';
  position: absolute; left: 0; top: 50%; transform: translateY(-50%);
  width: 1px; height: 28px; background: var(--beige-dk); opacity: .7;
}
.si-ico {
  display: flex; align-items: center; justify-content: center;
  width: 36px; height: 36px; margin: 0 auto 10px;
  color: var(--brown); opacity: .75;
}
.si-ico svg { display: block; }
.si-ttl {
  font-family: 'Shippori Mincho B1', 'Noto Serif JP', serif;
  font-size: .90rem; font-weight: 600; color: var(--text);
  letter-spacing: .12em; display: block; margin-bottom: 6px;
}
.si-sub { font-size: .72rem; color: var(--text-3); letter-spacing: .05em; display: block; line-height: 1.7; }

@media (max-width: 480px) {
  .strip-list { gap: 0; }
  .si { padding: 12px 8px; }
  .si-sub { display: none; }
}


/* ============================================================
   ABOUT
============================================================ */
.about { padding: clamp(72px,10vw,104px) 0; background: var(--ivory); }
.about-grid {
  display: grid; grid-template-columns: 1fr; gap: 40px; align-items: center;
}
@media (min-width: 768px) {
  .about-grid { grid-template-columns: 1fr 1fr; gap: clamp(36px,5vw,64px); }
}

.aph {
  border-radius: 10px; overflow: hidden; aspect-ratio: 3/2;
  box-shadow: var(--sh); max-width: 340px; width: 100%; margin-inline: auto;
}
.aph img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (min-width: 768px) { .aph { max-width: none; aspect-ratio: 4/5; } }

.sec-label {
  display: block; font-size: .68rem; letter-spacing: .22em;
  color: var(--text-3); text-transform: uppercase;
  font-family: 'Noto Sans JP', sans-serif; font-weight: 400;
  margin-bottom: 10px;
}
.about-more {
  display: inline-flex; align-items: center; gap: 6px;
  margin-top: 28px; padding: 12px 24px;
  border: 1px solid var(--bd); border-radius: 4px;
  font-size: .84rem; color: var(--text-2); letter-spacing: .06em;
  transition: background .2s, color .2s;
}
.about-more:hover { background: var(--green); color: var(--white); border-color: var(--green); }
.about-txt .sec-hd--l { margin-bottom: 22px; }
.about-txt p { font-size: .94rem; color: var(--text-2); line-height: 2.15; }
.about-txt p + p { margin-top: 14px; }

/* フィーチャーリスト — 緑ドット廃止、シンプルな罫線リスト */
.afeats {
  margin-top: 30px;
  list-style: none;
  border-top: 1px solid rgba(221,208,196,.5);
}
.afeats li {
  display: flex; flex-direction: column; gap: 3px;
  padding: 14px 0;
  border-bottom: 1px solid rgba(221,208,196,.5);
}
.afeats li strong {
  font-size: .92rem; font-weight: 700; color: var(--text); letter-spacing: .04em;
}
.afeats li span {
  font-size: .82rem; color: var(--text-2); letter-spacing: .03em; line-height: 1.8;
}


/* ============================================================
   MENU
============================================================ */
.menu { padding: clamp(72px,10vw,104px) 0; background: var(--white); }

/* モバイルサムネイルリスト（767px以下のみ表示） */
.menu-list { display: none; }
@media (max-width: 767px) {
  .menu-list { display: flex; flex-direction: column; gap: 0; }
  .menu-grid { display: none; }
}
.ml-item {
  display: flex; gap: 14px; align-items: flex-start;
  padding: 18px 0; border-bottom: 1px solid var(--bd-lt);
  color: inherit; text-decoration: none;
  transition: background .15s;
}
.ml-item:first-of-type { border-top: 1px solid var(--bd-lt); }
.ml-thumb {
  width: 88px; height: 88px; flex-shrink: 0;
  border-radius: 6px; overflow: hidden;
}
.ml-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ml-body { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 0; }
.ml-cat {
  font-family: 'Shippori Mincho B1', 'Noto Serif JP', serif;
  font-size: .92rem; font-weight: 600; color: var(--text); letter-spacing: .06em;
}
.ml-desc { font-size: .78rem; color: var(--text-2); line-height: 1.75; }
.ml-price {
  font-family: 'Noto Serif JP', serif;
  font-size: .90rem; font-weight: 600; color: var(--brown); margin-top: 2px;
}
.ml-more {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  margin-top: 20px; padding: 14px 24px;
  border: 1px solid var(--bd); border-radius: 4px;
  font-size: .84rem; color: var(--text-2); letter-spacing: .06em;
  transition: background .2s, color .2s;
}
.ml-more:hover { background: var(--green); color: var(--white); border-color: var(--green); }

.menu-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
@media (min-width: 1025px) { .menu-grid { grid-template-columns: repeat(3, 1fr); gap: 16px; } }

.mc {
  background: var(--ivory); border-radius: 8px;
  padding: 22px 18px; border: 1px solid var(--bd-lt);
  transition: box-shadow .22s;
  min-width: 0;
}
.mc:hover { box-shadow: var(--sh-sm); }
@media (min-width: 768px) { .mc { padding: 26px 22px; } }
.mc-head {
  display: flex; align-items: center; gap: 8px;
  padding-bottom: 12px; margin-bottom: 14px;
  border-bottom: 1px solid var(--bd-lt);
}
.mc-ico {
  width: 22px; height: 22px;
  display: flex; align-items: center; justify-content: center;
  color: var(--brown); flex-shrink: 0;
}
.mc-ico svg { display: block; }
.mc-cat {
  font-family: 'Shippori Mincho B1', 'Noto Serif JP', serif;
  font-size: .88rem; font-weight: 600; color: var(--text); letter-spacing: .10em;
}
.mc-items { display: flex; flex-direction: column; gap: 0; }
.mci {
  display: flex; justify-content: space-between; align-items: baseline;
  gap: 8px; padding: 9px 0;
  border-bottom: 1px solid rgba(221,208,196,.4); min-width: 0;
}
.mci:last-child { border-bottom: none; }
.mci-name { font-size: .84rem; color: var(--text-2); line-height: 1.6; flex: 1; min-width: 0; }
.mci-price {
  font-family: 'Noto Serif JP', serif;
  font-size: .90rem; font-weight: 600; color: var(--brown);
  white-space: nowrap; flex-shrink: 0;
}
.menu-note {
  grid-column: 1 / -1; margin-top: 6px;
  font-size: .76rem; color: var(--text-3); line-height: 1.9;
  padding-top: 14px; border-top: 1px solid var(--bd-lt);
}
.menu-catch {
  font-size: .86rem; color: var(--text-2); line-height: 1.9;
  text-align: center; margin-top: 10px; letter-spacing: .02em;
}


/* ============================================================
   GALLERY
============================================================ */
.gallery { background: #1A1008; overflow: hidden; }
.gl-head {
  padding: clamp(56px,8vw,76px) clamp(20px,4.5vw,32px) clamp(28px,4.5vw,40px);
  text-align: center;
}
@media (max-width: 767px) {
  .gl-head { padding: clamp(40px,6vw,52px) clamp(20px,4.5vw,32px) clamp(20px,4vw,32px); }
}
.gl-ttl {
  font-family: 'Shippori Mincho B1', 'Noto Serif JP', serif;
  font-size: clamp(1.3rem, 3.8vw, 1.85rem);
  font-weight: 600; color: var(--white); letter-spacing: .10em;
  display: inline-block; padding-bottom: 18px; position: relative;
}
.gl-ttl::after {
  content: ''; position: absolute;
  bottom: 0; left: 50%; transform: translateX(-50%);
  width: 32px; height: 1px; background: rgba(255,255,255,.20);
}
.gl-grid {
  display: grid; grid-template-columns: repeat(2, 1fr);
  gap: 8px;
  padding: 0 clamp(10px,2.5vw,20px) clamp(20px,3.5vw,32px);
}
.gl-item:last-child:nth-child(odd) { grid-column: 1 / -1; aspect-ratio: 16/9; }
@media (min-width: 580px) {
  .gl-grid { grid-template-columns: repeat(3, 1fr); gap: 10px; }
  .gl-item:last-child:nth-child(odd) { grid-column: auto; aspect-ratio: 3/2; }
}
@media (min-width: 1025px) { .gl-grid { grid-template-columns: repeat(5, 1fr); } }

.gl-item {
  overflow: hidden; border-radius: 8px; aspect-ratio: 3/2; position: relative;
}
.gl-inner { width: 100%; height: 100%; position: relative; overflow: hidden; }
.gl-inner img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform .55s cubic-bezier(.25,.46,.45,.94);
}
.gl-item:hover .gl-inner img { transform: scale(1.05); }
.gl-cap {
  position: absolute; bottom: 0; left: 0; right: 0;
  background: linear-gradient(to top, rgba(0,0,0,.55) 0%, transparent 100%);
  padding: 28px 12px 11px;
  font-size: .64rem; font-weight: 500; color: rgba(255,255,255,.85);
  letter-spacing: .07em; pointer-events: none;
  opacity: 0; transition: opacity .3s;
}
.gl-item:hover .gl-cap { opacity: 1; }

.gl-label { color: var(--text-3); }
@media (max-width: 767px) { .gl-label { color: var(--text-3); } }

.gl-more { display: none; }
@media (max-width: 767px) {
  .gl-more {
    display: block; text-align: center;
    padding: clamp(24px,4vw,36px) 0 clamp(36px,5vw,52px);
  }
}
.gl-more-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 12px 32px; border: 1px solid var(--bd); border-radius: 4px;
  font-size: .84rem; color: var(--text-2); letter-spacing: .06em;
  transition: background .2s, color .2s;
}
.gl-more-btn:hover { background: var(--green); color: var(--white); border-color: var(--green); }

.bk-photo { display: none; }
@media (max-width: 767px) {
  .bk-photo {
    display: block; width: 100%; max-width: 100%;
    margin-top: 32px; border-radius: 8px; overflow: hidden;
    aspect-ratio: 4/3;
  }
  .bk-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
}


/* ============================================================
   こんな方へ — アイコン廃止、テキスト前面
============================================================ */
.forwhom { padding: clamp(72px,10vw,104px) 0; background: var(--natural); }
.fw-grid {
  display: grid; grid-template-columns: 1fr; gap: 10px;
}
@media (min-width: 580px) { .fw-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; } }

.fw-c {
  background: var(--white); border-radius: 8px;
  padding: 22px 22px; border: 1px solid var(--bd-lt);
  transition: background .2s;
  min-width: 0; box-sizing: border-box; overflow: hidden;
}
.fw-c:hover { background: var(--ivory); }
.fw-ttl {
  font-family: 'Shippori Mincho B1', 'Noto Serif JP', serif;
  font-size: .96rem; font-weight: 600; color: var(--text);
  display: block; margin-bottom: 8px; letter-spacing: .06em; line-height: 1.6;
  max-width: 100%; overflow-wrap: break-word;
}
.fw-sub {
  font-size: .84rem; color: var(--text-2); line-height: 1.95; display: block;
  max-width: 100%; overflow-wrap: break-word;
}


/* ============================================================
   FAQ
============================================================ */
.faq { padding: clamp(72px,10vw,104px) 0; background: var(--white); }
.faq-list { max-width: 660px; margin-inline: auto; }
.faq-item { border-bottom: 1px solid var(--bd-lt); }
.faq-item:first-child { border-top: 1px solid var(--bd-lt); }
.faq-q {
  display: flex; align-items: center; gap: 14px;
  padding: 22px 4px; cursor: pointer;
  user-select: none; -webkit-user-select: none;
}
.fq-q {
  width: 28px; height: 28px; border-radius: 50%;
  background: var(--green-lt);
  display: flex; align-items: center; justify-content: center;
  font-size: .74rem; font-weight: 700; color: var(--green); flex-shrink: 0;
}
.fq-t {
  font-size: .96rem; font-weight: 500; color: var(--text);
  flex: 1; line-height: 1.65; min-width: 0; transition: color .2s;
}
.fq-arr { font-size: .66rem; color: var(--text-3); flex-shrink: 0; transition: transform .3s; }
.faq-item.open .fq-arr { transform: rotate(180deg); color: var(--green); }
.faq-item.open .fq-t { color: var(--green); }
.faq-ans {
  display: none; padding: 0 4px 22px 42px;
  font-size: .90rem; color: var(--text-2); line-height: 2.1;
}
.faq-item.open .faq-ans { display: block; }


/* ============================================================
   ACCESS
============================================================ */
.access { padding: clamp(72px,10vw,104px) 0; background: var(--ivory); }
.ac-grid { display: grid; grid-template-columns: 1fr; gap: 20px; }
@media (min-width: 768px) { .ac-grid { grid-template-columns: 1fr 1fr; gap: 28px; align-items: start; } }

.map-ph {
  border-radius: 10px; overflow: hidden; aspect-ratio: 4/3;
  background: var(--beige);
  position: relative; box-shadow: var(--sh);
}
.map-img { width: 100%; height: 100%; object-fit: cover; display: block; }
.map-ph iframe { width: 100%; height: 100%; border: none; display: block; }
.map-link {
  display: inline-flex; align-items: center; gap: 5px;
  margin-top: 10px; font-size: .78rem; color: var(--text-2);
  text-decoration: none; letter-spacing: .03em;
  transition: color .2s;
}
.map-link:hover { color: var(--text); }
.map-overlay {
  position: absolute; bottom: 14px; left: 14px; z-index: 2; pointer-events: none;
}
.map-overlay-inner {
  display: inline-block;
  background: rgba(250,248,244,.94);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  border-radius: 6px; padding: 10px 16px;
}
.map-ttl { font-size: .82rem; font-weight: 700; color: var(--text); letter-spacing: .05em; display: block; }
.map-sub { font-size: .68rem; color: var(--text-3); line-height: 1.75; margin-top: 3px; display: block; }

.ac-info { display: flex; flex-direction: column; gap: 12px; }
.ib {
  background: var(--white); border-radius: 8px;
  padding: 22px 20px; border: 1px solid var(--bd-lt);
}
.ib-ttl {
  font-family: 'Shippori Mincho B1', 'Noto Serif JP', serif;
  font-size: .86rem; font-weight: 600; color: var(--text); letter-spacing: .08em;
  padding-bottom: 12px; margin-bottom: 14px;
  border-bottom: 1px solid var(--bd-lt);
  display: flex; align-items: center; gap: 7px;
}
.ib-ttl svg { color: var(--text-3); flex-shrink: 0; display: block; }
.ib-rows { display: flex; flex-direction: column; gap: 0; }
.ib-row {
  display: flex; gap: 12px; padding: 10px 0;
  border-bottom: 1px solid rgba(221,208,196,.4);
  font-size: .88rem; min-width: 0;
}
.ib-row:last-child { border-bottom: none; }
.ib-th { width: 72px; color: var(--text-3); font-weight: 600; flex-shrink: 0; line-height: 1.8; }
.ib-td { color: var(--text-2); line-height: 1.85; flex: 1; min-width: 0; }
.c-closed { color: #9B3A1A; font-weight: 700; }
.c-tel { color: var(--green); font-weight: 700; font-size: 1.06rem; }


/* ============================================================
   BOOKING CTA
============================================================ */
.booking {
  position: relative;
  background-image: url('../images/reservation-bg.jpg');
  background-size: cover; background-position: left center;
  padding: clamp(80px,12vw,112px) 0; text-align: center;
}
.booking::before {
  content: ''; position: absolute; inset: 0;
  background: rgba(12, 6, 1, 0.92); z-index: 0;
}
.booking .wrap { position: relative; z-index: 1; }

.bk-catch {
  font-family: 'Noto Serif JP', serif;
  font-size: .78rem; letter-spacing: .22em;
  color: rgba(255,255,255,.36); font-weight: 300;
  margin-bottom: 12px; display: block;
}
.bk-ttl {
  font-family: 'Shippori Mincho B1', 'Noto Serif JP', serif;
  font-size: clamp(1.5rem, 4.2vw, 2.3rem); font-weight: 600; color: var(--white);
  letter-spacing: .10em; line-height: 1.65; margin-bottom: 10px;
}
.bk-sub {
  font-size: .90rem; color: rgba(255,255,255,.34); margin-bottom: 44px; line-height: 2.0;
  font-family: 'Noto Serif JP', serif; font-weight: 300; letter-spacing: .04em;
}

.bk-tel {
  display: inline-flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 6px;
  background: var(--white); border-radius: 6px;
  padding: 26px clamp(24px,5vw,56px); margin-bottom: 14px;
  text-decoration: none;
  transition: transform .2s, box-shadow .2s;
  box-shadow: 0 4px 28px rgba(0,0,0,.28);
  min-width: min(320px, calc(100% - 40px));
  max-width: calc(100% - 32px);
}
.bk-tel:hover { transform: translateY(-2px); box-shadow: 0 8px 36px rgba(0,0,0,.36); }
.bk-tel-lbl {
  display: flex; align-items: center; gap: 6px;
  font-size: .72rem; font-weight: 600; color: var(--green);
  letter-spacing: .16em; text-transform: uppercase;
}
.bk-tel-lbl svg { display: block; flex-shrink: 0; }
.bk-tel-num {
  font-family: 'Noto Serif JP', serif;
  font-size: clamp(1.9rem, 6vw, 2.6rem); font-weight: 400;
  color: var(--text); letter-spacing: .04em; line-height: 1.2;
}
.bk-tel-note { font-size: .74rem; color: var(--text-3); letter-spacing: .04em; }

.bk-line {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  background: var(--line); color: var(--white);
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 1rem; font-weight: 700;
  padding: 18px clamp(24px,5vw,52px); border-radius: 6px;
  min-height: 58px;
  min-width: min(320px, calc(100% - 40px));
  max-width: calc(100% - 32px);
  letter-spacing: .04em;
  transition: background .2s, transform .2s;
  box-shadow: 0 4px 18px rgba(6,199,85,.24);
  text-decoration: none;
}
.bk-line:hover { background: #04a847; transform: translateY(-2px); }
.bk-line svg { display: block; flex-shrink: 0; }
.bk-note {
  margin-top: 24px; font-size: .74rem;
  color: rgba(255,255,255,.20); line-height: 2.0;
  font-family: 'Noto Serif JP', serif; font-weight: 300;
}


/* ============================================================
   FOOTER
============================================================ */
.foot { background: var(--natural); color: var(--text); padding: 56px 0 0; }
.foot-in {
  max-width: 960px; margin-inline: auto;
  padding: 0 clamp(20px,4.5vw,32px) 48px;
  display: grid; grid-template-columns: 1fr; gap: 28px;
  border-bottom: 1px solid rgba(255,255,255,.05);
}
@media (min-width: 600px) { .foot-in { grid-template-columns: 1fr 1fr; gap: 28px; } }
@media (min-width: 900px) { .foot-in { grid-template-columns: 1.8fr 1fr 1fr; gap: 40px; } }

.foot-name {
  font-family: 'Shippori Mincho B1', serif;
  font-size: 1rem; font-weight: 400; color: var(--white);
  letter-spacing: .20em; margin-bottom: 3px;
}
.foot-en {
  font-size: .44rem; letter-spacing: .18em;
  color: rgba(255,255,255,.18); margin-bottom: 14px; text-transform: uppercase;
}
.foot-copy { font-size: .82rem; color: var(--text-2); line-height: 2.0; margin-bottom: 16px; }
.foot-tel-lbl {
  display: flex; align-items: center; gap: 5px;
  font-size: .64rem; color: rgba(255,255,255,.18); margin-bottom: 3px;
}
.foot-tel-lbl svg { display: block; flex-shrink: 0; }
.foot-tel-num {
  font-family: 'Noto Serif JP', serif;
  font-size: 1.08rem; color: rgba(255,255,255,.52); letter-spacing: .06em;
}

.foot-col-ttl {
  font-size: .74rem; font-weight: 400; color: var(--text-3);
  letter-spacing: .1em; margin-bottom: 14px;
  padding-bottom: 8px; border-bottom: 1px solid rgba(255,255,255,.05);
}
.foot-col ul { display: flex; flex-direction: column; gap: 8px; }
.foot-col ul li a { font-size: .80rem; color: var(--text-2); transition: color .2s; }
.foot-col ul li a:hover { color: var(--text); }
.foot-inf {
  display: flex; gap: 8px; align-items: flex-start;
  font-size: .80rem; color: rgba(255,255,255,.24);
  margin-bottom: 8px; line-height: 1.85; min-width: 0;
}
.foot-inf svg { flex-shrink: 0; margin-top: 3px; display: block; }
.foot-sns {
  display: flex; gap: 16px; align-items: center;
  padding-top: 8px;
}
.foot-sns-ico {
  display: flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 50%;
  border: 1px solid var(--bd);
  color: var(--text-3);
  transition: color .2s, border-color .2s;
}
.foot-sns-ico:hover { color: var(--text); border-color: var(--bd); }
.foot-sns-ico svg { display: block; }

.foot-bottom {
  max-width: 960px; margin-inline: auto;
  padding: 18px clamp(20px,4.5vw,32px);
  font-size: .66rem; color: var(--text-3);
}


/* ============================================================
   固定CTAバー（スマホ・タブレット）
============================================================ */
.fixbar {
  display: none; position: fixed;
  bottom: 0; left: 0; right: 0; z-index: 200;
  background: rgba(250,250,245,.98);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border-top: 1px solid var(--bd);
  padding: 10px 12px; gap: 10px;
  box-shadow: 0 -2px 18px rgba(35,23,9,.10);
}
.fb-tel {
  flex: 1; min-width: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
  background: var(--green); border-radius: 5px;
  padding: 9px 4px; min-height: 48px;
  text-decoration: none; color: var(--white); transition: background .15s;
}
.fb-tel:active { background: #3c5433; }
.fb-line {
  flex: 1; min-width: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
  background: var(--line); border-radius: 5px;
  padding: 9px 4px; min-height: 48px;
  text-decoration: none; color: var(--white); transition: background .15s;
}
.fb-line:active { background: #04a847; }
.fb-ico { width: 22px; height: 22px; display: flex; align-items: center; justify-content: center; }
.fb-ico svg { display: block; }
.fb-lbl { font-size: .72rem; font-weight: 700; letter-spacing: .03em; white-space: nowrap; }

@media (max-width: 860px) {
  .fixbar { display: flex; }
  body { padding-bottom: 68px; }
}

/* ============================================================
   スクロールトップ
============================================================ */
.stb {
  position: fixed; bottom: 92px; right: 14px;
  width: 44px; height: 44px;
  background: var(--white); border: 1px solid var(--bd); border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; color: var(--text-3); box-shadow: var(--sh-sm);
  opacity: 0; pointer-events: none; transition: opacity .3s; z-index: 150;
  text-decoration: none;
}
.stb.vis { opacity: 1; pointer-events: auto; }
@media (min-width: 861px) { .stb { bottom: 24px; } }


/* ============================================================
   モバイル追加調整（767px以下）
============================================================ */
@media (max-width: 767px) {
  /* ② セクション縦余白調整 */
  .about,
  .menu,
  .forwhom,
  .faq,
  .access { padding-top: clamp(46px,7vw,60px); padding-bottom: clamp(46px,7vw,60px); }

  /* ① Hero CTA非表示（固定下CTAで代替） */
  .hero-btns { display: none; }

  /* ② Hero 小ロゴ・デバイダー・ロケーション非表示 */
  .hero-brand { display: none; }
  .hero-div { display: none; }
  .hero-loc-line { display: none; }

  /* ③ Hero サブコピー 改行修正 */
  .hero-sub-copy { font-size: clamp(.76rem, 3.4vw, .84rem); letter-spacing: .03em; }

  /* ⑤ About「詳しく見る」非表示 */
  .about-more { display: none; }

  /* ⑥ Menu「すべてのメニューを見る」非表示 */
  .ml-more { display: none; }

  /* ⑦ menu-note 改行改善（2行収束） */
  .menu-note { font-size: .70rem; letter-spacing: .02em; }

  /* メニューカード 1カラム化（スマホ：全品目表示） */
  .menu-list { display: none; }
  .menu-grid { display: grid; grid-template-columns: 1fr; gap: 14px; }
  .mc-cat { word-break: keep-all; }
  .mci { padding: 10px 0; }
  .mci-name { word-break: keep-all; }

  /* ⑧ Gallery「もっと見る」非表示 */
  .gl-more { display: none; }

  /* ② strip 詰め */
  .strip { padding-top: 14px; padding-bottom: 14px; }
  .si { padding: 8px 4px; }
  .si-ico { width: 28px; height: 28px; margin-bottom: 7px; }

  /* ④ Strip 1行表示 */
  .si-ttl { font-size: .68rem; letter-spacing: 0; white-space: nowrap; }
  /* ① Strip separator 窮屈感軽減 */
  .si + .si::before { height: 18px; opacity: .4; }

  /* Typography */
  body { line-height: 1.85; }
  .sec-hd { margin-bottom: 40px; }

  /* こんな方へ: やさしい見出し感・余白 */
  .forwhom { padding-top: 40px; }
  .forwhom .sec-hd { margin-bottom: 40px; }
  .forwhom .sec-sub {
    font-size: .96rem; letter-spacing: .05em; line-height: 1.8;
    color: var(--text);
  }
  /* カード */
  .fw-grid { gap: 14px; }
  .fw-c { border-radius: 10px; padding: 18px 16px; }
  .fw-sub { font-size: .82rem; line-height: 1.8; word-break: keep-all; overflow-wrap: break-word; white-space: normal; }
  /* 共通sec-sub */
  .sec-sub { font-size: .86rem; line-height: 1.9; word-break: keep-all; }
  /* スマホ専用改行 有効化 */
  .sp-br { display: inline; }
  /* About テキスト モバイル最適化 */
  .about-txt p { line-height: 1.95; }
  .about-txt p + p { margin-top: 20px; }

  /* Menu左右反転 */
  .ml-item { flex-direction: row-reverse; }
  /* メニューリスト 説明文 */
  .ml-desc { font-size: .82rem; line-height: 1.85; word-break: keep-all; }

  /* ③ Booking余白調整 */
  .booking { padding: 44px 0; }
  .bk-catch { margin-bottom: 8px; }
  .bk-ttl { margin-bottom: 6px; }
  .bk-sub { margin-bottom: 28px; }

  /* ④ Gallery モバイルライト化 */
  .gallery { background: var(--natural); }
  .gl-ttl { color: var(--text); }
  .gl-ttl::after { background: var(--bd); }
  .gl-cap { color: rgba(35,23,9,.75); }

  /* ⑤ Booking モバイルライト化 */
  .booking { background-image: none; background-color: #EEE5DA; }
  .booking::before { display: none; }
  .bk-catch { color: var(--text-3); }
  .bk-ttl { color: var(--text); }
  .bk-sub { color: var(--text-2); }
  .bk-note { color: var(--text-3); }

  /* ⑥ Booking 電話ボタン → ブラウン塗り */
  .bk-tel {
    background: var(--brown); border-radius: 6px;
    flex-direction: row; gap: 10px;
    padding: 18px clamp(20px,5vw,40px);
    box-shadow: 0 2px 12px rgba(122,92,80,.20);
  }
  .bk-tel-lbl { color: var(--white); font-size: .92rem; font-weight: 700; letter-spacing: .04em; }
  .bk-tel-lbl svg { stroke: var(--white); }
  .bk-tel-num { display: none; }
  .bk-tel-note { display: none; }

  /* ⑦ Booking LINE ボタン → 白枠 */
  .bk-line {
    background: var(--white); color: var(--brown);
    border: 1.5px solid var(--brown);
    box-shadow: none;
  }
  .bk-line svg path { fill: var(--brown); }
}


/* ============================================================
   レスポンシブ補完
============================================================ */
@media (max-width: 375px) {
  .mc { padding: 20px 18px; }      /* 1カラム: 横幅縮小不要 */
  .mci-name { font-size: .84rem; } /* 1カラム: 縮小不要 */
  .fw-c { padding: 16px 14px; }
  .foot-in { gap: 22px; }
  .hero-main-copy { font-size: clamp(2.1rem, 9vw, 2.8rem); }
}
@media (max-width: 480px) {
  .bk-tel, .bk-line {
    min-width: calc(100% - 40px);
    max-width: calc(100% - 32px);
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  .menu-grid { grid-template-columns: repeat(2, 1fr); }
  .about-grid { gap: clamp(28px,4vw,44px); }
  .hero-content { flex: 0 0 62%; }
  .hero-photo { left: 36%; }
}
@media (min-width: 1025px) {
  .wrap { padding-inline: clamp(20px,3.5vw,36px); }
  .about-grid { grid-template-columns: 5fr 6fr; }
  .ac-grid { gap: 36px; }
}
@media (min-width: 1440px) {
  .hero-content {
    padding-left: clamp(64px,5.5vw,100px);
    padding-right: clamp(60px,5vw,88px);
  }
  .hero-main-copy { font-size: clamp(4rem, 4.8vw, 5.2rem); }
}
