/* 2026-11-06 店舗詳細の予約導線(FAQリンク・FAQ後の予約ボタン・スマホ固定予約ボタン・施術例の拡大) */

/* FAQ: HPB の該当欄へのリンク */
.faq-a .faq-link { margin-top: 12px; }
.faq-link a {
  color: var(--booking-fill, #ce4155);
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.faq-link a::after { content: '\00a0→'; }

/* FAQ のすぐ後の予約ボタン */
.faq-cta { margin-top: 48px; text-align: center; }
.faq-cta-lead {
  margin-bottom: 20px;
  font-size: var(--fs-body);
  line-height: 1.75;
  letter-spacing: var(--ls);
}
@media (width <= 767px) {
  .faq-cta { margin-top: 40px; }
  .faq-cta .btn-primary { width: 100%; min-width: 0; }
}

/* 施術例: 写真をタップで拡大 */
.case-zoom {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  background: none;
  cursor: zoom-in;
}
.case-zoom:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.case-zoom-hint {
  position: absolute;
  right: 10px;
  bottom: 10px;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(255, 255, 255, .9);
  color: #333;
  font-size: 12px;
  line-height: 1.5;
  letter-spacing: .05em;
}
.case-dialog {
  width: min(92vw, 960px);
  max-width: none;
  max-height: 92vh;
  padding: 0;
  border: 0;
  border-radius: var(--radius-media, 8px);
  background: #fff;
  overflow: visible;
}
.case-dialog::backdrop { background: rgba(0, 0, 0, .75); }
.case-dialog img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 92vh;
  object-fit: contain;
  border-radius: inherit;
}
.case-dialog-close {
  position: absolute;
  top: 8px;
  right: 8px;
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, .92);
  box-shadow: 0 1px 4px rgba(0, 0, 0, .2);
  color: #333;
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
}

/* スマホ: 画面下の固定予約ボタン(最初の予約ボタンが見えなくなったら出す) */
.sticky-cta { display: none; }
@media (width <= 767px) {
  .sticky-cta {
    position: fixed;
    inset: auto 0 0 0;
    z-index: 80;
    display: block;
    padding: 10px var(--pad-x, 16px) calc(10px + env(safe-area-inset-bottom));
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 -1px 0 var(--hairline, #e5e5e5);
    transform: translateY(110%);
    visibility: hidden;
    transition: transform .25s ease, visibility .25s;
  }
  .sticky-cta.is-shown { transform: translateY(0); visibility: visible; }
  .sticky-cta .btn-primary { width: 100%; min-width: 0; margin: 0; }
  html.nav-open .sticky-cta { display: none; }
  body.has-sticky-cta .footer { padding-bottom: calc(88px + env(safe-area-inset-bottom)); }
}
@media (prefers-reduced-motion: reduce) {
  .sticky-cta { transition: none; }
}

/* FV: 店名の下に駅からの距離と営業時間 */
.hero-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 16px;
  margin-top: 12px;
  font-size: 14px;
  line-height: 1.5;
  letter-spacing: .1em;
  color: #333;
}
.hero-meta span { position: relative; }
.hero-meta span + span::before {
  content: '';
  position: absolute;
  left: -9px;
  top: .3em;
  bottom: .3em;
  border-left: 1px solid currentColor;
  opacity: .35;
}
@media (width <= 767px) {
  .hero-meta { flex-wrap: nowrap; gap: 0 16px; margin-top: 8px; font-size: clamp(11px, 3.4vw, 14px); letter-spacing: .05em; white-space: nowrap; }
}

