@charset "utf-8";

/*
  コタキカイロプラクティックセンター
  Design 2026 v6 — Ritchie Style
  Deep Green × White × Cream
*/

@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@300;400;500;700&family=Noto+Serif+JP:wght@400;500&family=Montserrat:wght@300;400;500;600;700;800&display=swap');

:root {
  /* ── Green Palette ── */
  --green-dark:   #1a3209;
  --green:        #2d5016;
  --green-mid:    #3d6b1f;
  --green-light:  #5a8f32;
  --green-pale:   #d4e8c0;
  --green-cream:  #f0f7e8;
  --green-frost:  #f7fbf2;

  /* ── Neutrals ── */
  --white:   #ffffff;
  --cream:   #fafaf7;
  --gray-lt: #f4f4f0;
  --gray:    #e8e8e2;
  --text:    #1a1a1a;
  --text-mid:#4a4a4a;
  --text-lt: #7a7a7a;

  /* ── Accent ── */
  --accent:  #2d5016;

  /* ── Shadow / Border ── */
  --border:    rgba(45,80,22,.14);
  --shadow-xs: 0 1px 8px  rgba(0,0,0,.06);
  --shadow-sm: 0 2px 16px rgba(0,0,0,.09);
  --shadow-md: 0 6px 32px rgba(0,0,0,.13);

  /* ── Font ── */
  --font-sans:  'Noto Sans JP', sans-serif;
  --font-serif: 'Noto Serif JP', serif;
  --font-en:    'Montserrat', sans-serif;

  --r-sm: 4px;
  --r-md: 8px;
  --r-lg: 16px;
  --ease: all 0.28s cubic-bezier(0.4,0,0.2,1);
}

/* =====================================================
   RESET
===================================================== */
*,*::before,*::after { box-sizing:border-box; }
html,body {
  margin:0; padding:0;
  font-size:16px;
  font-family:var(--font-sans);
  color:var(--text);
  background:var(--white);
  line-height:1.85;
  -webkit-font-smoothing:antialiased;
}
body,div,p,h1,h2,h3,h4,ul,figure { margin:0; padding:0; }
img { width:100%; height:auto; display:block; }
a { color:var(--green); text-decoration:none; transition:var(--ease); }
a:hover { color:var(--green-light); }
p,td,th,li { line-height:1.85; }
p { margin-top:6px; padding:5px 0 8px; }
ul { list-style:none; }
hr { border:none; border-top:1px solid var(--gray); margin:24px 0; }
.img-responsive { display:block; max-width:100%; height:auto; }
.sp640 { display:none; }
@media(max-width:640px){ .sp640 { display:block; } }

/* =====================================================
   LAYOUT
===================================================== */
.container { max-width:1100px; margin:0 auto; padding:0 24px; }
.container-home {
  max-width:1100px; margin:0 auto; padding:0 24px;
  display:flex; flex-direction:row; gap:36px; align-items:flex-start;
}
/* index.htmlはサイドバーなし → 1カラム全幅 */
.container-home > main {
  flex:1 1 0; min-width:0;
}
.container-home > .sidebar {
  flex:0 0 240px; width:240px;
}
@media(max-width:900px){
  .container-home { flex-direction:column; }
  .container-home > .sidebar { width:100%; }
}