/* 口コミ欄の下: その店舗のGoogle口コミへ */
.store-reviews { margin-top: 24px; text-align: center; font-size: 14px; letter-spacing: .1em; }
.store-reviews a { color: var(--booking-fill, #ce4155); font-weight: 500; text-decoration: underline; text-underline-offset: 3px; }
.store-reviews a::after { content: '\00a0→'; }

/* スタッフ(2026-11-04 デザイン案を移植。SNSは未確認のため外す・カタカナ表記なし) */
.staff { padding: clamp(56px, 8vh, 88px) var(--pad-x) 0; background: var(--paper); }
.staff-inner { max-width: var(--w-main, 1080px); margin-inline: auto; padding-bottom: clamp(56px, 8vh, 88px); border-bottom: 1px solid var(--hairline); }
.staff-lead { margin-top: 16px; text-align: center; font-size: var(--reading-body-size); line-height: 1.75; }
.staff-lead span { display: block; }
/* 横スクロール: 縦長の写真を並べ、右へ流して見る。カードの箱は付けず、文字は写真の下に置く */
.staff-carousel { margin-top: clamp(32px, 4vw, 48px); margin-inline: calc(-1 * var(--pad-x)); }
.staff-track { display: flex; gap: clamp(16px, 2vw, 28px); margin: 0; padding: 0 var(--pad-x) 8px; list-style: none; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: var(--pad-x); scrollbar-width: none; overscroll-behavior-x: contain; }
.staff-track::-webkit-scrollbar { display: none; }
.staff-track:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.staff-card { flex: 0 0 clamp(200px, 21vw, 232px); min-width: 0; scroll-snap-align: start; }
.staff-photo { aspect-ratio: 3 / 4; overflow: hidden; border-radius: var(--radius-media, 8px); background: var(--beige); }
.staff-photo img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 15%; }
.staff-name { margin: 14px 0 0; font-size: 17px; font-weight: 500; line-height: 1.4; letter-spacing: .1em; overflow-wrap: anywhere; }
.staff-role { margin-top: 2px; font-size: 12px; line-height: 1.5; letter-spacing: .1em; color: var(--ink-note, #666); }
.staff-msg { margin-top: 10px; font-size: 13px; line-height: 1.75; letter-spacing: .05em; text-wrap: pretty; }
.staff-controls { display: flex; justify-content: center; gap: 12px; margin: 20px auto 0; padding-inline: var(--pad-x); }
.staff-controls[hidden] { display: none; }
.staff-ctrl { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 1px solid #333; border-radius: 50%; background: transparent; color: #333; cursor: pointer; transition: background-color var(--dur-hover, .2s) ease, color var(--dur-hover, .2s) ease, opacity var(--dur-hover, .2s) ease; }
.staff-ctrl:hover:not(:disabled) { background: #333; color: #fff; }
.staff-ctrl:disabled { opacity: .25; cursor: default; }
.staff-ctrl:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.ctrl-prev, .ctrl-next { width: 8px; height: 8px; border-top: 1.5px solid currentColor; border-right: 1.5px solid currentColor; }
.ctrl-prev { transform: translateX(2px) rotate(-135deg); }
.ctrl-next { transform: translateX(-2px) rotate(45deg); }
.staff-track { --edge: max(var(--pad-x), (100% - 1080px) / 2); padding-inline: var(--edge); scroll-padding-inline: var(--edge); }
.staff-controls { max-width: calc(1080px + 2 * var(--pad-x)); }
@media (width <= 767px) {
  .staff-card { flex-basis: 58vw; }
  .staff-controls { display: none; }
}
/* 取り込めない店舗: 写真1枚+文 */
.staff-solo { margin-top: clamp(32px, 4vw, 56px); display: grid; grid-template-columns: 1.1fr 1fr; gap: clamp(24px, 4vw, 56px); align-items: center; }
.staff-solo-photo { aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--radius-media, 8px); background: var(--beige); }
.staff-solo-photo img { width: 100%; height: 100%; object-fit: cover; }
.staff-solo-body > p { font-size: var(--reading-body-size, 15px); line-height: 1.9; letter-spacing: var(--ls); }
.staff-message { margin: 20px 0 0; padding: 16px 20px; border-left: 2px solid var(--accent-soft, #F5A0B5); background: rgba(255, 255, 255, .6); }
.staff-message p { font-size: var(--fs-body); line-height: 1.8; }
@media (width <= 767px) { .staff-solo { grid-template-columns: 1fr; gap: 24px; } }

/* 国家資格 美容師免許(金のメダルの小さな印) */
.lic-icon { flex-shrink: 0; width: 1.25em; height: 1.25em; color: #c9a43a; }
.staff-license { display: flex; width: fit-content; align-items: center; gap: 8px; margin: 20px auto 0; padding: 10px 22px; border: 1px solid #e6d6a6; border-radius: 999px; background: #fff; font-size: 15px; line-height: 1.5; letter-spacing: .1em; color: var(--ink, #333); }
.staff-license strong { font-weight: 500; }
.staff-license + .staff-lead { margin-top: 16px; }
.staff-lic { display: flex; align-items: center; gap: 4px; margin-top: 8px; font-size: 12px; font-weight: 500; line-height: 1.5; letter-spacing: .05em; color: #8a6d1d; }
@media (width <= 767px) {
  .staff-license { padding: 8px 14px; font-size: clamp(12px, 3.4vw, 15px); letter-spacing: .05em; white-space: nowrap; }
}

/* h1: 上段にブランド名(小)、下段に店名(従来の大きさ) */
.hero-head h1 .h1-brand { display: block; margin-bottom: 4px; font-size: 14px; line-height: 1.5; letter-spacing: .1em; color: var(--ink-soft, #555); }
.hero-head h1 .h1-store { display: block; }
@media (width <= 767px) { .hero-head h1 .h1-brand { font-size: 13px; } }

/* 料金(2026-11-09) */
.price { padding: clamp(56px, 8vh, 88px) var(--pad-x); }
.price-inner { max-width: 760px; margin-inline: auto; }
.price-lead { margin-top: 16px; text-align: center; font-size: var(--reading-body-size, 15px); line-height: 1.75; letter-spacing: var(--ls); }
.price-wrap { margin-top: clamp(24px, 3vw, 40px); }
.price-table { width: 100%; border-collapse: collapse; background: #fff; border-radius: var(--radius-media, 8px); overflow: hidden; font-size: 15px; letter-spacing: .05em; }
.price-table th, .price-table td { padding: 16px 20px; border-bottom: 1px solid var(--hairline, #e5e5e5); text-align: left; vertical-align: middle; }
.price-table thead th { font-size: 13px; font-weight: 500; color: var(--ink-note, #666); background: #fff; }
.price-table thead th + th, .price-table td { text-align: right; white-space: nowrap; }
.price-table tbody tr:last-child th, .price-table tbody tr:last-child td { border-bottom: 0; }
.price-table td { font-size: 17px; font-weight: 500; font-variant-numeric: tabular-nums; }
.price-table td.price-all { text-align: center; }
.price-name { display: block; font-weight: 500; line-height: 1.5; }
.price-note { display: block; margin-top: 2px; font-size: 12px; font-weight: 400; line-height: 1.5; color: var(--ink-note, #666); }
.price-foot { margin-top: 12px; font-size: 12px; line-height: 1.7; color: var(--ink-note, #666); }
.price-link { margin-top: 16px; text-align: center; font-size: 14px; letter-spacing: .1em; }
.price-link a { color: var(--booking-fill, #ce4155); font-weight: 500; text-decoration: underline; text-underline-offset: 3px; }
.price-link a::after { content: '\00a0→'; }
@media (width <= 767px) {
  .price-table { font-size: 14px; }
  .price-table th, .price-table td { padding: 12px 10px; }
  .price-table td { font-size: 15px; }
}