/* =====================================================
   TOP BAR
===================================================== */
.top-bar {
  background:var(--green-dark);
  padding:7px 0;
  font-size:.82rem;
  color:rgba(255,255,255,.8);
}
.top-bar-inner {
  display:flex; align-items:center;
  justify-content:space-between; flex-wrap:wrap; gap:6px;
}
/* SP：電話番号のみ・中央寄せ・大きめ */
.top-bar-left {
  display:flex; align-items:center;
  flex:1;
}
@media(max-width:639px){
  .top-bar-inner { flex-direction:column; align-items:center; gap:8px; }
  .top-bar-left { justify-content:center; width:100%; }
  .top-bar-right { justify-content:center; width:100%; }
}
@media(min-width:640px){
  .top-bar-left { flex-direction:row; align-items:center; gap:18px; }
}
.top-bar-tel {
  display:flex; align-items:center; gap:6px;
}
.top-bar-tel a {
  color:#fff; font-weight:800;
  letter-spacing:.06em; font-family:var(--font-en);
  font-size:1.05rem; white-space:nowrap;
}
.top-bar-tel a:hover { color:var(--green-pale); }
.top-bar-tel i { color:var(--green-pale); font-size:.85rem; }
/* 受付時間はSPでは非表示、PCでは表示 */
.top-bar-hours {
  color:rgba(255,255,255,.75); font-size:.76rem;
  white-space:nowrap; display:none;
}
@media(min-width:640px){
  .top-bar-hours { display:inline; }
}
.top-bar-right { display:flex; align-items:center; gap:12px; }
.top-bar-sns { display:flex; gap:10px; }
.top-bar-sns a { color:rgba(255,255,255,.6); font-size:.9rem; }
.top-bar-sns a:hover { color:var(--green-pale); }
.top-bar-book { display:flex; align-items:center; gap:8px; }
.top-bar-book a {
  background:var(--green-light); color:#fff;
  padding:5px 16px; border-radius:2px;
  font-size:.76rem; font-weight:700;
  letter-spacing:.08em; font-family:var(--font-en);
  text-transform:uppercase; transition:var(--ease);
}
.top-bar-book a:hover { background:var(--green-mid); color:#fff; }
.top-bar-line-btn {
  background:#06c755 !important;
}
.top-bar-line-btn:hover { background:#05a847 !important; }

/* =====================================================
   HEADER
===================================================== */
header {
  background:var(--white);
  border-bottom:1px solid var(--gray);
  box-shadow:var(--shadow-xs);
  position:sticky; top:0; z-index:100;
}
.header-container { padding:0 24px; }
.header-inner { display:flex; align-items:center; justify-content:space-between; height:76px; }
.header-logo img { height:52px; width:auto; }
.header-logo-text {
  display:flex; flex-direction:column;
  gap:4px; text-decoration:none;
}
.header-logo-ja {
  font-family:'Noto Serif JP','MS PMincho',serif;
  font-size:17px; font-weight:500;
  color:var(--green-dark); letter-spacing:.15em;
  white-space:nowrap; line-height:1.2;
}
.header-logo-en {
  font-family:var(--font-en);
  font-size:8.5px; font-weight:500;
  color:var(--green-light); letter-spacing:.32em;
  text-transform:uppercase; white-space:nowrap;
}
@media(max-width:768px){
  .header-inner { height:64px; }
  /* clamp(最小, 推奨, 最大) でビューポーン幅に追従・折り返しなし */
  .header-logo-ja {
    font-size: clamp(12px, 3.8vw, 17px);
    letter-spacing: .05em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: calc(100vw - 80px); /* ハンバーガーボタン分を除く */
  }
  .header-logo-en { font-size:7px; letter-spacing:.15em; }
}
@media(max-width:380px){
  .header-logo-ja { font-size: clamp(11px, 3.5vw, 13px); letter-spacing:.03em; }
}
.menu-btn { display:block; width:32px; height:24px; background:none; border:none; cursor:pointer; padding:0; position:relative; }
.menu-btn::before,.menu-btn::after,.menu-btn span { display:block; width:100%; height:2px; background:var(--green); border-radius:2px; position:absolute; transition:var(--ease); }
.menu-btn::before { content:''; top:0; }
.menu-btn span    { content:''; top:50%; transform:translateY(-50%); }
.menu-btn::after  { content:''; bottom:0; }
@media(min-width:900px){ .menu-btn { display:none; } }

/* =====================================================
   NAV — white bg, green underline
===================================================== */
nav { background:var(--white); border-bottom:2px solid var(--green); }
.nav-container { padding:0 24px; }
.navbar { list-style:none; margin:0; padding:0; }
@media(max-width:899px){
  .navbar { display:none; flex-direction:column; }
  .navbar.active { display:flex !important; }
}
@media(min-width:900px){ .navbar { display:flex !important; flex-direction:row; flex-wrap:wrap; justify-content:center; } }
.navbar li { list-style:none; }
.navbar li a {
  display:block; padding:14px 16px;
  font-family:var(--font-en);
  font-size:.84rem; font-weight:600;
  letter-spacing:.07em; color:var(--text-mid);
  white-space:nowrap; text-transform:uppercase;
  position:relative; transition:var(--ease);
}
.navbar li a::after {
  content:''; position:absolute; bottom:-2px; left:0; right:0;
  height:3px; background:var(--green-light);
  transform:scaleX(0); transition:transform .28s ease;
}
.navbar li a:hover { color:var(--green); }
.navbar li a:hover::after, .navbar li a.current::after { transform:scaleX(1); }
.navbar li a.current { color:var(--green); }

/* =====================================================
   KEY VISUAL — full width, dark overlay left side
===================================================== */
.home-keyvisual { position:static; overflow:hidden; max-height:580px; }
.home-keyvisual img { width:100%; height:100%; object-fit:cover; display:block; min-height:360px; }
/* オーバーレイは hero-wrap::after で管理 */
.hero-wrap::after {
  content:''; position:absolute; inset:0; z-index:1;
  background:linear-gradient(to right, rgba(20,40,10,.72) 0%, rgba(20,40,10,.35) 55%, transparent 100%);
  pointer-events:none;
}

/* =====================================================
   4-LINK BAR — ヒーロー直下、白背景
===================================================== */
.link-bar {
  background:var(--white);
  border-bottom:3px solid var(--green-pale);
  box-shadow:var(--shadow-sm);
}
.link-bar-inner {
  display:grid;
  grid-template-columns:repeat(2,1fr);
  max-width:1100px; margin:0 auto;
}
@media(min-width:640px){ .link-bar-inner { grid-template-columns:repeat(4,1fr); } }
.link-bar-item {
  display:flex; align-items:center; justify-content:center;
  gap:10px; padding:18px 12px;
  border-right:1px solid var(--gray);
  text-decoration:none; color:var(--text);
  font-family:var(--font-sans);
  font-size:.82rem; font-weight:600;
  letter-spacing:.03em;
  transition:var(--ease); text-align:left;
  line-height:1.4;
}
.link-bar-item:last-child { border-right:none; }
.link-bar-item:hover { background:var(--green-cream); color:var(--green); }
.link-bar-item strong { color:var(--green); display:block; font-size:.9rem; margin-top:2px; }
.link-bar-icon {
  width:40px; height:40px; flex-shrink:0;
  background:var(--green-cream);
  border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  color:var(--green); font-size:1.1rem;
  transition:var(--ease);
}
.link-bar-item:hover .link-bar-icon { background:var(--green); color:#fff; }
/* 準備中 */


/* =====================================================
   MAIN
===================================================== */
.main { padding:0; }

/* 見出し共通 */
.section-label {
  font-family:var(--font-en);
  font-size:.72rem; font-weight:700;
  color:var(--green-light); letter-spacing:.18em;
  text-transform:uppercase; display:block; margin-bottom:10px;
}
.section-title {
  font-family:var(--font-en);
  font-size:1.75rem; font-weight:700;
  line-height:1.3; color:var(--text);
  margin-bottom:18px;
}
.section-title strong { color:var(--green); }
@media(min-width:768px){ .section-title { font-size:2rem; } }
.section-body {
  font-size:1rem; color:var(--text-mid);
  line-height:1.85; margin-bottom:20px;
}

/* ── SPLIT SECTION（写真 × テキスト）── */
.split-section {
  display:flex; flex-direction:column;
  min-height:420px;
}
@media(min-width:768px){ .split-section { flex-direction:row; } }
.split-section.reverse { }
@media(min-width:768px){ .split-section.reverse { flex-direction:row-reverse; } }
.split-img {
  flex:1 1 50%;
  overflow:hidden; min-height:320px;
}
.split-img img { width:100%; height:100%; object-fit:cover; display:block; }
.split-text {
  flex:1 1 50%;
  display:flex; flex-direction:column;
  justify-content:center;
  padding:48px 40px;
  background:var(--white);
}
.split-section.bg-cream .split-text { background:var(--cream); }
@media(max-width:767px){ .split-text { padding:36px 24px; } }
.split-btn {
  display:inline-block;
  padding:13px 28px;
  background:var(--green);
  color:#fff; border-radius:2px;
  font-family:var(--font-en);
  font-size:.82rem; font-weight:700;
  letter-spacing:.1em; text-transform:uppercase;
  transition:var(--ease);
  align-self:flex-start;
  margin-top:8px;
}
.split-btn:hover { background:var(--green-mid); color:#fff; transform:translateY(-2px); box-shadow:var(--shadow-sm); }

/* ── SERVICE GRID ── */
.services-section {
  background:var(--green);
  padding:64px 0;
}
.services-title {
  font-family:var(--font-en);
  font-size:1.75rem; font-weight:700;
  color:#fff; text-align:center;
  margin-bottom:36px;
}
.services-title strong { color:var(--green-pale); }
.services-grid {
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:3px;
  margin-bottom:36px;
}
@media(min-width:640px){ .services-grid { grid-template-columns:repeat(4,1fr); } }
.service-card {
  position:relative; overflow:hidden;
  cursor:pointer; aspect-ratio:1/1;
  text-decoration:none;
}
.service-card img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s ease; }
.service-card:hover img { transform:scale(1.05); }
.service-card-overlay {
  position:absolute; inset:0;
  background:linear-gradient(to top, rgba(10,30,5,.85) 0%, rgba(10,30,5,.2) 100%);
  display:flex; flex-direction:column;
  justify-content:flex-end; padding:18px 14px;
  transition:var(--ease);
}
.service-card:hover .service-card-overlay { background:linear-gradient(to top, rgba(10,30,5,.92) 0%, rgba(10,30,5,.35) 100%); }
.service-card-label {
  font-family:var(--font-en);
  font-size:.7rem; font-weight:700;
  color:rgba(255,255,255,.75); letter-spacing:.12em;
  text-transform:uppercase; display:block; margin-bottom:3px;
}
.service-card-title {
  font-family:var(--font-en);
  font-size:.95rem; font-weight:800;
  color:#fff; letter-spacing:.04em;
  text-transform:uppercase; line-height:1.2;
}
.service-card-title strong { color:var(--green-pale); display:block; }
.services-cta { text-align:center; }
.services-cta a {
  display:inline-block; padding:14px 36px;
  border:2px solid #fff; color:#fff;
  font-family:var(--font-en); font-size:.84rem;
  font-weight:700; letter-spacing:.12em; text-transform:uppercase;
  transition:var(--ease);
}
.services-cta a:hover { background:#fff; color:var(--green); }


/* ── ADVANCED TECHNIQUES ── */
.techniques-section { padding:64px 0; background:var(--cream); }
.techniques-grid {
  display:grid;
  grid-template-columns:1fr;
  gap:24px; margin-top:36px;
}
@media(min-width:640px){ .techniques-grid { grid-template-columns:repeat(2,1fr); } }
.technique-card {
  background:var(--white);
  border:1px solid var(--gray);
  border-top:3px solid var(--green);
  border-radius:0 0 var(--r-md) var(--r-md);
  padding:24px 22px;
  box-shadow:var(--shadow-xs);
  transition:var(--ease);
}
.technique-card:hover { box-shadow:var(--shadow-sm); transform:translateY(-3px); }
.technique-icon {
  width:52px; height:52px;
  background:var(--green-cream);
  border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  color:var(--green); font-size:1.3rem;
  margin-bottom:14px;
}
.technique-title {
  font-family:var(--font-en);
  font-size:.82rem; font-weight:700;
  color:var(--green); letter-spacing:.06em;
  text-transform:uppercase; margin-bottom:8px;
}
.technique-body { font-size:.94rem; color:var(--text-mid); line-height:1.75; padding:0; margin:0; }

/* ── FAQ ── */
.faq-section { padding:64px 0; background:var(--white); }
.faq-list { margin-top:32px; }
.faq-item {
  border-bottom:1px solid var(--gray);
}
.faq-question {
  width:100%; background:none; border:none;
  display:flex; align-items:center; justify-content:space-between;
  padding:18px 0; cursor:pointer;
  font-family:var(--font-sans);
  font-size:1rem; font-weight:600;
  color:var(--text); text-align:left;
  gap:12px; transition:var(--ease);
}
.faq-question:hover { color:var(--green); }
.faq-icon {
  width:24px; height:24px; flex-shrink:0;
  background:var(--green-cream); border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  color:var(--green); font-size:.75rem;
  transition:var(--ease);
}
.faq-item.open .faq-icon { background:var(--green); color:#fff; transform:rotate(45deg); }
.faq-answer {
  display:none;
  padding:0 0 18px 0;
  font-size:.95rem; color:var(--text-mid);
  line-height:1.8;
}
.faq-item.open .faq-answer { display:block; }
/* トップページFAQ（faq-section直下）は必ずblock表示 */
.faq-section > .container .faq-item.open .faq-answer { display:block !important; }

/* ── TESTIMONIALS ── */
.testimonials-section { padding:64px 0; background:var(--green-cream); }
.testimonials-grid {
  display:grid;
  grid-template-columns:1fr;
  gap:20px; margin-top:32px;
}
@media(min-width:640px){ .testimonials-grid { grid-template-columns:repeat(2,1fr); } }
@media(min-width:900px){ .testimonials-grid { grid-template-columns:repeat(3,1fr); } }
.testimonial-card {
  background:var(--white);
  border-radius:var(--r-lg);
  padding:24px 22px;
  box-shadow:var(--shadow-xs);
  position:relative;
}
.testimonial-quote {
  font-size:2.5rem; line-height:1;
  color:var(--green-pale);
  font-family:Georgia,serif;
  margin-bottom:10px; display:block;
}
.testimonial-body {
  font-size:.94rem; color:var(--text-mid);
  line-height:1.75; font-style:italic;
  padding:0; margin:0 0 14px;
}
.testimonial-author {
  font-size:.82rem; font-weight:700;
  color:var(--green); font-style:normal;
  font-family:var(--font-en); letter-spacing:.04em;
}

/* ── FINAL CTA ── */
.final-cta {
  position:relative; overflow:hidden;
  min-height:360px;
  display:flex; align-items:center;
}
.final-cta-bg {
  position:absolute; inset:0;
}
.final-cta-bg img { width:100%; height:100%; object-fit:cover; }
.final-cta-bg::after {
  content:''; position:absolute; inset:0;
  background:rgba(20,40,10,.72);
}
.final-cta-content {
  position:relative; z-index:1;
  max-width:640px; padding:48px 24px;
  margin:0 auto; text-align:center;
}
.final-cta-content .section-label { color:var(--green-pale); }
.final-cta-content .section-title { color:#fff; }
.final-cta-content .section-title strong { color:var(--green-pale); }
.final-cta-content p { color:rgba(255,255,255,.8); font-size:1rem; padding:0 0 24px; }
.final-cta-btn {
  display:inline-block; padding:15px 36px;
  background:var(--green-light); color:#fff;
  border-radius:2px; font-family:var(--font-en);
  font-size:.88rem; font-weight:700;
  letter-spacing:.1em; text-transform:uppercase;
  transition:var(--ease);
}
.final-cta-btn:hover { background:var(--green); color:#fff; transform:translateY(-2px); box-shadow:var(--shadow-md); }

/* ── SIDEBAR ── */
.side-h3 {
  font-family:var(--font-en); font-weight:700; font-size:.78rem;
  color:#fff; padding:10px 14px; margin:20px 0 8px;
  background:var(--green); border-left:3px solid var(--green-pale);
  border-radius:0 var(--r-sm) var(--r-sm) 0;
  letter-spacing:.08em; text-transform:uppercase;
}
.side-ul { padding:0; margin:0 0 10px; }
.side-li { list-style:none; padding:8px 8px; border-bottom:1px solid var(--gray); font-size:.9rem; transition:var(--ease); }
.side-li:hover { background:var(--green-cream); border-radius:var(--r-sm); }
.side-li a { color:var(--text-mid); }
.side-li:hover a { color:var(--green); }
.sidebar-cta {
  background:var(--green-cream);
  border:1px solid var(--green-pale);
  border-radius:var(--r-lg); padding:18px 16px; margin-top:8px;
}
.sidebar-tel {
  font-family:var(--font-en); font-size:1.3rem; font-weight:300;
  color:var(--green-dark); display:block; margin:6px 0;
  letter-spacing:.02em;
}
.sidebar-tel a { color:inherit; }
.sidebar-btn {
  display:block; text-align:center; padding:10px 0;
  background:var(--green); color:#fff; border-radius:var(--r-sm);
  font-family:var(--font-en); font-size:.78rem;
  font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  margin-bottom:8px; transition:var(--ease);
}
.sidebar-btn:hover { background:var(--green-mid); color:#fff; }
.sidebar-btn-outline {
  display:block; text-align:center; padding:10px 0;
  border:1px solid var(--green); color:var(--green); border-radius:var(--r-sm);
  font-family:var(--font-en); font-size:.78rem;
  font-weight:600; letter-spacing:.08em; text-transform:uppercase;
  transition:var(--ease);
}
.sidebar-btn-outline:hover { background:var(--green-cream); }

/* ── FOOTER ── */
footer { background:var(--green-dark); color:rgba(255,255,255,.75); padding:44px 0 28px; }
.footer-container { display:flex; flex-direction:column; gap:10px; }
.footer-nav { display:flex; flex-wrap:wrap; gap:4px 18px; padding:0; margin:0; font-size:.86rem; }
.footer-nav li { list-style:none; }
.footer-nav a { color:rgba(255,255,255,.55); transition:var(--ease); }
.footer-nav a:hover { color:var(--green-pale); }
footer p.footer-nav { display:block; margin-top:18px; padding-top:18px; border-top:1px solid rgba(255,255,255,.1); font-size:.78rem; color:rgba(255,255,255,.3); }

/* ── STICKY TEL ── */
.sticky-tel { display:none; }
@media(max-width:768px){
  .sticky-tel { display:flex; position:fixed; bottom:0; left:0; right:0; z-index:200; background:#fff; border-top:1px solid var(--gray); box-shadow:0 -2px 16px rgba(0,0,0,.1); }
  .sticky-tel a { flex:1; display:flex; align-items:center; justify-content:center; gap:8px; padding:14px 10px; font-family:var(--font-en); font-size:.84rem; font-weight:700; letter-spacing:.06em; color:#fff; text-transform:uppercase; transition:all .25s ease; }
  .sticky-tel .s-tel { background:var(--green); }
  .sticky-tel .s-yoyaku { background:var(--green-light); }
}

/* ── LEGACY COMPAT ── */
.home-color1 { color:var(--green); }
.home-color2 { color:var(--green-mid); }
.home-color3 { color:var(--green-light); }
.home-color4 { color:var(--green-mid); }
.home-color5 { color:var(--green-light); }
.bold-Orenji { font-weight:700; font-size:1.15rem; padding-left:16px; color:var(--green); }
.p-small   { font-size:.8rem; color:var(--text-lt); padding-left:0; }
.p-smallba { font-size:.78rem; color:var(--text-lt); padding-left:0; }
.img-responsive { display:block; max-width:100%; height:auto; }
input[type="submit"] { display:block; width:240px; margin:18px auto 0; padding:12px 0; background:var(--green); border:none; border-radius:var(--r-sm); text-align:center; color:#fff; font-size:.92rem; font-family:var(--font-en); font-weight:700; letter-spacing:.1em; text-transform:uppercase; cursor:pointer; transition:var(--ease); }
input[type="submit"]:hover { background:var(--green-mid); transform:translateY(-2px); }
input[type="text"],input[type="email"],textarea { width:100%; padding:11px 14px; border:1px solid var(--gray); border-radius:var(--r-sm); font-family:var(--font-sans); font-size:1rem; color:var(--text); outline:none; transition:var(--ease); }
input:focus,textarea:focus { border-color:var(--green); box-shadow:0 0 0 3px rgba(45,80,22,.1); }
textarea { height:200px; resize:vertical; }
@keyframes fadeUp { from { opacity:0; transform:translateY(16px); } to { opacity:1; transform:translateY(0); } }
.fade-in { animation:fadeUp .6s ease forwards; }

/* =====================================================
   共通：パンくずリスト
===================================================== */
.breadcrumb-wrap {
  background: var(--gray-lt);
  border-bottom: 1px solid var(--gray);
  padding: 10px 0;
}
.breadcrumb {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  font-size: .8rem;
  color: var(--text-lt);
  margin: 0; padding: 0;
}
.breadcrumb li + li::before {
  content: '›';
  margin-right: 6px;
  color: var(--text-lt);
}
.breadcrumb a { color: var(--green); }
.breadcrumb a:hover { color: var(--green-light); }

/* =====================================================
   共通：ページヒーロー（内部ページ上部）
===================================================== */
.page-hero {
  background: linear-gradient(135deg, var(--green-dark) 0%, var(--green) 100%);
  padding: 48px 0 40px;
  text-align: center;
  color: #fff;
}
.page-hero .section-label {
  color: var(--green-pale);
  display: block;
  margin-bottom: 10px;
}
.page-hero-title {
  font-family: 'Noto Serif JP', serif;
  font-size: 1.8rem;
  font-weight: 500;
  color: #fff;
  letter-spacing: .12em;
  margin: 0 0 10px;
}
.page-hero-sub {
  font-size: .9rem;
  color: rgba(255,255,255,.75);
  margin: 0;
  padding: 0;
}

/* =====================================================
   共通：テキストリンク
===================================================== */
.text-link {
  color: var(--green);
  font-weight: 600;
  text-decoration: underline;
}
.text-link:hover { color: var(--green-light); }

/* =====================================================
   共通：見出しスタイル（内部ページ用）
===================================================== */
.contents-h2 {
  font-family: 'Noto Serif JP', serif;
  font-size: 1.25rem;
  font-weight: 500;
  color: var(--green-dark);
  border-left: 4px solid var(--green-light);
  padding: 10px 16px;
  margin: 40px 0 16px;
  background: var(--green-frost);
  border-radius: 0 var(--r-sm) var(--r-sm) 0;
}
.contents-h2 strong { color: var(--green); }

.sub-heading {
  font-family: 'Noto Serif JP', serif;
  font-size: 1.05rem;
  font-weight: 500;
  color: var(--green-dark);
  padding: 8px 0 8px 12px;
  border-left: 3px solid var(--green-pale);
  margin: 24px 0 12px;
}

.section-note {
  font-size: .88rem;
  color: var(--text-lt);
  margin: -10px 0 16px;
  padding: 0;
}

.note-text {
  font-size: .82rem;
  color: var(--text-lt);
  padding: 0;
  margin: 4px 0;
}

/* =====================================================
   共通：SNSリンク行
===================================================== */
.sns-row {
  display: flex;
  gap: 16px;
  justify-content: center;
  padding: 32px 0;
  border-top: 1px solid var(--gray);
  margin-top: 24px;
}

/* =====================================================
   共通：サイドバー
===================================================== */
.sidebar {
  padding: 8px 0;
}
.side-h3 {
  font-family: 'Noto Serif JP', serif;
  font-size: .92rem;
  font-weight: 500;
  color: var(--white);
  background: var(--green);
  padding: 10px 14px;
  margin: 20px 0 8px;
  border-radius: var(--r-sm);
  letter-spacing: .06em;
}
.side-ul { list-style: none; margin: 0; padding: 0; }
.side-li {
  border-bottom: 1px solid var(--gray);
  padding: 8px 4px;
  font-size: .88rem;
}
.side-li i { color: var(--green-light); margin-right: 6px; }
.bold-blu { font-weight: 600; font-size: .9rem; color: var(--green-dark); display: block; margin-top: 12px; }
.bold-small { font-weight: 600; font-size: .95rem; }
.bold-Orenji { font-weight: 700; font-size: 1.1rem; color: var(--green); }
.bold-Orenji a { color: var(--green); font-weight: 700; }

/* =====================================================
   料金ページ：info-card
===================================================== */
.info-card {
  display: flex;
  gap: 18px;
  background: var(--green-frost);
  border: 1px solid var(--green-pale);
  border-radius: var(--r-md);
  padding: 24px;
  margin: 24px 0 32px;
}
.info-card-icon {
  font-size: 1.8rem;
  color: var(--green-light);
  flex-shrink: 0;
  margin-top: 4px;
}
.info-card-body p { padding: 2px 0 6px; }
.paypay-logo { margin-top: 10px; }
.paypay-logo img { width:50px; height:49px; }

/* =====================================================
   料金ページ：price-grid（クーポンカード）
===================================================== */
.price-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 16px;
  margin: 16px 0 36px;
}
.price-card {
  background: var(--white);
  border: 1px solid var(--gray);
  border-radius: var(--r-md);
  padding: 18px 20px;
  box-shadow: var(--shadow-xs);
  display: flex;
  flex-direction: column;
  gap: 6px;
  transition: var(--ease);
}
.price-card:hover {
  border-color: var(--green-light);
  box-shadow: var(--shadow-sm);
  transform: translateY(-2px);
}
.price-card--featured {
  border-color: var(--green-light);
  background: var(--green-frost);
}
.price-card--premium {
  border-color: var(--green);
  background: linear-gradient(135deg, var(--green-frost), #fff);
}
.price-card-name {
  font-weight: 600;
  font-size: .95rem;
  color: var(--green-dark);
}
.price-card-name i { color: var(--green-light); margin-right: 6px; }
.price-card-desc { font-size: .8rem; color: var(--text-lt); }
.price-card-price {
  font-family: 'Montserrat', sans-serif;
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--green);
  margin-top: 6px;
}
.price-card-price span { font-size: .75rem; font-weight: 400; color: var(--text-lt); margin-left: 4px; }

/* =====================================================
   料金ページ：counsel-banner
===================================================== */
.counsel-banner {
  background: var(--green);
  color: #fff;
  border-radius: var(--r-md);
  padding: 20px 28px;
  margin: 20px 0 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.counsel-banner-inner {
  display: flex;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap;
  justify-content: center;
}
.counsel-label {
  font-size: .9rem;
  opacity: .9;
}
.counsel-price {
  font-family: 'Montserrat', sans-serif;
  font-size: 1.8rem;
  font-weight: 700;
}
.counsel-price small { font-size: .7rem; font-weight: 400; opacity: .8; }
.counsel-plus {
  font-size: 1.6rem;
  color: var(--green-pale);
  margin-top: 8px;
}

/* =====================================================
   料金ページ：price-table
===================================================== */
.price-table-wrap { margin: 16px 0 32px; overflow-x: auto; }
.price-table {
  width: 100%;
  border-collapse: collapse;
  font-size: .9rem;
}
.price-table th {
  background: var(--green-dark);
  color: #fff;
  padding: 12px 16px;
  text-align: left;
  font-weight: 500;
  letter-spacing: .05em;
}
.price-table td {
  padding: 13px 16px;
  border-bottom: 1px solid var(--gray);
  vertical-align: middle;
}
.price-table tbody tr:nth-child(even) { background: var(--green-frost); }
.price-table tbody tr:hover { background: var(--green-cream); }
.price-td {
  font-family: 'Montserrat', sans-serif;
  font-weight: 700;
  color: var(--green);
  white-space: nowrap;
}

/* =====================================================
   料金ページ：check-list
===================================================== */
.check-list {
  list-style: none;
  margin: 0 0 32px;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.check-list li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: .92rem;
  padding: 12px 16px;
  background: var(--white);
  border: 1px solid var(--gray);
  border-radius: var(--r-sm);
  line-height: 1.6;
}
.check-list li i {
  color: var(--green-light);
  font-size: 1rem;
  flex-shrink: 0;
  margin-top: 2px;
}

/* =====================================================
   料金ページ：booking-cards（ご予約方法）
===================================================== */
.booking-cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 18px;
  margin: 16px 0 36px;
}
.booking-card {
  background: var(--white);
  border: 1px solid var(--gray);
  border-radius: var(--r-md);
  padding: 24px 20px;
  text-align: center;
  box-shadow: var(--shadow-xs);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}
.booking-card-icon {
  width: 52px; height: 52px;
  background: var(--green-frost);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.3rem;
  color: var(--green);
}
.booking-card h3 {
  font-size: .95rem;
  font-weight: 600;
  color: var(--green-dark);
  margin: 0;
}
.booking-card p { font-size: .82rem; color: var(--text-mid); margin: 0; padding: 0; }
.booking-tel {
  font-family: 'Montserrat', sans-serif;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--green);
  letter-spacing: .04em;
}
.booking-btn {
  display: inline-block;
  padding: 9px 20px;
  background: var(--green);
  color: #fff;
  border-radius: var(--r-sm);
  font-size: .8rem;
  font-weight: 600;
  letter-spacing: .06em;
  transition: var(--ease);
}
.booking-btn:hover { background: var(--green-mid); color: #fff; }
.booking-btn--line { background: #06c755; }
.booking-btn--line:hover { background: #05a847; }


/* =====================================================
   トップページ専用：サイドバーなし全幅レイアウト
===================================================== */
.container-home--full {
  display:block !important;
}
.container-home--full > main {
  width:100%;
  max-width:100%;
}

/* split-section は section.main の外に出ているので padding不要 */
.main--full {
  padding:0;
}

/* =====================================================
   アクセスページ：map-wrap
===================================================== */
.map-wrap {
  width:100%; margin:32px 0 0;
  border-radius:var(--r-md);
  overflow:hidden;
  box-shadow:var(--shadow-sm);
}
.map-wrap iframe { display:block; }

/* =====================================================
   アクセスページ：access-info-bar
===================================================== */
.access-info-bar {
  display:grid;
  grid-template-columns: repeat(auto-fill, minmax(220px,1fr));
  gap:16px;
  background:var(--green-frost);
  border:1px solid var(--green-pale);
  border-radius:var(--r-md);
  padding:24px;
  margin:24px 0 36px;
}
.access-info-item {
  display:flex;
  align-items:flex-start;
  gap:12px;
}
.access-info-item > i {
  font-size:1.1rem;
  color:var(--green-light);
  margin-top:3px;
  flex-shrink:0;
}
.access-info-label {
  display:block;
  font-size:.75rem;
  font-weight:700;
  color:var(--text-lt);
  letter-spacing:.08em;
  text-transform:uppercase;
  margin-bottom:3px;
}
.access-info-text {
  display:block;
  font-size:.92rem;
  font-weight:500;
  color:var(--green-dark);
  line-height:1.5;
}
.access-info-text a { color:var(--green); font-weight:700; }

/* =====================================================
   アクセスページ：access-route-cards
===================================================== */
.access-route-cards {
  display:grid;
  grid-template-columns:1fr;
  gap:16px;
  margin:16px 0 32px;
}
@media(min-width:768px){
  .access-route-cards { grid-template-columns:repeat(2,1fr); }
}
.access-route-card {
  background:var(--white);
  border:1px solid var(--gray);
  border-radius:var(--r-md);
  padding:24px 28px;
  box-shadow:var(--shadow-xs);
}
.access-route-card--featured {
  border-color:var(--green-light);
  background:var(--green-frost);
  margin:16px 0 32px;
}
.access-route-card h3 {
  font-size:1rem;
  font-weight:600;
  color:var(--green-dark);
  margin:0 0 12px;
  padding-bottom:10px;
  border-bottom:1px solid var(--gray);
}
.access-route-card h3 i {
  color:var(--green-light);
  margin-right:8px;
}
.access-route-card p { font-size:.92rem; }

/* 住所ボックス */
.address-box {
  display:flex;
  align-items:flex-start;
  gap:12px;
  background:var(--white);
  border:1px solid var(--green-pale);
  border-radius:var(--r-sm);
  padding:16px 20px;
  margin-top:16px;
}
.address-box > i {
  color:var(--green-light);
  font-size:1.1rem;
  margin-top:4px;
  flex-shrink:0;
}

/* =====================================================
   FAQ（内部ページ版）
===================================================== */
.faq-section--inner {
  padding: 0;
  background: none;
}
.faq-section--inner .faq-list {
  max-width: 860px;
  margin: 32px auto 0;
}
.faq-item {
  border: 1px solid var(--gray);
  border-radius: var(--r-md);
  margin-bottom: 12px;
  overflow: hidden;
  box-shadow: var(--shadow-xs);
  transition: var(--ease);
}
.faq-item:hover { box-shadow: var(--shadow-sm); }
.faq-question {
  width: 100%;
  background: var(--white);
  border: none;
  padding: 18px 20px;
  display: flex;
  align-items: center;
  gap: 14px;
  text-align: left;
  font-family: var(--font-sans);
  font-size: .98rem;
  font-weight: 600;
  color: var(--green-dark);
  cursor: pointer;
  transition: var(--ease);
  line-height: 1.6;
}
.faq-question:hover { background: var(--green-frost); }
.faq-item.open .faq-question { background: var(--green-frost); color: var(--green); }
.faq-q-label {
  flex-shrink: 0;
  width: 32px; height: 32px;
  background: var(--green);
  color: #fff;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-en);
  font-size: .9rem; font-weight: 800;
  letter-spacing: 0;
}
.faq-icon {
  margin-left: auto;
  flex-shrink: 0;
  width: 28px; height: 28px;
  background: var(--green-pale);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  color: var(--green);
  font-size: .75rem;
  transition: var(--ease);
}
.faq-item.open .faq-icon { background: var(--green); color: #fff; transform: rotate(45deg); }
/* qanda.html専用：.faq-answer のスタイルをスコープ限定 */
.faq-section--inner .faq-answer {
  background: var(--green-frost);
  border-top: 1px solid var(--green-pale);
  padding: 20px 20px 20px 66px;
  align-items: flex-start;
  gap: 14px;
}
.faq-section--inner .faq-item.open .faq-answer { display: flex; }
.faq-a-label {
  flex-shrink: 0;
  width: 32px; height: 32px;
  background: var(--green-pale);
  color: var(--green-dark);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-en);
  font-size: .9rem; font-weight: 800;
  margin-top: 2px;
}
.faq-answer > div { flex: 1; }
.faq-answer p { font-size: .93rem; padding: 2px 0 6px; }
.faq-ul {
  list-style: none;
  margin: 4px 0 12px;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.faq-ul li {
  padding: 8px 12px 8px 30px;
  background: var(--white);
  border-radius: var(--r-sm);
  font-size: .9rem;
  position: relative;
}
.faq-ul li::before {
  content: '✓';
  position: absolute;
  left: 10px;
  color: var(--green-light);
  font-weight: 700;
}

/* =====================================================
   QAページ：ページ下部CTA
===================================================== */
.qanda-cta {
  background: var(--green-frost);
  border: 1px solid var(--green-pale);
  border-radius: var(--r-md);
  padding: 32px;
  text-align: center;
  margin: 40px 0 32px;
}
.qanda-cta p {
  font-size: 1rem;
  color: var(--green-dark);
  margin-bottom: 20px;
  padding: 0;
}
.qanda-cta-btns {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  justify-content: center;
  align-items: center;
}

/* =====================================================
   プライバシーページ
===================================================== */
.privacy-wrap {
  max-width: 820px;
  margin: 32px auto 48px;
}
.privacy-info-table {
  border: 1px solid var(--gray);
  border-radius: var(--r-md);
  overflow: hidden;
  margin: 16px 0 32px;
}
.privacy-info-row {
  display: flex;
  border-bottom: 1px solid var(--gray);
}
.privacy-info-row:last-child { border-bottom: none; }
.privacy-info-label {
  flex: 0 0 160px;
  background: var(--green-frost);
  padding: 14px 18px;
  font-size: .88rem;
  font-weight: 600;
  color: var(--green-dark);
  border-right: 1px solid var(--gray);
}
.privacy-info-value {
  flex: 1;
  padding: 14px 18px;
  font-size: .92rem;
  color: var(--text);
}
@media(max-width:600px){
  .privacy-info-row { flex-direction: column; }
  .privacy-info-label { flex: none; border-right: none; border-bottom: 1px solid var(--gray); }
}

/* =====================================================
   口コミページ
===================================================== */
.voice-intro {
  text-align: center;
  font-size: 1rem;
  color: var(--text-mid);
  margin: 32px auto 8px;
  max-width: 700px;
  padding: 0;
}

.voice-card {
  background: var(--white);
  border: 1px solid var(--gray);
  border-radius: var(--r-md);
  overflow: hidden;
  margin-bottom: 32px;
  box-shadow: var(--shadow-xs);
  transition: var(--ease);
}
.voice-card:hover {
  box-shadow: var(--shadow-sm);
  transform: translateY(-2px);
}
.voice-card-header {
  display: flex;
  align-items: flex-start;
  gap: 24px;
  padding: 28px 28px 20px;
  background: var(--green-frost);
  border-bottom: 1px solid var(--green-pale);
}
.voice-img {
  width: 100px;
  height: 100px;
  object-fit: cover;
  border-radius: 50%;
  flex-shrink: 0;
  border: 3px solid var(--white);
  box-shadow: var(--shadow-xs);
}
.voice-card-meta {
  flex: 1;
  padding-left: 0;
}
.voice-tag {
  display: inline-block;
  background: var(--green);
  color: #fff;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .08em;
  padding: 3px 10px;
  border-radius: 20px;
  margin-bottom: 8px;
}
.voice-title {
  font-family: 'Noto Serif JP', serif;
  font-size: 1.05rem;
  font-weight: 500;
  color: var(--green-dark);
  line-height: 1.6;
  margin: 0 0 8px;
}
.voice-author {
  font-size: .82rem;
  color: var(--text-lt);
  margin: 0;
  padding: 0;
}
.voice-body {
  padding: 24px 28px;
}
.voice-body p {
  font-size: .93rem;
  line-height: 1.85;
  padding: 0 0 10px;
}

@media(max-width:640px){
  .voice-card-header { flex-direction: column; padding: 20px; }
  .voice-img { width: 72px; height: 72px; }
  .voice-body { padding: 18px 20px; }
}

/* =====================================================
   おすすめメニューページ
===================================================== */
/* ページ内ジャンプナビ */
.menu-jump-bar {
  background: var(--green-frost);
  border-bottom: 1px solid var(--green-pale);
  padding: 12px 0;
}
.menu-jump-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  list-style: none;
  margin: 0; padding: 0;
  justify-content: center;
}
.menu-jump-list a {
  display: inline-block;
  padding: 6px 16px;
  background: var(--white);
  border: 1px solid var(--green-pale);
  border-radius: 20px;
  font-size: .82rem;
  font-weight: 600;
  color: var(--green-dark);
  transition: var(--ease);
  white-space: nowrap;
}
.menu-jump-list a:hover {
  background: var(--green);
  color: #fff;
  border-color: var(--green);
}

/* メニューセクション */
.menu-section {
  margin-bottom: 56px;
  scroll-margin-top: 100px;
}

/* メニューカード（画像＋説明の横並び） */
.menu-card {
  display: flex;
  gap: 28px;
  align-items: flex-start;
  background: var(--white);
  border: 1px solid var(--gray);
  border-radius: var(--r-md);
  overflow: hidden;
  box-shadow: var(--shadow-xs);
  margin: 16px 0 24px;
}
.menu-card-img {
  flex: 0 0 200px;
  max-width: 200px;
}
.menu-card-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  min-height: 160px;
}
.menu-card-body {
  flex: 1;
  padding: 20px 20px 20px 0;
}
.menu-card-name {
  font-family: 'Noto Serif JP', serif;
  font-size: 1rem;
  font-weight: 500;
  color: var(--green-dark);
  background: var(--green-frost);
  padding: 10px 14px;
  border-radius: var(--r-sm);
  margin: 0 0 12px;
}
.menu-tag-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  list-style: none;
  margin: 0 0 12px;
  padding: 0;
}
.menu-tag-list li {
  background: var(--green);
  color: #fff;
  font-size: .72rem;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 20px;
  letter-spacing: .04em;
}
.menu-point-list {
  list-style: none;
  margin: 0; padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.menu-point-list li {
  font-size: .88rem;
  padding-left: 18px;
  position: relative;
  color: var(--text-mid);
}
.menu-point-list li::before {
  content: '✓';
  position: absolute;
  left: 0;
  color: var(--green-light);
  font-weight: 700;
}
@media(max-width:600px){
  .menu-card { flex-direction: column; }
  .menu-card-img { flex: none; max-width: 100%; }
  .menu-card-img img { max-height: 180px; }
  .menu-card-body { padding: 16px; }
}

/* メニュー詳細 */
.menu-detail {
  background: var(--green-frost);
  border: 1px solid var(--green-pale);
  border-radius: var(--r-md);
  padding: 24px 28px;
}
.menu-detail p { font-size: .93rem; }

/* 予約CTAボタン行 */
.menu-cta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  align-items: center;
  margin: 20px 0 8px;
}

/* クーポンバナー */
.coupon-banner {
  background: var(--green);
  border-radius: var(--r-md);
  padding: 28px 32px;
  margin: 40px 0 32px;
}
.coupon-banner-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}
.coupon-title {
  font-family: 'Noto Serif JP', serif;
  font-size: 1.1rem;
  font-weight: 500;
  color: #fff;
  margin: 0 0 6px;
  padding: 0;
}
.coupon-sub {
  font-size: .85rem;
  color: rgba(255,255,255,.8);
  margin: 0; padding: 0;
}
.coupon-banner .booking-btn {
  background: #fff;
  color: var(--green-dark);
  flex-shrink: 0;
}
.coupon-banner .booking-btn:hover {
  background: var(--green-pale);
  color: var(--green-dark);
}

/* =====================================================
   予約フォームページ
===================================================== */
.contact-form-wrap {
  background: var(--white);
  border: 1px solid var(--gray);
  border-radius: var(--r-md);
  overflow: hidden;
  margin: 16px 0 40px;
  box-shadow: var(--shadow-xs);
}

/* =====================================================
   準備中スタイル
===================================================== */
.link-bar-item--coming { cursor:default; opacity:.5; pointer-events:none; }
.coming-badge {
  display:inline-block;
  font-size:.65rem; font-weight:600;
  color:#7a7a7a;
  border:1px solid #ccc;
  border-radius:3px;
  padding:1px 5px;
  margin-top:4px;
  letter-spacing:.04em;
}
.service-card--coming { cursor:default !important; }
.service-card--coming:hover img { transform:none !important; }
.service-card--coming:hover .service-card-overlay {
  background:linear-gradient(to top, rgba(10,30,5,.85) 0%, rgba(10,30,5,.2) 100%) !important;
}
.service-coming-badge {
  display:inline-block !important;
  margin-top:8px !important;
  font-size:.72rem !important;
  font-weight:700 !important;
  color:#ffffff !important;
  background:rgba(255,255,255,.22) !important;
  border:1.5px solid rgba(255,255,255,.85) !important;
  border-radius:3px !important;
  padding:3px 10px !important;
  letter-spacing:.08em !important;
}