/* =====================================================
   Sanagawa Dental Theme - main.css
   v8-airy aesthetic: white base, wide spacing, minimal
   accents (gold offset shadow, Corinthia eyebrow, serif)
   ===================================================== */

/* =====================================================
   1. CSS VARIABLES
   ===================================================== */
:root {
  /* core palette */
  --accent: #FBCC04;
  --accent-soft: #FFE89A;
  --accent-dark: #98781B;
  --accent-light: #FCE27B;
  --primary: #6EC1E4;
  --primary-dark: #4BA8D1;
  --primary-light: #e8f4fa;
  --green: #61CE70;
  --green-dark: #1DA243;

  /* text */
  --text: #54595F;
  --text-strong: #1B1B1B;
  --text-muted: #7A7A7A;
  --text-light: #999999;

  /* surfaces (white-base) */
  --bg: #FFFFFF;
  --bg-soft: #FFFCF4;
  --bg-cream: #FFF7DF;
  --bg-alt: #FFF9DE;
  --bg-warm: #FFBC7D;
  --white: #ffffff;

  /* lines */
  --line: #EAE3CB;
  --line-soft: #F0EDE3;
  --border: #e8e2d0;

  /* type */
  --serif: 'Noto Serif JP', serif;
  --sans: 'Noto Sans JP', sans-serif;
  --cursive: 'Corinthia', cursive;
  --round: 'Kiwi Maru', serif;
  --display: 'Anton', sans-serif;

  /* effects */
  --transition: 0.3s ease;
  --shadow-sm: 0 2px 8px rgba(0,0,0,0.06);
  --shadow-md: 0 10px 40px rgba(0,0,0,0.10);
  --shadow-soft: 0 8px 32px rgba(152,120,27,0.08);
  --shadow-gold: 11px 11px 0 0 var(--accent-dark);
  --shadow-gold-sm: 6px 6px 0 0 var(--accent-dark);
  --radius: 8px;
}

/* =====================================================
   2. RESET & BASE
   ===================================================== */
*, *::before, *::after { box-sizing: border-box; }
html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
body {
  margin: 0;
  font-family: var(--sans);
  font-size: 16.5px;
  line-height: 1.95;
  letter-spacing: 0.04em;
  color: var(--text);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
}
img, svg { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; transition: color var(--transition), opacity var(--transition); }
a:hover { opacity: 0.7; }
h1, h2, h3, h4, h5, h6 {
  font-family: var(--serif);
  font-weight: 600;
  line-height: 1.6;
  letter-spacing: 0.05em;
  color: var(--text-strong);
  margin: 0 0 0.5em;
}
p { margin: 0 0 1em; }
ul, ol { margin: 0; padding: 0; list-style: none; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }

/* =====================================================
   3. LAYOUT
   ===================================================== */
.container { width: min(100% - 2rem, 1200px); margin-inline: auto; }
.container-wide { width: min(100% - 2rem, 1320px); margin-inline: auto; }

/* =====================================================
   4. UTILITY / HELPERS
   ===================================================== */
.label-en {
  display: block;
  font-family: var(--cursive);
  font-size: clamp(2rem, 4vw, 2.8rem);
  color: var(--accent-dark);
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1;
  margin-bottom: 0.25em;
}

.section-header {
  text-align: center;
  margin-bottom: clamp(3rem, 6vw, 5rem);
}
.section-header h2 {
  font-family: var(--serif);
  font-size: clamp(1.5rem, 2.6vw, 2.2rem);
  font-weight: 500;
  color: var(--text-strong);
  letter-spacing: 0.15em;
  line-height: 1.6;
  margin: 0;
}
.section-header h2::after {
  content: "";
  display: block;
  width: 32px;
  height: 1px;
  background: var(--accent-dark);
  margin: 1.5rem auto 0;
}
.section-sub {
  color: var(--text);
  font-family: var(--serif);
  font-size: clamp(1rem, 1.4vw, 1.15rem);
  font-weight: 500;
  letter-spacing: 0.12em;
  margin: 0 0 0.75em;
}
.section-more { text-align: center; margin-top: clamp(2.5rem, 5vw, 4rem); }
.no-posts-home { text-align: center; color: var(--text-muted); padding: 2rem 0; }

.btn-contact {
  display: inline-block;
  padding: 12px 28px;
  background: var(--accent);
  color: var(--text-strong);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-align: center;
  transition: all var(--transition);
  box-shadow: var(--shadow-gold-sm);
}
.btn-contact:hover {
  background: var(--accent);
  color: var(--text-strong);
  transform: translate(2px, 2px);
  box-shadow: 3px 3px 0 0 var(--accent-dark);
  opacity: 1;
}
.btn-outline {
  display: inline-block;
  padding: 12px 36px;
  border: 1.5px solid var(--text-strong);
  color: var(--text-strong);
  background: transparent;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.15em;
  text-align: center;
  transition: all var(--transition);
}
.btn-outline:hover { background: var(--text-strong); color: var(--white); opacity: 1; }
.btn-back { margin-top: 3rem; }

/* =====================================================
   5. HEADER
   ===================================================== */
.site-header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 1000;
  background: rgba(255,255,255,0.95);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--line-soft);
  transition: box-shadow var(--transition);
}
.site-header.scrolled { box-shadow: 0 2px 20px rgba(0,0,0,0.06); }
.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 80px;
  gap: 1rem;
}
.site-logo { display: flex; align-items: center; gap: 12px; flex-shrink: 0; }
.site-logo:hover { opacity: 0.85; }
.site-logo-icon { width: 42px; height: 42px; object-fit: contain; }
.site-logo-text {
  font-family: var(--serif);
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--text-strong);
  letter-spacing: 0.04em;
  line-height: 1.3;
}

/* Desktop Nav */
.primary-nav {
  display: flex;
  align-items: center;
  gap: 0;
  flex: 1;
  justify-content: center;
}
.primary-nav > a,
.primary-nav > .nav-dropdown > .nav-dropdown-toggle {
  display: inline-flex;
  align-items: center;
  height: 80px;
  padding: 0 1.1rem;
  font-family: var(--serif);
  font-size: 15px;
  font-weight: 600;
  color: var(--text-strong);
  letter-spacing: 0.08em;
  white-space: nowrap;
  position: relative;
  background: transparent;
  border: 0;
  cursor: pointer;
  transition: color var(--transition);
}
.primary-nav > a::after,
.primary-nav > .nav-dropdown > .nav-dropdown-toggle::after {
  content: "";
  position: absolute;
  left: 50%; right: 50%;
  bottom: 26px;
  height: 2px;
  background: var(--accent);
  transition: left .25s, right .25s;
}
.primary-nav > a:hover::after,
.primary-nav > .nav-dropdown:hover > .nav-dropdown-toggle::after { left: 1.1rem; right: 1.1rem; }
.primary-nav > a.current-menu-item,
.primary-nav > .nav-dropdown > .nav-dropdown-toggle.current-menu-item { color: var(--accent-dark); }

/* Dropdown */
.nav-dropdown { position: relative; }
.nav-dropdown-menu {
  display: none;
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(255,255,255,0.96);
  backdrop-filter: blur(10px);
  border: 1px solid var(--line-soft);
  box-shadow: var(--shadow-soft);
  padding: 0.75rem 0;
  min-width: 220px;
  z-index: 100;
}
.nav-dropdown:hover .nav-dropdown-menu { display: block; }
.nav-dropdown-link {
  display: block;
  padding: 0.6rem 1.5rem;
  font-family: var(--serif);
  font-size: 14px;
  font-weight: 500;
  color: var(--text-strong);
  letter-spacing: 0.05em;
  white-space: nowrap;
  transition: all var(--transition);
}
.nav-dropdown-link:hover { background: var(--bg-soft); color: var(--accent-dark); opacity: 1; }

/* Header CTA */
.header-cta { display: flex; align-items: center; gap: 1rem; flex-shrink: 0; }
.header-phone { text-align: right; line-height: 1.2; }
.header-phone-label {
  display: block;
  font-family: var(--serif);
  font-size: 11px;
  font-weight: 500;
  color: var(--text-muted);
  letter-spacing: 0.18em;
  margin-bottom: 2px;
}
.header-phone-number {
  font-family: var(--serif);
  font-size: 22px;
  font-weight: 700;
  color: var(--text-strong);
  letter-spacing: 0.05em;
  line-height: 1.1;
}
.header-phone-number:hover { color: var(--accent-dark); opacity: 1; }

/* Hamburger */
.menu-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  width: 44px; height: 44px;
  background: none; border: none; cursor: pointer;
  z-index: 1001;
}
.menu-toggle span {
  display: block; width: 24px; height: 2px;
  background: var(--text-strong);
  transition: all var(--transition);
}
.menu-toggle.is-open span:nth-child(1) { transform: rotate(45deg) translate(5px, 5px); }
.menu-toggle.is-open span:nth-child(2) { opacity: 0; }
.menu-toggle.is-open span:nth-child(3) { transform: rotate(-45deg) translate(5px, -5px); }

/* =====================================================
   6. MOBILE MENU
   ===================================================== */
.mobile-menu {
  position: fixed;
  top: 0; right: -100%; width: 85%; max-width: 400px; height: 100vh;
  background: var(--text-strong);
  color: var(--white);
  z-index: 1000;
  transition: right var(--transition);
  overflow-y: auto;
  display: flex; flex-direction: column;
}
.mobile-menu.is-open { right: 0; }
.mobile-menu-header {
  display: flex; align-items: center; justify-content: flex-end;
  padding: 1.25rem 1.5rem;
  border-bottom: 1px solid rgba(255,255,255,0.1);
}
.mobile-logo { display: flex; align-items: center; gap: 8px; }
.mobile-logo-text {
  font-family: var(--serif);
  font-size: 0.85rem;
  font-weight: 500;
  color: rgba(255,255,255,0.9);
  letter-spacing: 0.05em;
}
.mobile-menu-close { background: none; border: none; color: rgba(255,255,255,0.6); cursor: pointer; transition: color var(--transition); }
.mobile-menu-close:hover { color: var(--white); }
.mobile-nav { flex: 1; padding: 1rem 0; }
.mobile-nav-item a {
  display: block;
  padding: 0.85rem 1.5rem;
  font-family: var(--serif);
  color: rgba(255,255,255,0.85);
  font-size: 15px;
  letter-spacing: 0.08em;
  transition: all var(--transition);
}
.mobile-nav-item a:hover { background: rgba(255,255,255,0.05); color: var(--white); opacity: 1; }

.mobile-nav-accordion-toggle {
  display: flex; align-items: center; justify-content: space-between;
  width: 100%;
  padding: 0.85rem 1.5rem;
  background: none; border: none;
  font-family: var(--serif);
  color: rgba(255,255,255,0.85);
  font-size: 15px;
  letter-spacing: 0.08em;
  cursor: pointer;
  transition: all var(--transition);
}
.mobile-nav-accordion-toggle:hover { background: rgba(255,255,255,0.05); color: var(--white); }
.mobile-nav-accordion-toggle svg { transition: transform var(--transition); }
.mobile-nav-accordion-toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
.mobile-nav-accordion-content {
  max-height: 0; overflow: hidden;
  transition: max-height 0.3s ease;
  background: rgba(0,0,0,0.2);
}
.mobile-nav-accordion-content a {
  display: block;
  padding: 0.55rem 2rem;
  font-family: var(--sans);
  color: rgba(255,255,255,0.7);
  font-size: 13px;
  transition: all var(--transition);
}
.mobile-nav-accordion-content a:hover { color: var(--white); background: rgba(255,255,255,0.05); opacity: 1; }

.mobile-menu-footer {
  display: flex; gap: 0.5rem;
  padding: 1.25rem 1.5rem;
  border-top: 1px solid rgba(255,255,255,0.1);
}
.mobile-menu-btn {
  flex: 1;
  display: flex; align-items: center; justify-content: center; gap: 0.5rem;
  padding: 0.75rem;
  font-size: 14px; font-weight: 600;
  letter-spacing: 0.05em;
  text-align: center;
  transition: all var(--transition);
}
.mobile-menu-btn-call { background: rgba(255,255,255,0.1); color: var(--white); }
.mobile-menu-btn-call:hover { background: rgba(255,255,255,0.2); color: var(--white); opacity: 1; }
.mobile-menu-btn-web { background: var(--accent); color: var(--text-strong); }
.mobile-menu-btn-web:hover { background: var(--accent-light); color: var(--text-strong); opacity: 1; }

/* =====================================================
   7. FLOATING CTA (MOBILE) / BACK TO TOP
   ===================================================== */
.floating-cta {
  display: none;
  position: fixed;
  bottom: 0; left: 0; right: 0;
  z-index: 999;
  background: rgba(255,255,255,0.97);
  backdrop-filter: blur(10px);
  padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
  box-shadow: 0 -2px 16px rgba(0,0,0,0.08);
  gap: 8px;
  border-top: 1px solid var(--line-soft);
}
.floating-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  flex: 1;
  height: 50px;
  padding: 0 14px;
  font-family: var(--serif);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-align: center;
  border-radius: 6px;
  transition: transform 0.15s ease, background 0.2s ease, opacity 0.2s ease;
}
.floating-btn svg { flex-shrink: 0; }
.floating-btn-call { background: var(--accent); color: var(--text-strong); }
.floating-btn-call:active { transform: scale(0.97); background: var(--accent-light); opacity: 1; }
.floating-btn-web { background: var(--text-strong); color: var(--white); }
.floating-btn-web:active { transform: scale(0.97); background: var(--accent-dark); color: var(--white); opacity: 1; }

.back-to-top {
  position: fixed;
  bottom: 80px; right: 20px;
  width: 44px; height: 44px;
  background: var(--text-strong);
  color: var(--white);
  border: none; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  opacity: 0; visibility: hidden;
  transition: all var(--transition);
  z-index: 998;
  box-shadow: var(--shadow-soft);
}
.back-to-top.is-visible { opacity: 1; visibility: visible; }
.back-to-top:hover { background: var(--accent-dark); transform: translateY(-3px); opacity: 1; }

/* =====================================================
   8. PAGE HEADER (固定ページ用)
   ===================================================== */
.page-header {
  padding: 140px 0 60px;
  background: var(--bg-soft);
  text-align: center;
  border-bottom: 1px solid var(--line-soft);
}
.page-header .label-en { margin-bottom: 0.5em; }
.page-title {
  font-family: var(--serif);
  font-size: clamp(1.5rem, 3vw, 2rem);
  font-weight: 500;
  letter-spacing: 0.15em;
  color: var(--text-strong);
  margin: 0;
}

/* =====================================================
   9. HERO
   ===================================================== */
.hero {
  position: relative;
  height: min(82vh, 720px);
  min-height: 520px;
  margin-top: 80px;
  overflow: hidden;
  background: #000;
}
.hero-slider { position: absolute; inset: 0; z-index: 1; }
.hero-slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 1.2s ease;
}
.hero-slide.is-active { opacity: 1; }
.hero-slide img { width: 100%; height: 100%; object-fit: cover; object-position: center 35%; }
.sp-only { display: none; }
.pc-only { display: inline; }
.nowrap-inline { display: inline-block; }
.hero-slide::after {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.20) 0%, rgba(0,0,0,0.50) 100%);
}

.hero-overlay {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem;
  transition: opacity 0.9s ease;
}
.hero.is-clean .hero-overlay {
  opacity: 0;
  pointer-events: none;
}
.hero.is-clean .hero-slide.is-active::after { background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.15) 100%); }
.hero-content {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.hero-heart-logo {
  width: clamp(90px, 14vw, 140px);
  margin: 0 auto 1.5rem;
  filter: drop-shadow(0 4px 16px rgba(0,0,0,0.5));
}
.hero-clinic-name {
  color: var(--white);
  font-family: var(--serif);
  font-size: clamp(1.5rem, 4vw, 2.6rem);
  font-weight: 600;
  letter-spacing: 0.12em;
  margin: 0 0 1.25rem;
  text-shadow: 0 2px 16px rgba(0,0,0,0.5), 0 1px 4px rgba(0,0,0,0.6);
}
.hero-subtitle {
  color: var(--text-strong);
  font-family: var(--round);
  font-size: clamp(1rem, 2vw, 1.3rem);
  font-weight: 500;
  letter-spacing: 0.1em;
  margin: 0;
  background: var(--accent);
  padding: 0.6rem 1.6rem;
  display: inline-block;
  line-height: 1.6;
}

/* =====================================================
   10. SECTIONS — base padding & alternating bg
   ===================================================== */
.concern-section,
.three-s-section,
.medical-section,
.doctor-section,
.clinic-tour-section,
.features-section,
.cases-home-section,
.voices-home-section,
.news-section,
.calendar-section,
.access-section,
.instagram-section {
  padding: clamp(4.5rem, 8vw, 7.5rem) 0;
}
.banner-section { padding: clamp(3rem, 5vw, 4.5rem) 0; }

/* alternating soft cream background */
.three-s-section,
.doctor-section,
.cases-home-section,
.calendar-section,
.instagram-section { background: var(--bg-soft); }

.concern-section,
.medical-section,
.clinic-tour-section,
.features-section,
.voices-home-section,
.news-section,
.access-section,
.banner-section { background: var(--bg); }

/* お知らせ一覧 */
.news-list { list-style: none; padding: 0; margin: 2rem 0 0; max-width: 720px; margin-left: auto; margin-right: auto; }
.news-item { border-bottom: 1px solid var(--line); }
.news-item:first-child { border-top: 1px solid var(--line); }
.news-link {
  display: flex; gap: 1.5rem; align-items: baseline;
  padding: 1rem 0.5rem;
  color: var(--text-strong);
  text-decoration: none;
  font-family: var(--serif);
  letter-spacing: 0.04em;
  transition: color var(--transition);
}
.news-link:hover { color: var(--accent-dark); }
.news-date {
  flex-shrink: 0;
  font-size: 0.85rem;
  color: var(--accent-dark);
  font-family: var(--sans);
  letter-spacing: 0.08em;
  font-weight: 600;
}
.news-title { font-size: 0.95rem; line-height: 1.6; }
@media (max-width: 768px) {
  .news-link { flex-direction: column; gap: 0.25rem; padding: 0.85rem 0.5rem; }
  .news-date { font-size: 0.8rem; }
  .news-title { font-size: 0.9rem; }
}

/* クリニック紹介動画 */
.clinic-tour-video {
  position: relative;
  width: 100%;
  max-width: 880px;
  margin: 2rem auto 0;
  aspect-ratio: 16 / 9;
  background: #000;
  box-shadow: var(--shadow-soft);
  overflow: hidden;
}
.clinic-tour-video iframe {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  border: 0;
}
.clinic-tour-caption {
  text-align: center;
  font-size: 0.9rem;
  color: var(--text-muted);
  letter-spacing: 0.05em;
  margin: 1.25rem 0 0;
}

/* catchcopy band */
.catchcopy-section { padding: 3rem 0; text-align: center; background: var(--bg-soft); }
.catchcopy-heading { font-size: clamp(1.25rem, 3vw, 1.75rem); color: var(--text-strong); }

/* =====================================================
   11. CONCERN (お悩み)
   ===================================================== */
.concern-section {
  position: relative;
  background-image:
    linear-gradient(180deg, rgba(255,255,255,0.65) 0%, rgba(255,249,222,0.65) 100%),
    url('https://sanagawa-dental.com/wp-content/uploads/2024/08/名称未設定のデザイン-9.jpg');
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
}
.concern-section .section-header h2 { color: var(--text-strong); }
.concern-content {
  max-width: 620px;
  margin: 0 auto clamp(3rem, 6vw, 5rem);
  font-family: var(--serif);
}
.concern-list { counter-reset: concern-item; }
.concern-list li {
  position: relative;
  padding: 1.25rem 0 1.25rem 3rem;
  border-bottom: 1px solid rgba(154, 124, 27, 0.25);
  font-family: var(--serif);
  font-size: 1.15rem;
  font-weight: 500;
  color: var(--text-strong);
  letter-spacing: 0.06em;
  line-height: 1.8;
  counter-increment: concern-item;
  text-shadow: 0 0 8px rgba(255,255,255,0.7);
}
.concern-list li:first-child { border-top: 1px solid rgba(154, 124, 27, 0.25); }
.concern-list li::before {
  content: counter(concern-item, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: 1.55rem;
  font-family: var(--serif);
  font-size: 0.9rem;
  color: var(--accent-dark);
  letter-spacing: 0.1em;
  font-weight: 700;
}

.concern-message {
  text-align: center;
  padding: clamp(2.5rem, 5vw, 4rem) clamp(1.5rem, 4vw, 3rem);
  background: var(--bg-cream);
  max-width: 960px;
  margin: 0 auto;
}
.concern-heading {
  font-family: var(--serif);
  font-size: clamp(1.25rem, 2.4vw, 1.8rem);
  font-weight: 500;
  line-height: 1.9;
  letter-spacing: 0.08em;
  color: var(--text-strong);
  margin: 0 0 1.5rem;
}
.concern-highlight {
  color: var(--accent-dark);
  font-weight: 700;
}
.concern-desc {
  color: var(--text);
  line-height: 2;
  font-size: 0.95rem;
  letter-spacing: 0.05em;
  margin: 0;
}

/* =====================================================
   12. 3つのS
   ===================================================== */
.three-s-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(2rem, 4vw, 4rem);
  max-width: 1080px;
  margin: 0 auto;
}
.three-s-card { text-align: center; }
.three-s-card-img {
  width: 100%;
  aspect-ratio: 4/3;
  overflow: hidden;
  margin: 0 0 1.75rem;
  box-shadow: var(--shadow-soft);
}
.three-s-card-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s ease;
}
.three-s-card:hover .three-s-card-img img { transform: scale(1.05); }
.three-s-card-en {
  display: block;
  font-family: var(--cursive);
  font-size: 2.4rem;
  color: var(--accent-dark);
  line-height: 1;
  font-weight: 700;
  margin-bottom: 0.4rem;
}
.three-s-card-title {
  font-family: var(--serif);
  font-size: 1.15rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  color: var(--text-strong);
  margin: 0 0 1rem;
}
.three-s-card-desc {
  font-size: 1rem;
  color: var(--text);
  line-height: 2;
  letter-spacing: 0.05em;
  margin: 0;
}

/* =====================================================
   13. MEDICAL GRID (診療案内)
   ===================================================== */
.medical-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1rem 2rem;
  max-width: 1080px;
  margin: 0 auto;
}
.medical-card {
  display: flex;
  align-items: center;
  gap: 1.25rem;
  padding: 1.25rem 0;
  border-bottom: 1px solid var(--line-soft);
  background: transparent;
  color: var(--text-strong);
  transition: all var(--transition);
}
.medical-card:hover {
  border-bottom-color: var(--accent-dark);
  opacity: 1;
}
.medical-card-icon {
  flex-shrink: 0;
  width: 56px; height: 56px;
  display: flex; align-items: center; justify-content: center;
  background: var(--bg-soft);
  border-radius: 50%;
  overflow: hidden;
}
.medical-card-icon img { width: 70%; height: 70%; object-fit: contain; }
.medical-card-body { flex: 1; min-width: 0; }
.medical-card-label {
  display: block;
  font-family: var(--serif);
  font-size: 1.15rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--text-strong);
  margin-bottom: 6px;
}
.medical-card-desc {
  font-size: 15px;
  color: var(--text-muted);
  margin: 0;
  line-height: 1.75;
  letter-spacing: 0.04em;
}
.medical-card-arrow {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  color: var(--text-muted);
  transition: transform var(--transition), color var(--transition);
}
.medical-card:hover .medical-card-arrow {
  transform: translateX(6px);
  color: var(--accent-dark);
}

/* =====================================================
   14. DOCTOR (歯科医師)
   ===================================================== */
.doctor-profile {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  gap: clamp(2.5rem, 5vw, 4.5rem);
  align-items: center;
  max-width: 1080px;
  margin: 0 auto clamp(3rem, 6vw, 5rem);
}
.doctor-profile-image img {
  width: 100%;
  box-shadow: var(--shadow-gold);
}
.doctor-profile-info { font-family: var(--sans); }
.doctor-role {
  display: inline-block;
  font-family: var(--serif);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.15em;
  color: var(--accent-dark);
  background: var(--bg-soft);
  border: 1.5px solid var(--accent-dark);
  padding: 6px 20px;
  margin-bottom: 1rem;
}
.doctor-name {
  font-family: var(--serif);
  font-size: clamp(1.6rem, 2.6vw, 2rem);
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--text-strong);
  margin: 0 0 0.35rem;
  line-height: 1.3;
}
.doctor-name-en {
  font-family: var(--cursive);
  font-size: clamp(1.5rem, 2.6vw, 1.9rem);
  color: var(--accent-dark);
  line-height: 1;
  letter-spacing: 0.04em;
  margin: 0 0 1.5rem;
  font-weight: 400;
}
.doctor-dl { margin: 0 0 1.5rem; }
.doctor-dl dt {
  font-family: var(--serif);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.15em;
  color: var(--accent-dark);
  margin-bottom: 0.4rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--line-soft);
}
.doctor-dl dt:first-child { padding-top: 0; border-top: 0; }
.doctor-dl dd {
  margin: 0 0 0.5rem;
  font-size: 15px;
  line-height: 1.9;
  color: var(--text);
  letter-spacing: 0.04em;
}
.doctor-message {
  position: relative;
  font-family: var(--serif);
  font-size: 15px;
  font-weight: 400;
  line-height: 2.2;
  color: var(--text-strong);
  letter-spacing: 0.08em;
  padding: 1.75rem 0 0;
  margin: 0 0 2rem;
  background: transparent;
  border-top: 1px solid var(--line);
}
.doctor-message::before {
  content: "Message";
  display: block;
  font-family: var(--cursive);
  font-size: 1.6rem;
  color: var(--accent-dark);
  line-height: 1;
  letter-spacing: 0.02em;
  margin-bottom: 0.85rem;
}
.doctor-others {
  max-width: 1080px;
  margin: 0 auto;
  position: relative;
}
.doctor-others-track {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(1.5rem, 3vw, 2.5rem);
}
/* スライダーモード（4人以上） */
.doctor-others--slider { padding: 0 0 3rem; overflow: hidden; }
.doctor-others--slider .doctor-others-track {
  display: flex;
  gap: clamp(1rem, 2vw, 1.5rem);
  transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
  will-change: transform;
}
.doctor-others--slider .doctor-other-card {
  flex: 0 0 calc((100% - clamp(1rem, 2vw, 1.5rem) * 2) / 3);
  min-width: 0;
}
.doctor-others-nav {
  display: flex;
  justify-content: space-between;
  position: absolute;
  top: 40%;
  left: -1rem;
  right: -1rem;
  pointer-events: none;
}
.doctor-others-nav button {
  pointer-events: auto;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--white);
  border: 1px solid var(--line);
  color: var(--text-strong);
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
  box-shadow: var(--shadow-soft);
  transition: all var(--transition);
}
.doctor-others-nav button:hover { background: var(--text-strong); color: var(--white); border-color: var(--text-strong); }
.doctor-others-dots {
  display: flex;
  justify-content: center;
  gap: 0.5rem;
  margin-top: 1.5rem;
}
.doctor-others-dots button {
  width: 10px; height: 10px;
  border-radius: 50%;
  background: var(--line);
  border: 0;
  padding: 0;
  cursor: pointer;
  transition: background var(--transition);
}
.doctor-others-dots button.is-active { background: var(--accent-dark); }
.doctor-other-card {
  display: grid;
  grid-template-columns: 1.2fr 0.8fr;
  gap: 1.25rem;
  background: var(--white);
  padding: clamp(1.5rem, 3vw, 2rem);
  box-shadow: var(--shadow-soft);
  align-items: start;
}
.doctor-other-text { display: flex; flex-direction: column; min-width: 0; }
.doctor-other-photo {
  display: flex;
  justify-content: center;
  align-items: flex-start;
}
.doctor-other-photo img {
  width: auto;
  height: 280px;
  max-width: 100%;
  object-fit: contain;
  display: block;
  box-shadow: none;
}
.doctor-other-role {
  display: inline-block;
  align-self: flex-start;
  font-family: var(--serif);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.18em;
  color: var(--text-strong);
  background: var(--bg-cream);
  padding: 4px 12px;
  margin-bottom: 0.6rem;
}
.doctor-other-name {
  font-family: var(--serif);
  font-size: 1.35rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  color: var(--text-strong);
  margin: 0 0 1rem;
  padding-bottom: 0.85rem;
  border-bottom: 1px solid var(--accent-dark);
  line-height: 1.5;
}
.doctor-other-name-en {
  font-family: var(--cursive);
  font-size: 1.15rem;
  font-weight: 400;
  color: var(--accent-dark);
  letter-spacing: 0.04em;
  margin-left: 0.5rem;
}
.doctor-other-dl { margin: 0 0 1rem; font-size: 14px; }
.doctor-other-dl dt {
  font-family: var(--serif);
  font-weight: 700;
  font-size: 13px;
  color: var(--text-strong);
  letter-spacing: 0.06em;
  margin-bottom: 0.4rem;
}
.doctor-other-dl dt::before {
  content: "▶";
  color: var(--accent-dark);
  margin-right: 0.4em;
  font-size: 0.85em;
}
.doctor-other-dl dd {
  margin: 0;
  font-size: 14px;
  line-height: 1.85;
  color: var(--text);
  letter-spacing: 0.04em;
}
.doctor-other-msg {
  font-size: 14px;
  line-height: 2;
  color: var(--text);
  letter-spacing: 0.04em;
  margin: 0;
}

/* =====================================================
   15. FEATURES (7つの特徴) — 罫線区切り 2カラム
   ===================================================== */
.features-grid {
  display: flex;
  flex-direction: column;
  max-width: 1080px;
  margin: 0 auto;
}
.feature-card {
  display: grid;
  grid-template-columns: 1fr 1.15fr;
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: center;
  padding: clamp(3rem, 5vw, 4.5rem) 0;
  border-bottom: 1px solid var(--line-soft);
}
.feature-card:first-child { padding-top: 0; }
.feature-card:last-child { border-bottom: 0; padding-bottom: 0; }
.feature-card.feature-reverse > .feature-card-photo { order: 2; }
.feature-card-photo { aspect-ratio: 4/3; overflow: hidden; }
.feature-card-photo img { width: 100%; height: 100%; object-fit: cover; }
.feature-card-body {
  display: flex;
  flex-direction: column;
  background: transparent;
  padding: 0;
}
.features-grid { counter-reset: feature; }
.feature-card-num {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  font-family: var(--serif);
  font-weight: 700;
  letter-spacing: 0.3em;
  color: var(--accent-dark);
  margin-bottom: 1.25rem;
  line-height: 1;
}
.feature-card-num::before {
  content: "";
  display: block;
  width: 32px;
  height: 1px;
  background: var(--accent-dark);
}
.feature-card-num::after {
  content: "FEATURE / " counter(feature, decimal-leading-zero);
  counter-increment: feature;
  font-size: 12px;
}

.feature-card-title {
  font-family: var(--serif);
  font-size: clamp(1.25rem, 2.2vw, 1.7rem);
  font-weight: 500;
  line-height: 1.6;
  letter-spacing: 0.08em;
  color: var(--text-strong);
  margin: 0 0 1.25rem;
}
.feature-card-desc {
  font-size: 1rem;
  line-height: 2.1;
  color: var(--text);
  letter-spacing: 0.05em;
  margin: 0;
}

/* =====================================================
   16. ACCESS
   ===================================================== */
.access-content {
  display: grid;
  grid-template-columns: 1fr 0.7fr;
  gap: clamp(2rem, 4vw, 3rem);
  align-items: stretch;
  max-width: 1080px;
  margin: 0 auto;
}
.access-map {
  overflow: hidden;
  box-shadow: var(--shadow-soft);
}
.access-map iframe { width: 100%; height: 100%; min-height: 360px; border: 0; display: block; }
.access-map > div { min-height: 360px; }
@media (max-width: 768px) {
  .access-map iframe,
  .access-map > div { min-height: 720px; }
  .sd-pop--clinic { width: 200px; padding: 8px 10px 24px 10px; font-size: 11px; }
  .sd-pop--parking { width: 180px; padding: 8px 10px 24px 10px; font-size: 11px; }
  .sd-pop--clinic .sd-pop-row { gap: 6px; }
  .sd-pop--clinic .sd-pop-thumb { width: 40px; height: 40px; }
  .sd-pop--clinic .sd-pop-name,
  .sd-pop--parking .sd-pop-name { font-size: 12px; line-height: 1.35; margin: 0 0 3px; }
  .sd-pop--clinic .sd-pop-rating-num { font-size: 13px; }
  .sd-pop-stars { font-size: 10px; }
  .sd-pop-count { font-size: 10px; }
  .sd-pop--clinic .sd-pop-line,
  .sd-pop--parking .sd-pop-line { font-size: 10px; margin: 2px 0; }
  .sd-pop-actions { margin: 5px 0 0; }
  .sd-pop-btn { font-size: 10px !important; padding: 4px 8px !important; }
  .sd-pop-close { width: 18px; height: 18px; font-size: 14px; right: 4px; bottom: 4px; }
  /* モバイルでは上下配置 (左右だと幅が足りないため) */
  .sd-pop--top { transform: translate(-50%, calc(-100% - 16px)); }
  .sd-pop--bottom { transform: translate(-50%, 16px); }
}
.access-detail {
  background: var(--bg-soft);
  padding: clamp(1.75rem, 3vw, 2.5rem);
  display: flex;
  flex-direction: column;
}
.access-detail h3 {
  font-family: var(--serif);
  font-size: 1.1rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  color: var(--text-strong);
  margin: 0 0 1.25rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--line-soft);
}
.access-table { width: 100%; border-collapse: collapse; font-size: 15px; }
.access-table tr { border-bottom: 1px solid var(--line-soft); }
.access-table tr:last-child { border-bottom: 0; }
.access-table th {
  width: 80px;
  padding: 0.85rem 0;
  font-family: var(--serif);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.1em;
  color: var(--accent-dark);
  text-align: left;
  vertical-align: top;
}
.access-table td {
  padding: 0.85rem 0 0.85rem 0.5rem;
  color: var(--text);
  line-height: 1.7;
  letter-spacing: 0.04em;
}

/* legacy access-info (other pages) */
.access-info { text-align: center; }
.access-info p { margin-bottom: 0.25em; }

/* =====================================================
   17. INSTAGRAM
   ===================================================== */
.instagram-icon {
  display: block;
  width: auto;
  height: clamp(54px, 6.6vw, 86px);
  margin: 0 auto 1.5rem;
  opacity: 1;
}
.instagram-section .section-header h2 {
  font-size: clamp(1.25rem, 2.2vw, 1.75rem);
  line-height: 1.7;
}
.instagram-section .section-header h2::after { background: var(--accent-dark); }

/* Instagram Feed (sd_instagram shortcode) */
.sd-ig-grid {
  --sd-ig-cols: 3;
  display: grid;
  grid-template-columns: repeat(var(--sd-ig-cols), 1fr);
  gap: clamp(0.75rem, 1.5vw, 1.25rem);
  max-width: 1080px;
  margin: 0 auto;
}
.sd-ig-item {
  position: relative;
  display: block;
  aspect-ratio: 1;
  overflow: hidden;
  background: var(--bg-soft);
  transition: opacity var(--transition);
}
.sd-ig-item:hover { opacity: 0.85; }
.sd-ig-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s ease;
}
.sd-ig-item:hover img { transform: scale(1.05); }
.sd-ig-empty {
  text-align: center;
  color: var(--text-muted);
  padding: 2rem 0;
  letter-spacing: 0.04em;
}
@media (max-width: 768px) {
  .sd-ig-grid { --sd-ig-cols: 2 !important; }
}

/* =====================================================
   18. BANNER LINKS
   ===================================================== */
.banner-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: 1fr 1fr;
  gap: 1.25rem;
  max-width: 1080px;
  margin: 0 auto;
}
.banner-grid > .banner-link:nth-child(1) { grid-column: 1; grid-row: 1 / span 2; }
.banner-grid > .banner-link:nth-child(2) { grid-column: 2; grid-row: 1 / span 2; }
.banner-grid > .banner-link:nth-child(3) { grid-column: 3; grid-row: 1; }
.banner-grid > .banner-link:nth-child(4) { grid-column: 4; grid-row: 1; }
.banner-grid > .banner-link:nth-child(5) { grid-column: 3; grid-row: 2; }
.banner-grid > .banner-link:nth-child(6) { grid-column: 4; grid-row: 2; }

.banner-link {
  display: block;
  overflow: hidden;
  background: transparent;
  transition: transform var(--transition);
}
.banner-link:hover {
  transform: translateY(-2px);
  opacity: 1;
}
.banner-link img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}

/* =====================================================
   19. ARTICLE CONTENT (固定ページ本文)
   ===================================================== */
.article-content {
  max-width: 800px;
  margin: 2rem auto;
  padding-bottom: 3rem;
  font-size: 15px;
}
.article-content h2 {
  font-family: var(--serif);
  font-size: 1.5rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  margin: 2.5em 0 0.75em;
  padding-bottom: 0.5em;
  border-bottom: 2px solid var(--accent);
  color: var(--text-strong);
}
.article-content h3 {
  font-family: var(--serif);
  font-size: 1.2rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  margin: 1.75em 0 0.5em;
  color: var(--text-strong);
}
.article-content p { line-height: 2; margin-bottom: 1.5em; }
.article-content img { margin: 1.5em 0; }
.article-content ul, .article-content ol { padding-left: 1.5em; margin-bottom: 1.5em; list-style: disc; }
.article-content ol { list-style: decimal; }
.article-content li { margin-bottom: 0.5em; line-height: 1.9; }
.article-content table { width: 100%; border-collapse: collapse; margin: 1.5em 0; font-size: 14px; }
.article-content th, .article-content td { border: 1px solid var(--line); padding: 0.75em 1em; text-align: left; }
.article-content th { background: var(--bg-soft); font-weight: 600; }

/* =====================================================
   20. CARD GRIDS (blog / case / voice — gold offset shadow)
   ===================================================== */
.blog-grid, .case-grid, .voice-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(1.5rem, 3vw, 2.5rem);
  max-width: 1080px;
  margin: 0 auto;
}

.blog-card, .case-card, .voice-card {
  background: var(--white);
  overflow: hidden;
  box-shadow: var(--shadow-gold-sm);
  transition: all var(--transition);
}
.blog-card:hover, .case-card:hover, .voice-card:hover {
  transform: translate(2px, 2px);
  box-shadow: 3px 3px 0 0 var(--accent-dark);
  opacity: 1;
}
.blog-card-link, .case-card-link, .voice-card-link {
  display: block;
  color: var(--text-strong);
}
.blog-card-thumb img, .case-card-thumb img, .voice-card-thumb img {
  width: 100%;
  aspect-ratio: 16/10;
  object-fit: cover;
}
.blog-card-thumb-placeholder { width: 100%; aspect-ratio: 16/10; background: var(--bg-soft); }
.blog-card-body, .case-card-body, .voice-card-body { padding: 1.25rem 1.5rem 1.5rem; }

.blog-card-meta, .case-card-meta {
  display: flex; align-items: center; gap: 0.75rem;
  font-size: 12px; color: var(--text-light);
  letter-spacing: 0.05em;
  margin-bottom: 0.5rem;
}
.blog-card-cat, .case-card-cat, .voice-card-treatment {
  background: var(--bg-soft);
  color: var(--accent-dark);
  padding: 2px 10px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
}
.case-card-patient { font-size: 12px; color: var(--text-muted); margin-left: 0.5rem; }
.blog-card-title, .case-card-title, .voice-card-title {
  font-family: var(--serif);
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  margin: 0 0 0.6em;
  line-height: 1.6;
  color: var(--text-strong);
}
.blog-card-excerpt, .voice-card-excerpt {
  font-size: 14px;
  color: var(--text);
  line-height: 1.9;
  letter-spacing: 0.04em;
}

.case-card-flow { margin-top: 0.85rem; font-size: 13px; }
.case-card-before, .case-card-after { padding: 0.5rem 0; line-height: 1.7; }
.case-card-before span, .case-card-after span {
  display: inline-block;
  font-size: 11px; font-weight: 700;
  padding: 1px 8px;
  margin-right: 0.5rem;
  letter-spacing: 0.08em;
}
.case-card-before span { background: #fef2f2; color: #dc2626; }
.case-card-after span { background: #f0fdf4; color: #16a34a; }

/* Case Detail */
.case-detail { max-width: 800px; margin: 2rem auto; }
.case-detail-header { margin-bottom: 2rem; }
.case-detail-meta { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-bottom: 1rem; }
.case-detail-cat { background: var(--bg-soft); color: var(--accent-dark); padding: 4px 14px; font-size: 13px; font-weight: 600; letter-spacing: 0.08em; }
.case-detail-patient, .case-detail-period { font-size: 13px; color: var(--text-muted); }
.case-detail-title { font-family: var(--serif); font-size: clamp(1.25rem, 2.5vw, 1.75rem); letter-spacing: 0.08em; }
.case-detail-thumbnail { margin-bottom: 2rem; overflow: hidden; }
.case-detail-thumbnail img { width: 100%; }
.case-detail-flow { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; margin-bottom: 2rem; }
.case-detail-before, .case-detail-after { padding: 1.5rem; }
.case-detail-before { background: #fef2f2; }
.case-detail-after { background: #f0fdf4; }
.case-detail-before h3 { color: #dc2626; font-size: 1rem; }
.case-detail-after h3 { color: #16a34a; font-size: 1rem; }

/* Voice */
.voice-card-info {
  display: flex; flex-wrap: wrap; gap: 0.5rem;
  font-size: 12px; color: var(--text-muted);
  letter-spacing: 0.05em;
  margin-top: 0.75rem;
}
.voice-card-name { font-weight: 600; color: var(--text-strong); }
.voice-card-rating { color: var(--accent); font-size: 14px; margin-bottom: 0.4rem; letter-spacing: 0.1em; }
.voice-detail { max-width: 800px; margin: 2rem auto; }
.voice-detail-header { margin-bottom: 2rem; }
.voice-detail-meta { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-bottom: 0.5rem; }
.voice-detail-name, .voice-detail-age, .voice-detail-treatment { font-size: 14px; color: var(--text-muted); }
.voice-detail-treatment { background: var(--bg-soft); color: var(--accent-dark); padding: 2px 10px; letter-spacing: 0.08em; }
.voice-detail-rating { color: var(--accent); font-size: 18px; margin-bottom: 0.5rem; }
.voice-detail-title { font-family: var(--serif); font-size: clamp(1.25rem, 2.5vw, 1.75rem); letter-spacing: 0.08em; }
.voice-detail-thumbnail { margin-bottom: 2rem; overflow: hidden; }
.voice-detail-thumbnail img { width: 100%; }

/* Article single */
.article-single { max-width: 800px; margin: 2rem auto; }
.article-header { margin-bottom: 2rem; }
.article-meta { display: flex; align-items: center; gap: 1rem; margin-bottom: 0.75rem; }
.article-date { font-size: 13px; color: var(--text-light); letter-spacing: 0.05em; }
.article-cat { font-size: 12px; background: var(--bg-soft); color: var(--accent-dark); padding: 2px 10px; letter-spacing: 0.08em; font-weight: 600; }
.article-title { font-family: var(--serif); font-size: clamp(1.25rem, 3vw, 1.75rem); letter-spacing: 0.08em; }
.article-thumbnail { margin-bottom: 2rem; overflow: hidden; }
.article-thumbnail img { width: 100%; }
.article-tags { margin-top: 2rem; display: flex; flex-wrap: wrap; gap: 0.5rem; }
.article-tags .tag { background: var(--bg-soft); padding: 4px 14px; font-size: 13px; color: var(--text-muted); letter-spacing: 0.05em; }
.article-nav { display: flex; justify-content: space-between; margin-top: 2rem; padding-top: 2rem; border-top: 1px solid var(--line-soft); }
.article-nav a { font-size: 14px; }

/* =====================================================
   21. PAGINATION
   ===================================================== */
.pagination, .nav-links { display: flex; justify-content: center; gap: 0.5rem; margin: 3rem 0; }
.page-numbers {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 40px; height: 40px;
  font-family: var(--serif);
  font-size: 14px;
  letter-spacing: 0.05em;
  color: var(--text-strong);
  background: var(--white);
  border: 1px solid var(--line);
  transition: all var(--transition);
}
.page-numbers:hover { background: var(--bg-soft); color: var(--accent-dark); border-color: var(--accent-dark); opacity: 1; }
.page-numbers.current { background: var(--accent); color: var(--text-strong); border-color: var(--accent); }

/* =====================================================
   22. 404 / NO POSTS
   ===================================================== */
.error-404 { text-align: center; padding: 4rem 0; }
.error-404-code {
  font-family: var(--cursive);
  font-size: 6rem;
  font-weight: 700;
  color: var(--accent-dark);
  line-height: 1;
  margin-bottom: 0.25em;
}
.error-404-message { font-size: 1.05rem; color: var(--text-muted); margin-bottom: 2rem; letter-spacing: 0.05em; }
.no-posts { text-align: center; padding: 3rem 0; color: var(--text-muted); font-size: 1rem; letter-spacing: 0.05em; }

/* =====================================================
   23. FOOTER
   ===================================================== */
.site-footer {
  background: var(--text-strong);
  color: rgba(255,255,255,0.75);
  padding: clamp(3rem, 6vw, 5rem) 0 0;
  margin-top: 0;
}
.footer-grid {
  display: grid;
  grid-template-columns: 1.2fr 0.8fr 1fr;
  gap: clamp(2rem, 4vw, 3.5rem);
  padding-bottom: 2.5rem;
}
.footer-brand,
.footer-menu,
.footer-contact { min-width: 0; }
.footer-brand-logo { margin-bottom: 1rem; }
.footer-logo-text {
  font-family: var(--serif);
  font-size: 1rem;
  font-weight: 500;
  color: rgba(255,255,255,0.92);
  letter-spacing: 0.06em;
}
.footer-brand-desc {
  font-size: 14px;
  line-height: 2;
  color: rgba(255,255,255,0.6);
  letter-spacing: 0.04em;
}
.footer-menu h3, .footer-contact h3 {
  font-family: var(--cursive);
  font-size: 1.6rem;
  font-weight: 700;
  color: var(--accent);
  margin: 0 0 1rem;
  letter-spacing: 0.02em;
}
.footer-menu ul { list-style: none; }
.footer-menu li { margin-bottom: 0.6rem; }
.footer-menu a {
  color: rgba(255,255,255,0.65);
  font-size: 14px;
  letter-spacing: 0.05em;
  transition: color var(--transition);
}
.footer-menu a:hover { color: var(--white); opacity: 1; }
.footer-sns { margin-top: 1.5rem; display: flex; gap: 1rem; }
.footer-sns a { color: rgba(255,255,255,0.5); transition: color var(--transition); }
.footer-sns a:hover { color: var(--white); opacity: 1; }
.footer-contact-box { display: flex; flex-direction: column; gap: 0.85rem; }
.footer-contact-item { display: flex; align-items: flex-start; gap: 0.85rem; }
.footer-contact-icon { flex-shrink: 0; color: rgba(255,255,255,0.4); margin-top: 3px; }
.footer-contact-text {
  font-size: 14px;
  color: rgba(255,255,255,0.75);
  line-height: 1.75;
  letter-spacing: 0.04em;
}
.footer-contact-phone {
  font-size: 18px;
  font-weight: 600;
  font-family: var(--serif);
  color: rgba(255,255,255,0.92);
  letter-spacing: 0.05em;
  transition: color var(--transition);
}
.footer-contact-phone:hover { color: var(--accent); opacity: 1; }
.footer-schedule {
  margin-top: 1.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid rgba(255,255,255,0.08);
  max-width: 100%;
  min-width: 0;
}
.footer-schedule-title {
  font-family: var(--cursive);
  font-size: 1.6rem;
  font-weight: 700;
  color: var(--accent);
  margin: 0 0 1rem;
  text-align: left;
  letter-spacing: 0.02em;
}
.footer-schedule-table-wrap {
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  max-width: 100%;
  width: 100%;
}
.footer-schedule-table-wrap::-webkit-scrollbar { height: 6px; }
.footer-schedule-table-wrap::-webkit-scrollbar-track { background: rgba(255,255,255,0.05); border-radius: 3px; }
.footer-schedule-table-wrap::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.3); border-radius: 3px; }
.footer-schedule-scroll-hint {
  display: none;
  text-align: center;
  font-size: 11px;
  color: rgba(255,255,255,0.5);
  margin: 0.4rem 0 0;
  letter-spacing: 0.1em;
}
.footer-schedule-table {
  width: 100%;
  margin: 0;
  border-collapse: collapse;
  color: rgba(255,255,255,0.9);
  font-family: var(--sans);
}
.footer-schedule-table th,
.footer-schedule-table td {
  padding: 0.55rem 0.25rem;
  text-align: center;
  border-bottom: 1px solid rgba(255,255,255,0.15);
  font-size: 0.85rem;
  font-weight: 500;
}
.footer-schedule-table thead th {
  font-weight: 600;
  letter-spacing: 0.06em;
  color: rgba(255,255,255,0.95);
  border-bottom: 2px solid rgba(255,255,255,0.3);
}
.footer-schedule-table .footer-schedule-th-time {
  text-align: left;
  padding-left: 0.6rem;
  width: 32%;
  font-size: 0.75rem;
}
.footer-schedule-table tbody th {
  text-align: left;
  padding-left: 0.6rem;
  font-weight: 500;
  color: rgba(255,255,255,0.85);
  font-size: 0.78rem;
  letter-spacing: 0;
  white-space: nowrap;
}
.footer-schedule-table .footer-schedule-rest {
  color: #f39da6;
}
.footer-schedule-table tbody td {
  font-size: 0.95rem;
}
.footer-schedule-note {
  text-align: left;
  font-size: 0.75rem;
  color: rgba(255,255,255,0.6);
  margin: 0.85rem 0 0;
  letter-spacing: 0.04em;
  line-height: 1.7;
}
@media (max-width: 768px) {
  .footer-schedule-title { text-align: center; }
  .footer-schedule-table {
    min-width: 420px;
    table-layout: fixed;
  }
  .footer-schedule-table th,
  .footer-schedule-table td { padding: 0.5rem 0.15rem; font-size: 0.78rem; }
  .footer-schedule-table .footer-schedule-th-time {
    width: 88px;
    padding-left: 0.4rem;
    padding-right: 0.1rem;
    font-size: 0.68rem;
  }
  .footer-schedule-table tbody th {
    padding-left: 0.4rem;
    padding-right: 0.1rem;
    font-size: 0.68rem;
  }
  .footer-schedule-scroll-hint { display: block; }
}

.footer-bottom { border-top: 1px solid rgba(255,255,255,0.1); padding: 1.5rem 0; text-align: center; margin-top: 1.5rem; }
.footer-copyright {
  font-size: 12px;
  color: rgba(255,255,255,0.4);
  letter-spacing: 0.1em;
  margin: 0;
}

/* =====================================================
   24. ANIMATIONS
   ===================================================== */
.fade-in {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.fade-in.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* =====================================================
   24-A. TREATMENT PAGE (12メニュー共通テンプレート)
   ===================================================== */
.treatment-page { padding-top: 80px; }
.container-narrow { width: min(100% - 2rem, 1080px); margin-inline: auto; }

.treatment-hero {
  position: relative;
  min-height: clamp(280px, 38vw, 420px);
  background-color: var(--bg-soft);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem 0;
}
.treatment-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(255,255,255,0.15) 0%, rgba(0,0,0,0.30) 100%);
}
.treatment-hero-band {
  position: relative;
  z-index: 1;
  background: rgba(255,255,255,0.86);
  backdrop-filter: blur(2px);
  padding: clamp(1.5rem, 3vw, 2.5rem) 1.5rem;
  text-align: center;
  width: 100%;
  border-top: 1px solid rgba(154,124,27,0.25);
  border-bottom: 1px solid rgba(154,124,27,0.25);
}
.treatment-hero-title {
  font-family: var(--serif);
  font-size: clamp(2rem, 5vw, 3.2rem);
  font-weight: 600;
  letter-spacing: 0.4em;
  color: var(--text-strong);
  margin: 0;
  line-height: 1.4;
  text-indent: 0.4em;
}
.treatment-hero-en {
  font-family: var(--cursive);
  font-size: clamp(1.4rem, 2.6vw, 2rem);
  color: var(--accent-dark);
  letter-spacing: 0.04em;
  margin: 0.4rem 0 0;
  line-height: 1;
  font-weight: 700;
}

/* リード (黄色帯) */
.treatment-intro {
  background: var(--bg);
  padding: clamp(3rem, 6vw, 5rem) 0;
}
.treatment-intro-heading {
  font-family: var(--serif);
  font-size: clamp(1.4rem, 2.6vw, 1.85rem);
  font-weight: 600;
  letter-spacing: 0.1em;
  color: var(--text-strong);
  text-align: center;
  margin: 0 0 2.5rem;
  line-height: 1.5;
}
.treatment-intro-slash {
  display: inline-block;
  color: var(--accent-dark);
  font-weight: 400;
  margin: 0 0.5rem;
}
.treatment-intro-grid {
  display: flex;
  flex-direction: column;
  gap: clamp(1.5rem, 3vw, 2rem);
  align-items: stretch;
  max-width: 880px;
  margin: 0 auto;
}
.treatment-intro-text {
  background: var(--bg-cream);
  padding: clamp(1.75rem, 3vw, 2.5rem);
  font-size: 1rem;
  line-height: 2.1;
  letter-spacing: 0.05em;
  color: var(--text-strong);
}
.treatment-intro-text p { margin: 0 0 1em; }
.treatment-intro-text p:last-child { margin-bottom: 0; }
.treatment-intro-image img { width: 100%; height: auto; display: block; }

.treatment-section { padding: clamp(3rem, 6vw, 5rem) 0; background: var(--bg); }
.treatment-section--alt { background: var(--bg-soft); }
.treatment-section--qa { background: var(--bg); }

.treatment-h2 {
  font-family: var(--serif);
  font-size: clamp(1.4rem, 2.6vw, 2rem);
  font-weight: 600;
  letter-spacing: 0.12em;
  color: var(--text-strong);
  text-align: center;
  margin: 0 0 2.5rem;
  line-height: 1.6;
}
.treatment-h2::after {
  content: "";
  display: block;
  width: 32px;
  height: 1px;
  background: var(--accent-dark);
  margin: 1.25rem auto 0;
}
.treatment-h3 {
  font-family: var(--serif);
  font-size: clamp(1.1rem, 2vw, 1.4rem);
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--text-strong);
  margin: 2.5rem 0 1.25rem;
  padding-left: 1rem;
  border-left: 4px solid var(--accent);
  line-height: 1.6;
}
.treatment-top-subheading {
  font-family: var(--serif);
  font-size: clamp(1.1rem, 2vw, 1.4rem);
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--text-strong);
  margin: 0 0 1.5rem;
  padding-bottom: 0.85rem;
  border-bottom: 1px solid var(--accent-dark);
  line-height: 1.7;
}
.treatment-body {
  font-size: 1rem;
  line-height: 2.1;
  letter-spacing: 0.05em;
  color: var(--text);
  margin: 0 0 1.5rem;
}
.treatment-body--after { margin: 1.5rem 0 0; }
.treatment-quote-list {
  list-style: none;
  padding: 0;
  margin: 0 0 1.25rem;
}
.treatment-quote-list li {
  font-family: var(--serif);
  font-size: clamp(1rem, 2vw, 1.15rem);
  font-weight: 600;
  line-height: 1.85;
  color: var(--accent-dark);
  letter-spacing: 0.06em;
  padding: 0.15rem 0;
}
.treatment-quote-caption {
  font-family: var(--serif);
  font-size: 1.05rem;
  color: var(--accent-dark);
  font-weight: 600;
  letter-spacing: 0.06em;
  margin: 0 0 1.5rem;
  padding-bottom: 1rem;
  border-bottom: 1px dashed var(--line-soft);
}

.treatment-list {
  list-style: none;
  padding: 0;
  margin: 1rem 0 0;
}
.treatment-list li {
  position: relative;
  padding: 0.85rem 0 0.85rem 2rem;
  border-bottom: 1px solid var(--line-soft);
  font-family: var(--serif);
  font-size: 1rem;
  letter-spacing: 0.04em;
  color: var(--text-strong);
}
.treatment-list li:first-child { border-top: 1px solid var(--line-soft); }
.treatment-list li::before {
  content: "";
  position: absolute;
  left: 0.4rem;
  top: 1.4rem;
  width: 8px; height: 8px;
  background: var(--accent);
  border-radius: 50%;
}

/* セクション全体を 2カラム化 (subsections や cards等を含む) */
.treatment-aside-wrap {
  display: flex;
  flex-direction: row;
  gap: clamp(1.5rem, 3vw, 2.5rem);
  align-items: flex-start;
}
.treatment-aside-wrap > .treatment-aside-content { flex: 1 1 0; min-width: 0; }
.treatment-aside-wrap > .treatment-aside-image {
  flex: 0 0 440px;
  max-width: 440px;
}
.treatment-aside-image img { width: 100%; height: auto; display: block; }
@media (max-width: 1024px) {
  .treatment-aside-wrap > .treatment-aside-image { flex: 0 0 360px; max-width: 360px; }
}
@media (max-width: 768px) {
  .treatment-aside-wrap { flex-direction: column; }
  .treatment-aside-wrap > .treatment-aside-image { flex: 0 0 auto; max-width: 440px; margin: 0 auto; }
}

/* 3カラム カード (矯正の種類など) */
.treatment-column-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: clamp(1rem, 2vw, 1.5rem);
  margin: 2rem 0 0;
  max-width: 880px;
  margin-left: auto;
  margin-right: auto;
}
.treatment-column-card {
  display: flex;
  flex-direction: column;
  background: var(--white);
  box-shadow: var(--shadow-soft);
  overflow: hidden;
}
.treatment-column-card-label {
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  color: var(--text-strong);
  background: var(--accent-soft);
  padding: 0.85rem 1rem;
  margin: 0;
  text-align: center;
}
.treatment-column-card-image {
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--bg-soft);
}
.treatment-column-card-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.treatment-column-card-body {
  padding: 1.25rem;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.treatment-column-card-meritle {
  font-family: var(--serif);
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--text-strong);
  margin: 0;
}
.treatment-column-card-pros,
.treatment-column-card-cons {
  list-style: none;
  margin: 0;
  padding: 0;
}
.treatment-column-card-pros li,
.treatment-column-card-cons li {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  font-size: 0.9rem;
  line-height: 1.7;
  color: var(--text);
  letter-spacing: 0.04em;
  padding: 0.25rem 0;
}
.treatment-merit-mark {
  flex-shrink: 0;
  font-weight: 700;
  width: 18px;
  text-align: center;
  font-size: 1rem;
  line-height: 1.5;
}
.treatment-merit-mark.merit { color: #c47918; }
.treatment-merit-mark.demerit { color: #888; }

@media (max-width: 1024px) {
  .treatment-column-cards { grid-template-columns: 1fr; max-width: 480px; margin-left: auto; margin-right: auto; }
}

/* ハイライトボックス */
.treatment-highlight-box {
  background: var(--bg-soft);
  border-top: 2px solid var(--accent-dark);
  border-bottom: 2px solid var(--accent-dark);
  padding: clamp(1.5rem, 3vw, 2.25rem) clamp(1.5rem, 3vw, 2.5rem);
  margin: 2.5rem 0 0;
  text-align: center;
  position: relative;
}
.treatment-highlight-box::before,
.treatment-highlight-box::after {
  content: "";
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  width: 80px;
  height: 8px;
  background: var(--accent);
}
.treatment-highlight-box::before { top: -5px; }
.treatment-highlight-box::after  { bottom: -5px; }
.treatment-highlight-box p {
  margin: 0;
  font-family: var(--serif);
  font-size: clamp(1rem, 2vw, 1.15rem);
  line-height: 2.1;
  color: var(--text-strong);
  letter-spacing: 0.06em;
  font-weight: 500;
}
.treatment-highlight-box p strong {
  color: var(--accent-dark);
  font-weight: 700;
  font-size: 1.05em;
  background: linear-gradient(transparent 60%, var(--accent-soft) 60%);
  padding: 0 0.1em;
}

/* 症例紹介 (Before/After) */
.treatment-cases {
  display: flex;
  flex-direction: column;
  gap: clamp(2.5rem, 5vw, 4rem);
  margin: 2rem 0 0;
}
.treatment-case {
  border-top: 1px solid var(--line);
  padding-top: clamp(1.5rem, 3vw, 2.5rem);
}
.treatment-case-title {
  font-family: var(--serif);
  font-size: clamp(1.1rem, 2vw, 1.3rem);
  font-weight: 700;
  letter-spacing: 0.05em;
  color: var(--text-strong);
  margin: 0 0 1.5rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--line-soft);
}
.treatment-case-row {
  text-align: center;
  margin: 0 0 1.5rem;
}
.treatment-case-label {
  display: inline-block;
  font-family: var(--serif);
  font-weight: 700;
  font-size: 0.95rem;
  letter-spacing: 0.12em;
  padding: 0.25rem 1.5rem;
  margin: 0 0 0.85rem;
  background: var(--bg-soft);
}
.treatment-case-label--before { color: #4a7fb8; }
.treatment-case-label--after { color: #c47918; }
.treatment-case-images {
  display: grid;
  gap: 0.5rem;
  align-items: center;
  justify-items: center;
}
.treatment-case-images[data-count="1"] { grid-template-columns: 1fr; max-width: 480px; margin: 0 auto; }
.treatment-case-images[data-count="2"] { grid-template-columns: 1fr 1fr; }
.treatment-case-images[data-count="3"] { grid-template-columns: repeat(3, 1fr); }
.treatment-case-images[data-count="4"],
.treatment-case-images[data-count="6"] { grid-template-columns: repeat(3, 1fr); }
.treatment-case-images img {
  width: 100%;
  height: auto;
  display: block;
}
.treatment-case-progression {
  display: block;
  margin: 0 0 1.25rem;
}
.treatment-case-progression img {
  width: 100%;
  height: auto;
  display: block;
}
.treatment-case-ba { display: block; }
.treatment-case--side-by-side .treatment-case-ba {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
  align-items: start;
}
.treatment-case--side-by-side .treatment-case-row { margin: 0; }
@media (max-width: 768px) {
  .treatment-case--side-by-side .treatment-case-ba {
    grid-template-columns: 1fr;
    gap: 1rem;
  }
}
.treatment-case-summary {
  background: var(--bg-soft);
  padding: 1rem 1.5rem;
  margin: 1.5rem 0 0;
  position: relative;
}
.treatment-case-summary-label {
  display: inline-block;
  background: var(--accent-soft);
  font-family: var(--serif);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.15em;
  padding: 2px 12px;
  margin: 0 0 0.5rem;
  color: var(--text-strong);
}
.treatment-case-summary ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.treatment-case-summary li {
  font-size: 0.95rem;
  color: var(--text);
  letter-spacing: 0.04em;
  line-height: 1.85;
  padding: 0.15rem 0;
}
.treatment-case-body {
  margin: 1.25rem 0 0;
  font-size: 0.95rem;
  line-height: 2;
  color: var(--text);
  letter-spacing: 0.04em;
}
@media (max-width: 768px) {
  .treatment-case-images[data-count="3"],
  .treatment-case-images[data-count="4"],
  .treatment-case-images[data-count="6"] { grid-template-columns: 1fr 1fr; }
}

/* 価格バナー (治療内容と費用) */
.treatment-price-banner {
  margin: 2rem 0 0;
  background: var(--bg-soft);
  padding: clamp(1.75rem, 4vw, 3rem) clamp(1.5rem, 3vw, 2.5rem);
}
.treatment-price-banner-head {
  text-align: center;
  padding-bottom: clamp(1.5rem, 3vw, 2rem);
  border-bottom: 1px solid var(--line-soft);
  margin-bottom: clamp(1.5rem, 3vw, 2rem);
}
.treatment-price-banner-name {
  font-family: var(--serif);
  font-size: clamp(1rem, 2vw, 1.15rem);
  letter-spacing: 0.18em;
  color: var(--text-muted);
  margin: 0 0 0.5em;
  font-weight: 500;
}
.treatment-price-banner-price {
  margin: 0;
  display: inline-flex;
  align-items: baseline;
  gap: 0.5em;
}
.treatment-price-banner-amount {
  font-family: var(--serif);
  font-size: clamp(2rem, 5vw, 3.25rem);
  font-weight: 700;
  color: var(--accent-dark);
  letter-spacing: 0.04em;
  line-height: 1;
}
.treatment-price-banner-tax {
  font-size: 0.85rem;
  color: var(--text-muted);
  letter-spacing: 0.08em;
}
.treatment-price-banner-features {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 1.25rem;
}
.treatment-price-banner-feature {
  background: var(--white);
  padding: 1.5rem 1.5rem 1.25rem;
  border: 1px solid var(--line-soft);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.5rem;
}
.treatment-price-banner-badge {
  display: inline-block;
  font-family: var(--serif);
  font-size: 0.78rem;
  letter-spacing: 0.14em;
  color: var(--accent-dark);
  background: var(--accent-soft);
  padding: 0.35em 0.9em;
  font-weight: 600;
}
.treatment-price-banner-main {
  font-family: var(--serif);
  font-size: 1.05rem;
  line-height: 1.7;
  color: var(--text-strong);
  margin: 0;
  letter-spacing: 0.04em;
  font-weight: 500;
}
.treatment-price-banner-main strong {
  color: var(--accent-dark);
  font-weight: 700;
  font-size: 1.15em;
  margin: 0 0.1em;
}
.treatment-price-banner-note {
  font-size: 0.85rem;
  color: var(--text-muted);
  margin: 0;
  letter-spacing: 0.04em;
  line-height: 1.7;
}

/* 汎用データテーブル */
.treatment-data-table-wrap {
  margin: 1.5rem 0 0;
  overflow-x: auto;
  position: relative;
  -webkit-overflow-scrolling: touch;
}
/* スクロールバーを常時表示 (モバイル) */
.treatment-data-table-wrap::-webkit-scrollbar { height: 8px; }
.treatment-data-table-wrap::-webkit-scrollbar-track { background: var(--bg-soft); border-radius: 4px; }
.treatment-data-table-wrap::-webkit-scrollbar-thumb { background: var(--accent-dark); border-radius: 4px; }
.treatment-data-table {
  width: 100%;
  border-collapse: collapse;
  border: 1px solid var(--line);
  background: var(--white);
}
.treatment-data-table thead th {
  background: var(--accent-soft);
  font-family: var(--serif);
  font-weight: 700;
  font-size: 0.95rem;
  text-align: center;
  padding: 1rem;
  border: 1px solid var(--line-soft);
  color: var(--text-strong);
  letter-spacing: 0.06em;
}
.treatment-data-table tbody td {
  padding: 1.1rem 1.25rem;
  border: 1px solid var(--line-soft);
  font-size: 0.95rem;
  line-height: 1.85;
  color: var(--text);
  vertical-align: middle;
  letter-spacing: 0.04em;
}
.treatment-data-table tbody td:first-child {
  font-family: var(--serif);
  font-weight: 600;
  color: var(--text-strong);
  white-space: nowrap;
}
@media (max-width: 768px) {
  .treatment-data-table-wrap {
    margin-right: -1rem;
    padding-right: 1rem;
    background:
      linear-gradient(90deg, var(--bg-cream) 0%, transparent 8%, transparent 92%, var(--bg-cream) 100%),
      linear-gradient(90deg, rgba(0,0,0,0.08), transparent 8%, transparent 92%, rgba(0,0,0,0.08));
    background-attachment: local, scroll;
  }
  .treatment-section--alt .treatment-data-table-wrap {
    background:
      linear-gradient(90deg, var(--bg) 0%, transparent 8%, transparent 92%, var(--bg) 100%),
      linear-gradient(90deg, rgba(0,0,0,0.08), transparent 8%, transparent 92%, rgba(0,0,0,0.08));
    background-attachment: local, scroll;
  }
  .treatment-data-table { font-size: 0.85rem; min-width: 560px; }
  .treatment-data-table tbody td { padding: 0.85rem 0.75rem; }
  .treatment-data-table-wrap::after {
    content: '← 横にスクロール →';
    display: block;
    text-align: center;
    font-size: 11px;
    color: var(--text-light);
    margin-top: 0.5rem;
    letter-spacing: 0.1em;
  }
}

/* 注釈リスト (※マーク) */
.treatment-notes {
  list-style: none;
  margin: 1.25rem 0 0;
  padding: 0;
}
.treatment-notes li {
  font-size: 0.9rem;
  color: var(--text-muted);
  letter-spacing: 0.04em;
  line-height: 1.85;
  padding: 0.15rem 0;
}

/* 治療段階の比較テーブル */
.treatment-phase-table {
  width: 100%;
  border-collapse: collapse;
  border: 1px solid var(--line-soft);
  margin: 2rem 0 0;
  background: var(--white);
}
.treatment-phase-table th {
  background: var(--accent-soft);
  font-family: var(--serif);
  font-weight: 700;
  font-size: 0.95rem;
  text-align: center;
  padding: 1.5rem 1rem;
  border: 1px solid var(--line-soft);
  width: 200px;
  letter-spacing: 0.06em;
  color: var(--text-strong);
  vertical-align: middle;
  line-height: 1.7;
}
.treatment-phase-table td {
  padding: 1.25rem 1.5rem;
  border: 1px solid var(--line-soft);
  font-size: 0.95rem;
  line-height: 1.95;
  color: var(--text);
  letter-spacing: 0.04em;
  vertical-align: middle;
}
@media (max-width: 768px) {
  .treatment-phase-table th,
  .treatment-phase-table td { display: block; width: 100%; box-sizing: border-box; text-align: left; }
  .treatment-phase-table th { padding: 0.85rem 1rem; }
}

/* CTA ボタン (症例を見る等) */
.treatment-cta-button-wrap {
  text-align: center;
  margin: 2.5rem 0 0;
}
.treatment-cta-link {
  display: inline-flex;
  align-items: center;
  padding: 1rem 2.5rem;
  background: var(--text-strong);
  color: var(--white);
  font-family: var(--serif);
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  border-radius: 4px;
  transition: all var(--transition);
}
.treatment-cta-link:hover {
  background: var(--accent-dark);
  color: var(--white);
  opacity: 1;
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(152,120,27,0.18);
}

/* 支払い方法 */
.treatment-payment {
  border: 2px solid var(--accent);
  padding: clamp(1.5rem, 3vw, 2rem);
  margin: 3rem auto 0;
  text-align: center;
  border-radius: 6px;
  max-width: 640px;
}
.treatment-payment-text {
  font-size: 0.95rem;
  color: var(--text-strong);
  letter-spacing: 0.04em;
  margin: 0 0 1rem;
}
.treatment-payment-image {
  max-width: 100%;
  height: auto;
  margin: 0 auto;
  display: block;
}

/* セクション本文 + 右寄せ画像 */
.treatment-section-with-image {
  display: flex;
  flex-direction: row;
  gap: clamp(1.5rem, 3vw, 2.5rem);
  align-items: flex-start;
  flex-wrap: nowrap;
}
.treatment-section-with-image > .treatment-body-wrap {
  flex: 1 1 0;
  min-width: 0;
}
.treatment-section-with-image > .treatment-side-image {
  flex: 0 0 360px;
  max-width: 360px;
}
.treatment-section-with-image .treatment-body { margin-bottom: 0; }
.treatment-side-image img { width: 100%; height: auto; display: block; }
@media (max-width: 1024px) {
  .treatment-section-with-image > .treatment-side-image { flex: 0 0 280px; max-width: 280px; }
}

/* カード型ギャラリー (治療内容/治療風景) */
.treatment-cards {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(1rem, 2vw, 1.5rem);
  margin: 2rem 0 0;
}
.treatment-card {
  background: var(--bg-soft);
  border: 1px solid var(--line-soft);
  display: flex;
  flex-direction: column;
}
.treatment-card-label {
  font-family: var(--serif);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.12em;
  color: var(--text-strong);
  padding: 0.85rem 1.25rem;
  background: var(--bg);
  border-bottom: 1px solid var(--line-soft);
}
.treatment-card-body { padding: 1.25rem; }
.treatment-card-text {
  font-size: 0.95rem;
  line-height: 1.95;
  color: var(--text);
  letter-spacing: 0.04em;
  margin: 0 0 1rem;
}
.treatment-card-images {
  display: grid;
  gap: 0.85rem;
  align-items: end;
}
.treatment-card-images[data-count="1"] { grid-template-columns: 1fr; }
.treatment-card-images[data-count="2"] { grid-template-columns: 1fr 1fr; }
.treatment-card-images[data-count="3"] { grid-template-columns: repeat(3, 1fr); }
.treatment-card-images figure { margin: 0; text-align: center; }
.treatment-card-images img { width: 100%; height: auto; display: block; background: var(--white); }
.treatment-card-images figcaption {
  margin-top: 0.4rem;
  font-size: 12px;
  color: var(--text-muted);
  letter-spacing: 0.05em;
}
.treatment-card-note {
  margin: 0.75rem 0 0;
  font-size: 12px;
  color: var(--text-muted);
  letter-spacing: 0.04em;
  line-height: 1.7;
}

@media (max-width: 768px) {
  .treatment-section-with-image { flex-direction: column; }
  .treatment-section-with-image > .treatment-side-image {
    flex: 0 0 auto !important;
    max-width: 100% !important;
    width: 100% !important;
    margin: 0 auto;
  }
  .treatment-section-with-image > .treatment-side-image img { max-width: 480px; margin: 0 auto; }
  .treatment-cards { grid-template-columns: 1fr; }
  .treatment-highlight-box { text-align: left; }
}

.treatment-subsections {
  margin: 2rem 0 0;
  display: grid;
  gap: 1.5rem;
}
.treatment-subsection-group {
  font-family: var(--serif);
  font-size: clamp(1.2rem, 2.2vw, 1.6rem);
  font-weight: 600;
  letter-spacing: 0.12em;
  color: var(--text-strong);
  text-align: center;
  margin: 2rem 0 0.5rem;
  line-height: 1.6;
}
.treatment-subsection {
  background: var(--white);
  padding: clamp(1.5rem, 3vw, 2rem);
  box-shadow: var(--shadow-soft);
  border-left: 3px solid var(--accent);
}
.treatment-subsection--with-image {
  display: flex;
  flex-direction: row;
  gap: clamp(1.5rem, 3vw, 2rem);
  align-items: flex-start;
}
.treatment-subsection--with-image > .treatment-subsection-text { flex: 1 1 0; min-width: 0; }
.treatment-subsection--with-image > .treatment-subsection-image {
  flex: 0 0 280px;
  max-width: 280px;
}
.treatment-subsection-image img { width: 100%; height: auto; display: block; }
.treatment-subsection-heading {
  font-family: var(--serif);
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--text-strong);
  margin: 0 0 0.85rem;
  line-height: 1.6;
}
.treatment-subsection-body {
  margin: 0;
  font-size: 0.95rem;
  line-height: 2;
  color: var(--text);
  letter-spacing: 0.04em;
}
.treatment-subsection-note {
  margin: 1rem 0 0;
  font-size: 0.9rem;
  color: var(--text);
  text-align: center;
}
.treatment-subsection-link {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.5rem 1.25rem;
  border: 1px solid var(--text-strong);
  font-family: var(--serif);
  font-size: 0.9rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--text-strong);
  transition: all var(--transition);
}
.treatment-subsection-link:hover { background: var(--text-strong); color: var(--white); opacity: 1; }

@media (max-width: 768px) {
  .treatment-subsection--with-image { flex-direction: column; }
  .treatment-subsection--with-image > .treatment-subsection-image { flex: 0 0 auto; max-width: 280px; margin: 0 auto; }
}

/* pros/cons subsection variant */
.treatment-subsection--prosCons {
  display: block;
  background: var(--white);
  padding: clamp(1.5rem, 3vw, 2.25rem);
  border-left: 3px solid var(--accent);
}
.treatment-subsection--prosCons > .treatment-subsection-heading {
  margin-bottom: clamp(1.25rem, 2.5vw, 1.75rem);
  padding-bottom: 0.85rem;
  border-bottom: 1px solid var(--line-soft);
  font-size: 1.2rem;
}
.treatment-subsection-row {
  display: flex;
  flex-direction: row;
  gap: clamp(1.5rem, 3vw, 2.25rem);
  align-items: flex-start;
  margin-bottom: clamp(1.25rem, 2.5vw, 1.75rem);
}
.treatment-subsection-row > .treatment-subsection-image {
  flex: 0 0 240px;
  max-width: 240px;
}
.treatment-subsection-row > .treatment-subsection-text { flex: 1 1 0; min-width: 0; }
.treatment-subsection-row > .treatment-subsection-text .treatment-subsection-body + .treatment-subsection-body { margin-top: 0.85em; }
.treatment-subsection-pros-heading {
  font-family: var(--serif);
  font-weight: 600;
  font-size: 0.95rem;
  letter-spacing: 0.16em;
  color: var(--white);
  background: var(--accent-dark);
  padding: 0.6rem 1.25rem;
  margin: 1.5rem 0 1rem;
  display: block;
}
.treatment-subsection-pros-heading--cons { background: var(--text-strong); }
.treatment-subsection-pros-list {
  list-style: disc;
  padding-left: 1.5em;
  margin: 0 0 0.5rem;
}
.treatment-subsection-pros-list li {
  font-size: 0.95rem;
  line-height: 1.95;
  color: var(--text);
  letter-spacing: 0.04em;
  padding: 0.15rem 0;
}
.treatment-subsection-pros-list li strong {
  color: var(--text-strong);
  font-weight: 700;
}
@media (max-width: 768px) {
  .treatment-subsection-row { flex-direction: column; }
  .treatment-subsection-row > .treatment-subsection-image { flex: 0 0 auto; max-width: 240px; margin: 0 auto; }
}

/* subsection 内ネストグループ */
.treatment-subsection-groups {
  margin-top: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
.treatment-subsection-group-item {
  padding: 0;
}
.treatment-subsection-group-heading {
  font-family: var(--serif);
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--text-strong);
  margin: 0 0 0.5rem;
  padding-left: 0.75rem;
  border-left: 3px solid var(--accent);
  line-height: 1.5;
}
.treatment-subsection-group-body {
  margin: 0 0 0.5rem;
  font-size: 0.95rem;
  line-height: 1.95;
  color: var(--text);
  letter-spacing: 0.04em;
}
.treatment-subsection-group-list {
  list-style: disc;
  padding-left: 1.5em;
  margin: 0;
}
.treatment-subsection-group-list li {
  font-size: 0.92rem;
  line-height: 1.95;
  color: var(--text);
  letter-spacing: 0.04em;
  padding: 0.1rem 0;
}

/* ============================================
   アクセスページ
   ============================================ */
.access-page {
  background: var(--white);
  padding-top: 80px;
}
@media (max-width: 768px) {
  .access-page { padding-top: 60px; }
}
.access-section-page { padding: clamp(3rem, 6vw, 5rem) 0; }
.access-section-eyebrow {
  font-family: 'Corinthia', cursive;
  font-size: clamp(2rem, 4vw, 2.75rem);
  color: var(--accent-dark);
  text-align: center;
  margin: 0;
  line-height: 1;
  font-weight: 400;
}
.access-section-title {
  font-family: var(--serif);
  font-size: clamp(1.5rem, 3vw, 2rem);
  text-align: center;
  letter-spacing: 0.18em;
  color: var(--text-strong);
  font-weight: 500;
  margin: 0.5rem 0 0;
  position: relative;
  padding-bottom: 1.25rem;
}
.access-section-title::after {
  content: "";
  display: block;
  width: 40px;
  height: 1px;
  background: var(--accent-dark);
  margin: 1rem auto 0;
}
.access-gmap {
  width: 100%;
  aspect-ratio: 16 / 8;
  margin: 2.5rem 0 0;
  background: var(--bg-soft);
}

/* カスタム吹き出し (OverlayView) */
.sd-pop {
  position: absolute;
  background: #FFFFFF;
  font-family: 'Noto Sans JP', sans-serif;
  padding: 12px 14px 12px 14px;
  border-radius: 6px;
  box-shadow: 0 2px 12px rgba(0,0,0,0.15);
  cursor: default;
  z-index: 100;
  pointer-events: auto;
}
/* マーカーの左側に表示 (右端をマーカー位置に揃える) */
.sd-pop--left {
  transform: translate(calc(-100% - 24px), -50%);
}
.sd-pop--left::after {
  content: "";
  position: absolute;
  right: -8px;
  top: 50%;
  transform: translateY(-50%);
  border: 8px solid transparent;
  border-left-color: #FFFFFF;
  border-right: 0;
  filter: drop-shadow(2px 0 2px rgba(0,0,0,0.05));
}
/* マーカーの右側に表示 (左端をマーカー位置に揃える) */
.sd-pop--right {
  transform: translate(24px, -50%);
}
.sd-pop--right::after {
  content: "";
  position: absolute;
  left: -8px;
  top: 50%;
  transform: translateY(-50%);
  border: 8px solid transparent;
  border-right-color: #FFFFFF;
  border-left: 0;
  filter: drop-shadow(-2px 0 2px rgba(0,0,0,0.05));
}
/* マーカーの上に表示 (下端をマーカー位置に揃える) */
.sd-pop--top {
  transform: translate(-50%, calc(-100% - 24px));
}
.sd-pop--top::after {
  content: "";
  position: absolute;
  bottom: -8px;
  left: 50%;
  transform: translateX(-50%);
  border: 8px solid transparent;
  border-top-color: #FFFFFF;
  border-bottom: 0;
  filter: drop-shadow(0 2px 2px rgba(0,0,0,0.05));
}
/* マーカーの下に表示 (上端をマーカー位置に揃える) */
.sd-pop--bottom {
  transform: translate(-50%, 24px);
}
.sd-pop--bottom::after {
  content: "";
  position: absolute;
  top: -8px;
  left: 50%;
  transform: translateX(-50%);
  border: 8px solid transparent;
  border-bottom-color: #FFFFFF;
  border-top: 0;
  filter: drop-shadow(0 -2px 2px rgba(0,0,0,0.05));
}
.sd-pop--clinic { width: 270px; }
.sd-pop--parking { width: 200px; }

/* 閉じるボタン (右下) */
.sd-pop-close {
  position: absolute;
  right: 6px;
  bottom: 6px;
  width: 24px;
  height: 24px;
  border: 0;
  background: transparent;
  color: #5f6368;
  font-size: 18px;
  font-weight: 400;
  cursor: pointer;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  transition: background 0.15s;
}
.sd-pop-close:hover { background: #f1f3f4; color: #202124; }

.sd-pop-row { display: flex; gap: 10px; align-items: flex-start; }
.sd-pop-thumb {
  flex: 0 0 70px;
  width: 70px;
  height: 70px;
  background-size: cover;
  background-position: center;
  border-radius: 3px;
}
.sd-pop-body { flex: 1 1 0; min-width: 0; padding-right: 10px; }
.sd-pop-name {
  font-size: 0.92rem;
  font-weight: 700;
  color: #202124;
  margin: 0 0 0.35rem;
  letter-spacing: 0.02em;
  line-height: 1.4;
}
.sd-pop-rating {
  display: flex; align-items: center; flex-wrap: wrap; gap: 0.3rem;
  font-size: 0.78rem; color: #5f6368; margin: 0;
}
.sd-pop-rating-num { font-weight: 700; font-size: 0.85rem; color: #202124; }
.sd-pop-stars { display: inline-flex; gap: 1px; }
.sd-pop-count { color: #5f6368; font-size: 0.75rem; }
.sd-pop-line { font-size: 0.75rem; color: #5f6368; line-height: 1.5; margin: 0 0 0.35rem; }
.sd-pop-actions { margin: 0.7rem 0 0; }
.sd-pop-btn {
  display: inline-block;
  font-size: 0.75rem;
  font-weight: 600;
  color: #FFFFFF;
  background: #98781B;
  text-decoration: none;
  padding: 0.45rem 0.9rem;
  border-radius: 3px;
  letter-spacing: 0.04em;
  transition: opacity 0.2s;
}
.sd-pop-btn:hover { opacity: 0.85; }
.sd-pop-btn--blue { background: #1a73e8; }

/* (旧InfoWindow用) */
.sd-iw {
  font-family: 'Noto Sans JP', sans-serif;
  width: 240px;
  max-width: 100%;
}
.sd-iw--clinic { width: 280px; }
.sd-iw-row {
  display: flex;
  gap: 0.6rem;
  align-items: flex-start;
}
.sd-iw-thumb {
  flex: 0 0 80px;
  width: 80px;
  height: 80px;
  background-size: cover;
  background-position: center;
  border-radius: 3px;
}
.sd-iw-body {
  padding: 0;
  flex: 1 1 0;
  min-width: 0;
}
.sd-iw-name {
  font-size: 0.92rem;
  font-weight: 700;
  color: #202124;
  margin: 0 0 0.35rem;
  letter-spacing: 0.02em;
  line-height: 1.4;
}
.sd-iw-rating {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.3rem;
  font-size: 0.78rem;
  color: #5f6368;
  margin: 0 0 0.4rem;
}
.sd-iw-rating-num {
  font-weight: 700;
  font-size: 0.85rem;
  color: #202124;
}
.sd-iw-stars { display: inline-flex; gap: 1px; }
.sd-iw-count { color: #5f6368; font-size: 0.75rem; }
.sd-iw-line {
  font-size: 0.75rem;
  color: #5f6368;
  line-height: 1.5;
  margin: 0 0 0.35rem;
  letter-spacing: 0.01em;
}
.sd-iw-actions {
  margin: 0.6rem 0 0;
  display: flex;
  gap: 0.4rem;
}
.sd-iw-btn {
  display: inline-block;
  font-size: 0.75rem;
  font-weight: 600;
  color: #FFFFFF;
  background: #98781B;
  text-decoration: none;
  padding: 0.4rem 0.85rem;
  border-radius: 3px;
  letter-spacing: 0.04em;
  transition: opacity 0.2s;
  border: 1px solid #98781B;
}
.sd-iw-btn:hover { opacity: 0.85; }
.sd-iw-btn--ghost {
  background: transparent;
  color: #98781B;
}
.sd-iw-btn--blue {
  background: #1a73e8;
  border-color: #1a73e8;
  color: #FFFFFF;
}
.sd-iw-btn--blue:hover { opacity: 0.85; }
.gm-style .gm-style-iw-c { padding: 10px !important; max-width: 320px !important; }
.gm-style .gm-style-iw-d { overflow: auto !important; max-height: 220px !important; }
/* デフォルトの × ボタンを非表示 (マーカークリックで切り替え可能) */
.gm-style .gm-ui-hover-effect { display: none !important; }
/* × ボタン非表示に伴う上余白を解消 */
.gm-style .gm-style-iw-chr { display: none !important; }
.access-map-legend {
  display: flex;
  justify-content: center;
  gap: 1.5rem 2rem;
  flex-wrap: wrap;
  margin: 1rem 0 0;
  font-family: var(--serif);
  font-size: 0.92rem;
  color: var(--text);
  letter-spacing: 0.04em;
}
.access-map-pin {
  display: inline-block;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 2px solid var(--white);
  margin-right: 0.4rem;
  vertical-align: middle;
  box-shadow: 0 0 0 1px var(--line-soft);
}
.access-map-pin--clinic { background: var(--accent-dark); }
.access-map-pin--parking { background: #6EC1E4; }
@media (max-width: 768px) {
  .access-gmap { aspect-ratio: auto; min-height: 480px; height: 480px; }
}

.access-map-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(1.5rem, 3vw, 2.5rem);
  margin: 2.5rem 0 0;
}
.access-map-item { display: flex; flex-direction: column; }
.access-map-label {
  font-family: var(--serif);
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  color: var(--text-strong);
  margin: 0 0 0.85rem;
  padding-left: 0.75rem;
  border-left: 3px solid var(--accent);
  line-height: 1.5;
}
.access-map {
  aspect-ratio: 4 / 3;
  width: 100%;
  overflow: hidden;
  background: var(--bg-soft);
}
@media (max-width: 768px) {
  .access-map { aspect-ratio: auto; min-height: 720px; height: 720px; }
}
.access-map iframe {
  width: 100%;
  height: 100%;
  display: block;
  border: 0;
}
.access-map-link {
  margin: 0.85rem 0 0;
}
.access-map-link a {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-family: var(--serif);
  font-size: 0.88rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: var(--accent-dark);
  padding: 0.4rem 1rem;
  border: 1px solid var(--accent-dark);
  transition: all var(--transition);
}
.access-map-link a:hover {
  background: var(--accent-dark);
  color: var(--white);
  opacity: 1;
}
.access-info-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(1.5rem, 4vw, 3rem);
  margin: 2.5rem 0 0;
  align-items: start;
}
.access-info-heading {
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  color: var(--text-strong);
  margin: 0 0 0.85rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--accent);
  display: inline-block;
  padding-right: 2.5rem;
}
.access-info-heading + .access-info-heading,
.access-info-list + .access-info-heading,
.access-info-dl + .access-info-heading {
  margin-top: 1.5rem;
}
.access-info-list {
  list-style: disc;
  padding-left: 1.25em;
  margin: 0;
}
.access-info-list li {
  font-size: 0.95rem;
  line-height: 2;
  color: var(--text);
  letter-spacing: 0.04em;
  padding: 0.1rem 0;
}
.access-info-dl {
  margin: 0;
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: 0.75rem 1rem;
  font-size: 0.95rem;
  line-height: 1.85;
  letter-spacing: 0.04em;
}
.access-info-dl dt {
  font-family: var(--serif);
  font-weight: 700;
  color: var(--text-strong);
}
.access-info-dl dd {
  margin: 0;
  color: var(--text);
}
.access-info-dl dd a {
  color: var(--accent-dark);
  font-weight: 700;
}
.access-info-photo img {
  width: 100%;
  height: auto;
  display: block;
}

@media (max-width: 768px) {
  .access-info-grid { grid-template-columns: 1fr; }
  .access-info-dl { grid-template-columns: 90px 1fr; }
  .access-map-grid { grid-template-columns: 1fr; }
}

/* ============================================
   医院案内ページ
   ============================================ */
.clinic-page {
  background: var(--white);
  padding-top: 80px;
}
@media (max-width: 768px) {
  .clinic-page { padding-top: 60px; }
}
.clinic-section { padding: clamp(3rem, 6vw, 5rem) 0; }
.clinic-section--alt { background: var(--bg-soft); }
.clinic-section-eyebrow {
  font-family: 'Corinthia', cursive;
  font-size: clamp(2rem, 4vw, 2.75rem);
  color: var(--accent-dark);
  text-align: center;
  margin: 0;
  line-height: 1;
  font-weight: 400;
}
.clinic-section-title {
  font-family: var(--serif);
  font-size: clamp(1.5rem, 3vw, 2rem);
  text-align: center;
  letter-spacing: 0.18em;
  color: var(--text-strong);
  font-weight: 500;
  margin: 0.5rem 0 0;
  position: relative;
  padding-bottom: 1.25rem;
}
.clinic-section-title::after {
  content: "";
  display: block;
  width: 40px;
  height: 1px;
  background: var(--accent-dark);
  margin: 1rem auto 0;
}

/* イントロ挨拶 */
.clinic-intro { padding: clamp(2.5rem, 5vw, 4rem) 0 clamp(1.5rem, 3vw, 2.5rem); }
.clinic-greeting {
  font-family: var(--serif);
  font-size: clamp(1.4rem, 3vw, 2rem);
  text-align: center;
  letter-spacing: 0.1em;
  color: var(--text-strong);
  font-weight: 500;
  line-height: 1.85;
  margin: 0;
}

/* 外観 */
.clinic-exterior {
  margin: 2rem 0 0;
}
.clinic-exterior img {
  width: 100%;
  height: auto;
  display: block;
}

/* 院内 (各部屋) */
.clinic-rooms {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: clamp(1.5rem, 3vw, 2.5rem);
  margin: 2.5rem 0 0;
}
.clinic-room {
  background: var(--white);
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
}
.clinic-room-title {
  font-family: var(--serif);
  font-size: 1.1rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  color: var(--text-strong);
  margin: 0 0 0.85rem;
  padding-left: 0.75rem;
  border-left: 3px solid var(--accent);
  line-height: 1.5;
}
.clinic-room-image {
  margin: 0 0 1rem;
  overflow: hidden;
}
.clinic-room-image img {
  width: 100%;
  height: auto;
  display: block;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.clinic-room-text {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.95;
  color: var(--text);
  letter-spacing: 0.04em;
}

/* 設備 */
.clinic-equipment-intro {
  max-width: 820px;
  margin: 2rem auto 0;
}
.clinic-equipment-intro p {
  font-size: 0.98rem;
  line-height: 2.1;
  color: var(--text);
  letter-spacing: 0.04em;
  margin: 0 0 1em;
}
.clinic-equipment-intro p:last-child { margin-bottom: 0; }
.clinic-equipment-intro strong {
  color: var(--text-strong);
  font-weight: 700;
}
.clinic-equipment-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(2rem, 4vw, 3rem);
  margin: 2.5rem 0 0;
  align-items: start;
}
.clinic-equipment-item { text-align: center; }
.clinic-equipment-num {
  font-family: var(--serif);
  font-size: 1.5rem;
  color: var(--accent-dark);
  margin: 0 0 0.75rem;
  font-weight: 600;
}
.clinic-equipment-image img {
  width: 100%;
  max-width: 480px;
  height: auto;
  display: block;
  margin: 0 auto;
}
.clinic-equipment-text {
  font-family: var(--serif);
  margin: 1rem 0 0;
  font-size: 0.95rem;
  line-height: 1.85;
  color: var(--text);
  letter-spacing: 0.04em;
}

@media (max-width: 768px) {
  .clinic-equipment-grid { grid-template-columns: 1fr; }
}

/* ============================================
   院長紹介ページ
   ============================================ */
.doctor-page {
  background: var(--white);
  padding-top: 80px;
}
@media (max-width: 768px) {
  .doctor-page { padding-top: 60px; }
}
.doctor-section {
  padding: clamp(3rem, 6vw, 5rem) 0;
}
.doctor-section--alt { background: var(--bg-soft); }
.doctor-section-eyebrow {
  font-family: 'Corinthia', cursive;
  font-size: clamp(2rem, 4vw, 2.75rem);
  color: var(--accent-dark);
  text-align: center;
  margin: 0;
  line-height: 1;
  font-weight: 400;
}
.doctor-section-title {
  font-family: var(--serif);
  font-size: clamp(1.5rem, 3vw, 2rem);
  text-align: center;
  letter-spacing: 0.18em;
  color: var(--text-strong);
  font-weight: 500;
  margin: 0.5rem 0 0;
  position: relative;
  padding-bottom: 1.25rem;
}
.doctor-section-title::after {
  content: "";
  display: block;
  width: 40px;
  height: 1px;
  background: var(--accent-dark);
  margin: 1rem auto 0;
}
.doctor-name {
  font-family: var(--serif);
  font-size: clamp(1.5rem, 3vw, 2rem);
  letter-spacing: 0.12em;
  color: var(--text-strong);
  font-weight: 500;
  margin: 1.25rem 0 0.4rem;
  line-height: 1.3;
}
.doctor-name-en {
  display: block;
  font-family: var(--cursive);
  font-size: clamp(1.5rem, 2.6vw, 1.9rem);
  font-weight: 400;
  color: var(--accent-dark);
  letter-spacing: 0.04em;
  margin: 0 0 2rem;
  line-height: 1;
}

/* イントロ (写真 + 経歴/所属/専門医) */
.doctor-intro-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(1.5rem, 4vw, 3rem);
  margin: 2rem 0 0;
  align-items: start;
}
.doctor-intro-photo img {
  width: 100%;
  height: auto;
  display: block;
}
.doctor-intro-info {
  display: flex;
  flex-direction: column;
  gap: 1.75rem;
}
.doctor-info-block {}
.doctor-info-heading {
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  color: var(--text-strong);
  margin: 0 0 0.75rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--accent);
  display: inline-block;
  padding-right: 2.5rem;
}
.doctor-info-list {
  list-style: disc;
  padding-left: 1.25em;
  margin: 0;
}
.doctor-info-list li {
  font-size: 0.95rem;
  line-height: 2;
  color: var(--text);
  letter-spacing: 0.04em;
  padding: 0.1rem 0;
}

/* 一言 */
.doctor-message {
  margin: clamp(2.5rem, 5vw, 4rem) 0 0;
  background: var(--bg-soft);
  padding: clamp(1.75rem, 3vw, 2.5rem);
}
.doctor-message .doctor-info-heading {
  border-bottom-color: var(--accent-dark);
  margin-bottom: 1.25rem;
}
.doctor-message p {
  margin: 0 0 1em;
  font-size: 0.98rem;
  line-height: 2.1;
  color: var(--text);
  letter-spacing: 0.04em;
}
.doctor-message p:last-child { margin-bottom: 0; }

/* 書籍 */
.doctor-books {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(2rem, 4vw, 3.5rem);
  margin: 2.5rem 0 0;
  align-items: start;
}
.doctor-book { text-align: center; }
.doctor-book-link {
  display: inline-block;
  text-decoration: none;
  color: inherit;
  transition: opacity var(--transition);
}
.doctor-book-link:hover { opacity: 0.85; }
.doctor-book-image img {
  width: 100%;
  max-width: 360px;
  height: auto;
  display: block;
  margin: 0 auto;
  box-shadow: var(--shadow-soft);
  transition: transform var(--transition);
}
.doctor-book-link:hover .doctor-book-image img { transform: translateY(-2px); }
.doctor-book-image--small img { max-width: 280px; }
.doctor-book-caption {
  font-family: var(--serif);
  margin: 1rem 0 0;
  font-size: 0.95rem;
  line-height: 1.85;
  color: var(--text-strong);
  letter-spacing: 0.04em;
}
.doctor-book-amazon {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  margin-top: 0.5rem;
  font-family: var(--serif);
  font-size: 0.85rem;
  color: var(--accent-dark);
  letter-spacing: 0.06em;
  font-weight: 600;
  padding: 0.4rem 1rem;
  border: 1px solid var(--accent-dark);
}
.doctor-book-link:hover .doctor-book-amazon {
  background: var(--accent-dark);
  color: var(--white);
}
.doctor-book-amazon svg { flex-shrink: 0; }

/* 修了証書・受賞歴 */
.doctor-certs {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  margin: 2.5rem 0;
  align-items: center;
}
.doctor-cert img {
  width: 100%;
  height: auto;
  display: block;
}
.doctor-awards-list {
  list-style: disc;
  padding-left: 1.5em;
  margin: 1.5rem 0 0;
  max-width: 720px;
  margin-left: auto;
  margin-right: auto;
}
.doctor-awards-list li {
  font-size: 0.98rem;
  line-height: 2;
  color: var(--text);
  letter-spacing: 0.04em;
  padding: 0.15rem 0;
}
.doctor-awards-list li strong {
  color: var(--accent-dark);
  font-weight: 700;
}

/* ロゴマーク */
.doctor-logo-grid {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: clamp(2rem, 4vw, 3rem);
  margin: 2.5rem 0 0;
  align-items: start;
}
.doctor-logo-image img {
  width: 100%;
  max-width: 280px;
  height: auto;
  display: block;
}
.doctor-logo-text p {
  margin: 0 0 1em;
  font-size: 0.98rem;
  line-height: 2.1;
  color: var(--text);
  letter-spacing: 0.04em;
}
.doctor-logo-text p:last-child { margin-bottom: 0; }
.doctor-logo-text strong {
  color: var(--accent-dark);
  font-weight: 700;
}

@media (max-width: 768px) {
  .doctor-intro-grid,
  .doctor-books,
  .doctor-logo-grid {
    grid-template-columns: 1fr;
  }
  .doctor-certs { grid-template-columns: 1fr; max-width: 360px; margin-inline: auto; }
  .doctor-logo-image { max-width: 240px; margin: 0 auto; }
}

/* ============================================
   治療実績ページ (/cases/)
   ============================================ */
.cases-page,
.case-single-page {
  background: var(--white);
  padding-top: 80px;
}
@media (max-width: 768px) {
  .cases-page, .case-single-page { padding-top: 60px; }
}
.cases-section { padding: clamp(3rem, 6vw, 5rem) 0; }
.cases-intro {
  text-align: center;
  font-size: 1rem;
  line-height: 1.95;
  color: var(--text);
  letter-spacing: 0.04em;
  margin: 0 0 clamp(2rem, 4vw, 3rem);
}

/* フィルター */
.cases-filter { margin: 0 0 1.5rem; }
.cases-filter-label {
  font-family: var(--serif);
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--text-muted);
  letter-spacing: 0.12em;
  margin: 0 0 0.6rem;
}
.cases-filter-list { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.cases-filter-item {
  display: inline-block;
  padding: 0.45rem 1rem;
  background: var(--white);
  color: var(--text-strong);
  border: 1px solid var(--line);
  font-size: 0.88rem;
  font-family: var(--serif);
  font-weight: 600;
  letter-spacing: 0.04em;
  text-decoration: none;
  border-radius: 999px;
  transition: all var(--transition);
}
.cases-filter-item:hover { background: var(--accent-soft); color: var(--accent-dark); opacity: 1; }
.cases-filter-item.is-active {
  background: var(--accent-dark);
  color: var(--white);
  border-color: var(--accent-dark);
}
.cases-tag {
  display: inline-block;
  padding: 0.3rem 0.75rem;
  background: var(--bg-soft);
  color: var(--text-muted);
  font-size: 0.82rem;
  text-decoration: none;
  border-radius: 4px;
  transition: all var(--transition);
}
.cases-tag:hover { color: var(--accent-dark); opacity: 1; }
.cases-tag.is-active { background: var(--accent); color: var(--text-strong); font-weight: 600; }

.cases-current-filter {
  margin: 1rem 0 1.5rem;
  font-size: 0.95rem;
  color: var(--text);
}
.cases-current-filter strong { color: var(--accent-dark); }
.cases-current-clear {
  margin-left: 0.75rem;
  font-size: 0.85rem;
  color: var(--text-muted);
  text-decoration: underline;
}

/* グリッド */
.cases-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: clamp(1.25rem, 3vw, 2rem);
  margin: 2rem 0 0;
}
/* Mobile slider for top page case studies */
.cases-home-slider { position: relative; margin: 2rem 0 0; }
.cases-home-nav, .cases-home-dots { display: none; }
.cases-home-slider .cases-grid { margin: 0; }
.case-card {
  background: var(--white);
  box-shadow: var(--shadow-soft);
  overflow: hidden;
  transition: transform var(--transition), box-shadow var(--transition);
}
.case-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 10px 30px rgba(0,0,0,0.1);
}
.case-card-link { display: block; color: inherit; text-decoration: none; }
.case-card-image {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--bg-soft);
}
.case-card-image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.case-card-image-placeholder {
  display: flex; align-items: center; justify-content: center;
  width: 100%; height: 100%;
  color: var(--text-muted);
  font-family: var(--serif);
  letter-spacing: 0.12em;
}
.case-card-cats {
  position: absolute;
  top: 0.75rem; left: 0.75rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  max-width: calc(100% - 1.5rem);
}
.case-card-cat {
  display: inline-block;
  padding: 0.3rem 0.75rem;
  background: rgba(152,120,27,0.92);
  color: var(--white);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.06em;
}
.case-card-cats .case-card-cat { position: static; }
.case-card-before-label {
  position: absolute;
  bottom: 0.6rem;
  right: 0.6rem;
  padding: 0.25rem 0.7rem;
  background: rgba(0,0,0,0.65);
  color: var(--white);
  font-family: var(--serif);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.1em;
}
.case-card-body { padding: 1.25rem 1.25rem 1.5rem; }
.case-card-title {
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--text-strong);
  margin: 0 0 0.85rem;
  line-height: 1.5;
  letter-spacing: 0.04em;
}
.case-card-meta {
  display: grid;
  grid-template-columns: 60px 1fr;
  gap: 0.4rem 0.75rem;
  font-size: 0.85rem;
  margin: 0;
  line-height: 1.6;
}
.case-card-meta dt { color: var(--text-muted); font-weight: 600; }
.case-card-meta dd { margin: 0; color: var(--text); }

.cases-pagination { margin: clamp(2.5rem, 5vw, 4rem) 0 0; text-align: center; }
.cases-pagination .nav-links { display: inline-flex; gap: 0.4rem; align-items: center; }
.cases-pagination .page-numbers {
  padding: 0.5rem 0.85rem;
  border: 1px solid var(--line);
  font-family: var(--serif);
  color: var(--text-strong);
  text-decoration: none;
  transition: all var(--transition);
}
.cases-pagination .page-numbers:hover { background: var(--accent-soft); }
.cases-pagination .page-numbers.current { background: var(--accent-dark); color: var(--white); border-color: var(--accent-dark); }

.cases-empty { text-align: center; padding: 3rem 0; color: var(--text-muted); }

.cases-disclaimer {
  margin: clamp(3rem, 6vw, 4.5rem) 0 0;
  padding: 1.25rem 1.5rem;
  background: var(--bg-soft);
  border-left: 3px solid var(--accent);
  font-size: 0.85rem;
  line-height: 1.85;
  color: var(--text-muted);
  letter-spacing: 0.04em;
}
.cases-disclaimer p { margin: 0; }
.cases-disclaimer strong { color: var(--accent-dark); }
.cases-disclaimer a { color: var(--accent-dark); }

/* 症例詳細 */
.case-single-section { padding: clamp(2.5rem, 5vw, 4rem) 0; }
.case-single-breadcrumb {
  font-size: 0.85rem;
  color: var(--text-muted);
  margin: 0 0 1.5rem;
}
.case-single-breadcrumb a { color: var(--accent-dark); text-decoration: none; }
.case-single-breadcrumb a:hover { text-decoration: underline; }

.case-single-header { margin: 0 0 2rem; text-align: center; }
.case-single-cat-list, .case-single-tag-list { margin: 0 0 0.5rem; }
.case-single-cat {
  display: inline-block;
  padding: 0.3rem 0.85rem;
  background: var(--accent-dark);
  color: var(--white);
  font-size: 0.85rem;
  font-weight: 600;
  text-decoration: none;
  margin: 0 0.25rem;
}
.case-single-tag {
  display: inline-block;
  margin: 0 0.25rem;
  font-size: 0.82rem;
  color: var(--text-muted);
  text-decoration: none;
}
.case-single-tag:hover { color: var(--accent-dark); }
.case-single-title {
  font-family: var(--serif);
  font-size: clamp(1.4rem, 3vw, 2rem);
  font-weight: 700;
  color: var(--text-strong);
  margin: 0.75rem 0 0;
  letter-spacing: 0.06em;
  line-height: 1.5;
}

.case-single-images { margin: 2rem 0 0; }
.case-single-images-block { margin: 0 0 1.5rem; }
.case-single-images-label {
  display: inline-block;
  padding: 0.3rem 1.5rem;
  font-family: var(--serif);
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  color: var(--white);
  margin: 0 0 0.75rem;
}
.case-single-images-label--before { background: #4285F4; }
.case-single-images-label--after  { background: #d93025; }
.case-single-images-grid {
  display: grid;
  gap: 0.75rem;
}
.case-single-images-grid { grid-template-columns: repeat(3, 1fr); }
.case-single-images-grid[data-count="1"] { grid-template-columns: 1fr; max-width: 700px; }
.case-single-images-grid[data-count="2"] { grid-template-columns: 1fr 1fr; }
.case-single-images-grid[data-count="4"] { grid-template-columns: repeat(2, 1fr); }
.case-single-images-grid img { width: 100%; height: auto; display: block; }
@media (max-width: 768px) {
  .case-single-images-grid,
  .case-single-images-grid[data-count="4"] { grid-template-columns: repeat(2, 1fr); gap: 0.5rem; }
}

.case-single-h3 {
  font-family: var(--serif);
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--text-strong);
  margin: 0 0 1rem;
  padding: 0.4rem 0 0.4rem 0.85rem;
  border-left: 4px solid var(--accent-dark);
  letter-spacing: 0.08em;
}

.case-single-summary { margin: clamp(2rem, 4vw, 2.5rem) 0 0; }
.case-single-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--white);
  border: 1px solid var(--line);
}
.case-single-table th,
.case-single-table td {
  padding: 0.85rem 1rem;
  text-align: left;
  vertical-align: top;
  border-bottom: 1px solid var(--line-soft);
  font-size: 0.95rem;
  line-height: 1.85;
  letter-spacing: 0.04em;
}
.case-single-table th {
  background: var(--bg-soft);
  width: 130px;
  font-family: var(--serif);
  font-weight: 700;
  color: var(--text-strong);
}
.case-single-table tr:last-child th,
.case-single-table tr:last-child td { border-bottom: 0; }

.case-single-content { margin: clamp(2rem, 4vw, 2.5rem) 0 0; }
.case-single-content-body { font-size: 0.98rem; line-height: 2.05; color: var(--text); letter-spacing: 0.04em; }
.case-single-content-body p { margin: 0 0 1em; }

/* 使用した装置 */
.case-single-device {
  margin: clamp(2rem, 4vw, 2.5rem) 0 0;
  padding: 1.25rem 1.5rem;
  background: var(--bg-soft);
  border-left: 3px solid var(--accent);
}
.case-single-device .case-single-h3 { border-left: 0; padding-left: 0; }
.case-single-device-row {
  display: flex;
  gap: 1.25rem;
  align-items: center;
  flex-wrap: wrap;
}
.case-single-device-images {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
}
.case-single-device-images img {
  width: 140px;
  height: 140px;
  object-fit: cover;
  border-radius: 4px;
  display: block;
}
.case-single-device-name {
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--text-strong);
  margin: 0;
  letter-spacing: 0.06em;
}

/* 担当歯科医 */
.case-single-doctor {
  margin: clamp(2rem, 4vw, 2.5rem) 0 0;
  padding: 1.25rem 1.5rem;
  background: var(--white);
  border: 1px solid var(--line-soft);
}
.case-single-doctor .case-single-h3 { border-left: 0; padding-left: 0; }
.case-single-doctor-row {
  display: flex;
  align-items: center;
  gap: 1.25rem;
}
.case-single-doctor-photo {
  flex: 0 0 80px;
  width: 80px;
  height: 80px;
  border-radius: 50%;
  overflow: hidden;
  background: var(--bg-soft);
}
.case-single-doctor-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.case-single-doctor-info { flex: 1; }
.case-single-doctor-role {
  font-size: 0.82rem;
  color: var(--text-muted);
  margin: 0 0 0.2rem;
  letter-spacing: 0.06em;
}
.case-single-doctor-name {
  font-family: var(--serif);
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--text-strong);
  margin: 0;
  letter-spacing: 0.08em;
}

.case-single-risks {
  margin: clamp(2rem, 4vw, 2.5rem) 0 0;
  padding: 1.25rem 1.5rem;
  background: #fff7df;
  border-left: 3px solid #d93025;
}
.case-single-risks .case-single-h3 { border-left: 0; padding-left: 0; color: #d93025; }
.case-single-risks ul { list-style: disc; padding-left: 1.5em; margin: 0; }
.case-single-risks li {
  font-size: 0.92rem;
  line-height: 1.85;
  color: var(--text);
  padding: 0.15rem 0;
}

.case-single-notice {
  margin: clamp(1.5rem, 3vw, 2rem) 0 0;
  font-size: 0.85rem;
  color: var(--text-muted);
  line-height: 1.85;
  letter-spacing: 0.04em;
  padding: 1rem 1.25rem;
  background: var(--bg-soft);
  border-radius: 4px;
}
.case-single-notice strong { color: var(--accent-dark); }

.case-single-back { margin: clamp(2.5rem, 5vw, 4rem) 0 0; text-align: center; }

@media (max-width: 768px) {
  .case-single-images-grid[data-count="3"],
  .case-single-images-grid[data-count="4"] { grid-template-columns: 1fr 1fr; }
  .case-single-table th { width: 90px; }
}

/* ============================================
   フローティング診療カレンダーボタン (トップページ)
   ============================================ */
.floating-calendar-btn {
  position: fixed;
  left: 1.25rem;
  bottom: 5rem;
  z-index: 90;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.85rem 1.1rem;
  background: var(--accent-dark);
  color: var(--white);
  font-family: var(--serif);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.06em;
  line-height: 1.3;
  text-decoration: none;
  border-radius: 999px;
  box-shadow: 0 4px 16px rgba(152,120,27,0.35);
  transition: transform var(--transition), opacity var(--transition);
  opacity: 0;
  transform: translateY(20px) scale(0.9);
  pointer-events: none;
}
.floating-calendar-btn.is-visible {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}
.floating-calendar-btn.is-hidden {
  opacity: 0;
  transform: translateY(20px) scale(0.9);
  pointer-events: none;
}
.floating-calendar-btn:hover {
  background: #7a5f15;
  color: var(--white);
  opacity: 1;
  transform: translateY(-2px) scale(1.02);
}
.floating-calendar-btn-text {
  font-size: 0.78rem;
  white-space: nowrap;
}
.floating-calendar-btn svg {
  flex-shrink: 0;
}
@media (max-width: 768px) {
  .floating-calendar-btn {
    left: 0.6rem;
    bottom: 5rem;
    padding: 0.6rem 0.85rem;
  }
  .floating-calendar-btn-text {
    font-size: 0.7rem;
  }
}

/* ============================================
   Googleマップ評価カード (医療法準拠 - 評価のみ)
   ============================================ */
.google-rating-card {
  background: var(--white);
  padding: clamp(1.75rem, 4vw, 2.5rem);
  margin: clamp(2rem, 4vw, 3rem) auto 0;
  max-width: 720px;
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: clamp(1rem, 3vw, 2rem);
  align-items: center;
  box-shadow: var(--shadow-soft);
  border-radius: 4px;
}
.google-rating-card-icon {
  width: 56px;
  height: 56px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--bg-soft);
  border-radius: 50%;
  flex-shrink: 0;
}
.google-rating-card-body { min-width: 0; }
.google-rating-card-label {
  font-family: var(--serif);
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  color: var(--text-muted);
  margin: 0 0 0.5rem;
}
.google-rating-card-score {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 0 0 0.6rem;
  font-family: 'Noto Sans JP', sans-serif;
}
.google-rating-num {
  font-family: var(--serif);
  font-size: clamp(1.6rem, 3vw, 2rem);
  font-weight: 700;
  color: var(--text-strong);
  line-height: 1;
}
.google-rating-stars { display: inline-flex; gap: 1px; align-items: center; }
.google-rating-count {
  font-size: 0.95rem;
  color: var(--text-muted);
  letter-spacing: 0.04em;
}
.google-rating-card-note {
  font-size: 0.88rem;
  line-height: 1.7;
  color: var(--text);
  margin: 0;
  letter-spacing: 0.04em;
}
.google-rating-card-action { flex-shrink: 0; }
@media (max-width: 768px) {
  .google-rating-card {
    grid-template-columns: 1fr;
    text-align: center;
    justify-items: center;
  }
}

/* ============================================
   (旧Googleマップ口コミグリッド・無効化)
   ============================================ */
.voices-rating-summary {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0.5rem 0.75rem;
  margin: 1rem 0 0;
  font-family: 'Noto Sans JP', sans-serif;
}
.voices-rating-num {
  font-family: var(--serif);
  font-size: 1.6rem;
  font-weight: 700;
  color: var(--text-strong);
  line-height: 1;
}
.voices-rating-stars { display: inline-flex; gap: 1px; align-items: center; }
.voices-rating-count {
  font-size: 0.9rem;
  color: var(--text-muted);
  letter-spacing: 0.04em;
}

.google-reviews-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: clamp(1rem, 2vw, 1.5rem);
  margin: clamp(2rem, 4vw, 3rem) 0 0;
}
.google-review-card {
  background: var(--white);
  padding: 1.5rem 1.5rem 1.25rem;
  border-radius: 8px;
  box-shadow: var(--shadow-soft);
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  transition: transform var(--transition), box-shadow var(--transition);
}
.google-review-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 24px rgba(0,0,0,0.1);
}
.google-review-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}
.google-review-avatar {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
  background: var(--bg-soft);
}
.google-review-avatar--placeholder {
  background: var(--accent);
  color: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--serif);
  font-weight: 700;
  font-size: 1.1rem;
}
.google-review-meta { flex: 1; min-width: 0; }
.google-review-name {
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--text-strong);
  margin: 0 0 0.15rem;
  line-height: 1.4;
}
.google-review-time {
  font-size: 0.78rem;
  color: var(--text-muted);
  margin: 0;
  letter-spacing: 0.02em;
}
.google-review-stars {
  display: inline-flex;
  align-items: center;
  gap: 1px;
  margin: 0;
}
.google-review-text {
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 0.92rem;
  line-height: 1.85;
  color: var(--text);
  margin: 0;
  letter-spacing: 0.02em;
  flex: 1;
  display: -webkit-box;
  -webkit-line-clamp: 6;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.google-review-footer {
  font-size: 0.75rem;
  color: var(--text-muted);
  margin: 0.25rem 0 0;
  padding-top: 0.75rem;
  border-top: 1px solid var(--line-soft);
  letter-spacing: 0.02em;
}

/* リンク付きリスト */
.treatment-linked-list {
  list-style: none;
  padding: 0;
  margin: 1rem 0 0;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
.treatment-linked-item {
  padding: 1rem 0 1.25rem;
  border-bottom: 1px solid var(--line-soft);
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.75rem;
}
.treatment-linked-item:first-child { padding-top: 0; }
.treatment-linked-item:last-child { border-bottom: 0; }
.treatment-linked-text {
  width: 100%;
  margin: 0;
  font-size: 0.98rem;
  line-height: 1.95;
  color: var(--text);
  letter-spacing: 0.04em;
}
.treatment-linked-text strong {
  color: var(--text-strong);
  font-weight: 700;
}
.treatment-linked-button {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 1.25rem;
  border: 1px solid var(--accent-dark);
  font-family: var(--serif);
  font-size: 0.9rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--accent-dark);
  background: transparent;
  transition: all var(--transition);
  white-space: nowrap;
}
.treatment-linked-button:hover {
  background: var(--accent-dark);
  color: var(--white);
  opacity: 1;
}
.treatment-linked-button svg { flex-shrink: 0; }

/* 仕上がり画像セクション */
.treatment-finish-image {
  margin: 1.5rem 0 0;
}
.treatment-finish-image img {
  width: 100%;
  height: auto;
  display: block;
  max-width: 1000px;
  margin: 0 auto;
}

.treatment-stages {
  display: grid;
  gap: 1.75rem;
  margin: 2.5rem 0 0;
}
.stage-card {
  display: grid;
  grid-template-columns: 180px 1fr;
  gap: 1.75rem;
  background: var(--white);
  padding: 1.75rem;
  box-shadow: var(--shadow-soft);
  align-items: start;
}
.stage-card-image {
  background: var(--bg-soft);
  padding: 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
}
.stage-card-image img { width: 100%; height: auto; max-width: 160px; }
.stage-card-label {
  font-family: var(--cursive);
  font-size: 2.2rem;
  line-height: 1;
  color: var(--accent-dark);
  margin: 0 0 0.4rem;
  font-weight: 700;
}
.stage-card-title {
  font-family: var(--serif);
  font-size: 1.2rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--text-strong);
  margin: 0 0 1rem;
  padding-bottom: 0.85rem;
  border-bottom: 1px solid var(--line-soft);
}
.stage-card-desc {
  font-size: 14px;
  line-height: 1.95;
  color: var(--text);
  margin: 0 0 1rem;
  letter-spacing: 0.04em;
}
.stage-card-treatment {
  font-size: 14px;
  line-height: 1.95;
  color: var(--text);
  margin: 0;
  letter-spacing: 0.04em;
}
.stage-card-treatment-label {
  display: inline-block;
  font-family: var(--serif);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  color: var(--accent-dark);
  background: var(--bg-cream);
  padding: 3px 10px;
  margin-right: 0.75rem;
  vertical-align: middle;
}

.treatment-note {
  margin: 2rem 0 0;
  padding: 1rem 1.25rem;
  background: var(--bg-cream);
  font-size: 14px;
  letter-spacing: 0.05em;
  color: var(--text-strong);
}
.treatment-note a { color: var(--accent-dark); font-weight: 600; margin-left: 0.5rem; }

.treatment-numbered {
  list-style: none;
  padding: 0;
  margin: 0;
  counter-reset: tnum;
  display: grid;
  gap: 1.25rem;
}
.treatment-numbered li {
  counter-increment: tnum;
  position: relative;
  padding: 1.25rem 1.5rem 1.25rem 4.5rem;
  background: var(--white);
  box-shadow: var(--shadow-soft);
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  color: var(--text-strong);
  line-height: 1.7;
}
.treatment-numbered li::before {
  content: counter(tnum, decimal-leading-zero);
  position: absolute;
  left: 1.5rem;
  top: 50%;
  transform: translateY(-50%);
  font-family: var(--cursive);
  font-size: 2rem;
  color: var(--accent-dark);
  line-height: 1;
  font-weight: 700;
}

/* =====================================================
   24-B. Q&A 吹き出し (本番デザイン移植)
   ===================================================== */
.qa-block {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  margin: 2rem 0 0;
}
.qa-item { display: flex; flex-direction: column; gap: 0.85rem; }
.qa-row { display: flex; align-items: center; gap: 12px; }
.qa-row.question { justify-content: flex-start; }
.qa-row.answer { justify-content: flex-start; padding-left: 92px; align-items: stretch; }
.qa-avatar {
  flex: 0 0 auto;
  max-width: 80px;
  max-height: 80px;
  background: transparent;
}
.qa-avatar img { width: 100%; height: auto; max-width: 80px; object-fit: contain; display: block; }
.qa-avatar.doctor {
  max-width: 110px;
  max-height: 110px;
  align-self: center;
}
.qa-avatar.doctor img { max-width: 110px; border-radius: 50%; }

.qa-bubble {
  position: relative;
  padding: 1rem 1.25rem;
  border-radius: 14px;
  line-height: 1.85;
  font-family: var(--sans);
  color: var(--text-strong);
  letter-spacing: 0.04em;
  box-sizing: border-box;
}
.qa-bubble.question {
  display: inline-block;
  margin-left: 15px;
  padding: 1rem 1.25rem;
  border-radius: 22px;
  background-color: #ededed;
  text-align: left;
  font-size: 1.05rem;
  font-weight: 600;
}
.qa-bubble.question::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  border-style: solid;
  border-width: 6px 14px 6px 0;
  border-color: transparent #ededed transparent transparent;
  translate: -100% -50%;
}
.qa-bubble.answer {
  background: #fff;
  border: 4px solid currentColor;
  border-radius: 16px;
  font-size: 1rem;
  margin-left: 15px;
  position: relative;
  z-index: 0;
  flex: 1;
}
.qa-label {
  display: inline-block;
  font-weight: 700;
  margin-right: 8px;
  white-space: nowrap;
  font-family: var(--serif);
  font-size: 1.1em;
}
.qa-answer-title {
  font-family: var(--serif);
  font-weight: 700;
  font-size: 1.1rem;
  margin-bottom: 0.5rem;
  line-height: 1.7;
}
.qa-answer-body {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.95;
  color: var(--text);
}

/* テーマカラー */
.qa-theme-green { color: #7fbf73; }
.qa-theme-pink { color: #d28b98; }
.qa-theme-blue { color: #7ea6c7; }
.qa-theme-green .qa-answer-title {
  background: linear-gradient(transparent 70%, rgba(194,222,136,0.5) 70%);
  display: inline; padding: 0 2px; line-height: 1.8;
}
.qa-theme-pink .qa-answer-title {
  background: linear-gradient(transparent 70%, rgba(216,170,175,0.5) 70%);
  display: inline; padding: 0 2px; line-height: 1.8;
}
.qa-theme-blue .qa-answer-title {
  background: linear-gradient(transparent 70%, rgba(142,177,207,0.5) 70%);
  display: inline; padding: 0 2px; line-height: 1.8;
}
.qa-theme-green .qa-bubble.answer { color: var(--text-strong); border-color: #c2de88; }
.qa-theme-pink .qa-bubble.answer { color: var(--text-strong); border-color: #d8aaaf; }
.qa-theme-blue .qa-bubble.answer { color: var(--text-strong); border-color: #8eb1cf; }
.qa-theme-green .qa-label { color: #7fbf73; }
.qa-theme-pink .qa-label { color: #d28b98; }
.qa-theme-blue .qa-label { color: #7ea6c7; }

/* =====================================================
   24-C. TREATMENT CTA
   ===================================================== */
.treatment-cta {
  padding: clamp(3rem, 6vw, 5rem) 0;
  background: var(--bg-cream);
  text-align: center;
}
.treatment-cta-lead {
  font-family: var(--serif);
  font-size: clamp(1.1rem, 2.2vw, 1.4rem);
  font-weight: 500;
  letter-spacing: 0.1em;
  color: var(--text-strong);
  margin: 0 0 2rem;
}
.treatment-cta-buttons {
  display: flex;
  gap: 1rem;
  justify-content: center;
  flex-wrap: wrap;
}
.treatment-cta-tel,
.treatment-cta-web {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  padding: 1rem 2rem;
  font-family: var(--serif);
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.08em;
}
.treatment-cta-tel { gap: 0.8rem; white-space: nowrap; }
.treatment-cta-tel-label { font-size: 12px; font-weight: 500; letter-spacing: 0.15em; white-space: nowrap; }
.treatment-cta-tel-num { font-size: 1.2rem; letter-spacing: 0.05em; white-space: nowrap; }

/* PC では電話ボタン非表示 (ヘッダーに常時表示されているので) */
@media (min-width: 769px) {
  .treatment-cta-tel { display: none; }
}

@media (max-width: 768px) {
  .treatment-page { padding-top: 60px; }
  .treatment-hero-band { padding: 1.25rem 1.5rem; width: calc(100% - 2rem); }
  .treatment-hero-title { letter-spacing: 0.3em; text-indent: 0.3em; }
  .stage-card { grid-template-columns: 1fr; gap: 1rem; }
  .stage-card-image { padding: 0.5rem; max-width: 200px; margin: 0 auto; }
  .qa-row { gap: 8px; align-items: flex-start; }
  .qa-row.answer { padding-left: 0; }
  .qa-avatar { max-width: 60px; max-height: 60px; }
  .qa-avatar img { max-width: 60px; }
  .qa-avatar.doctor { display: none; }
  .qa-bubble.question { font-size: 0.95rem; padding: 0.85rem 1rem; }
  .qa-bubble.answer { font-size: 0.95rem; padding: 0.85rem 1rem; }
  .qa-answer-title { font-size: 1rem; }
  .treatment-cta-tel, .treatment-cta-web { width: 100%; max-width: 360px; justify-content: center; padding: 1rem 1rem; }
  .treatment-cta-tel { gap: 0.5rem; }
  .treatment-cta-tel-label { font-size: 11px; }
  .treatment-cta-tel-num { font-size: 1.05rem; }
}

/* =====================================================
   25. DENTAL CALENDAR — 本番デザイン再現（既存維持）
   ===================================================== */
.dental-calendar-wrapper { max-width: 100%; }
.dental-calendar-container {
  background: var(--white);
  overflow: hidden;
  box-shadow: var(--shadow-soft);
  border: 1px solid var(--line-soft);
}
.dental-calendar-container .calendar-header {
  background: var(--text-strong);
  text-align: center;
  padding: 14px 20px;
  margin-bottom: 0;
}
.dental-calendar-container .calendar-header h3 {
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--white);
  margin: 0;
  letter-spacing: 0.12em;
}
.dental-calendar-container .calendar-content { padding: 24px 20px 20px; }
.dental-calendar-wrapper .multi-calendar-container {
  display: flex; gap: 16px; justify-content: center; align-items: flex-start;
  flex-wrap: nowrap; width: 100%;
}
.dental-calendar-wrapper .calendar-month { flex: 1; max-width: 100%; min-width: 0; }
.dental-calendar-wrapper .fc { font-family: var(--sans); font-size: 13px; }
.dental-calendar-wrapper .fc .fc-toolbar { margin-bottom: 8px !important; padding: 0; background: none; }
.dental-calendar-wrapper .fc .fc-toolbar-title {
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--text-strong) !important;
  letter-spacing: 0.08em;
}
.dental-calendar-wrapper .fc .fc-col-header-cell {
  padding: 6px 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--text-strong);
  background: var(--bg-soft);
  border-color: var(--line-soft);
}
.dental-calendar-wrapper .fc .fc-col-header-cell a { color: inherit; text-decoration: none; }
.dental-calendar-wrapper .fc .fc-col-header-cell.fc-day-sun,
.dental-calendar-wrapper .fc .fc-col-header-cell.fc-day-sun a { color: #e74c3c; }
.dental-calendar-wrapper .fc .fc-col-header-cell.fc-day-sat,
.dental-calendar-wrapper .fc .fc-col-header-cell.fc-day-sat a { color: #3498db; }
.dental-calendar-wrapper .fc .fc-daygrid-day { border-color: var(--line-soft); }
.dental-calendar-wrapper .fc .fc-daygrid-day-frame { min-height: 56px; padding: 1px; }
.dental-calendar-wrapper .fc .fc-daygrid-day-top { justify-content: center; }
.dental-calendar-wrapper .fc .fc-daygrid-day-number {
  font-size: 13px;
  font-weight: 500;
  padding: 3px 0;
  color: var(--text-strong);
  text-decoration: none;
  text-align: center;
  width: 100%;
}
.dental-calendar-wrapper .fc .fc-day-today { background: #fffde7 !important; }
.dental-calendar-wrapper .fc .fc-day-other .fc-daygrid-day-number { color: #ccc; }
.dental-calendar-wrapper .fc .fc-day-sun .fc-daygrid-day-number { color: #e74c3c; }
.dental-calendar-wrapper .fc .fc-day-sat .fc-daygrid-day-number { color: #3498db; }
.dental-calendar-wrapper .fc .fc-event {
  border-radius: 2px;
  padding: 2px 1px;
  font-size: 11px;
  font-weight: 700;
  margin: 1px 0;
  line-height: 1.15;
  border: none !important;
  cursor: default;
  letter-spacing: -0.05em;
  text-align: center;
}
.dental-calendar-wrapper .fc .fc-daygrid-event-harness { margin: 0 1px; }
.dental-calendar-wrapper .fc .fc-event .fc-event-title {
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
  word-break: keep-all;
  text-align: center;
  display: block;
}
.dental-calendar-wrapper .fc .fc-event.clinic-closed,
.dental-calendar-wrapper .fc .fc-event.holiday,
.dental-calendar-wrapper .fc .fc-event.year-end-closed,
.dental-calendar-wrapper .fc .fc-event.new-year-closed { background: #ffa726 !important; color: #fff !important; }
.dental-calendar-wrapper .fc .fc-event.morning-closed { background: #ef5350 !important; color: #fff !important; }
.dental-calendar-wrapper .fc .fc-event.early-close { background: #66bb6a !important; color: #fff !important; }
.dental-calendar-wrapper .fc .fc-event.afternoon-closed { background: #42a5f5 !important; color: #fff !important; }
.dental-calendar-wrapper .fc table { border-collapse: collapse; }
.dental-calendar-wrapper .fc .fc-scrollgrid { border-color: var(--line-soft) !important; }
.dental-calendar-wrapper .fc .fc-scrollgrid-section > td { border-color: var(--line-soft); }
.dental-calendar-wrapper .fc th,
.dental-calendar-wrapper .fc td { border-color: var(--line-soft); }
.dental-calendar-wrapper .legend {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  justify-content: center;
  padding: 16px 20px 0;
}
.dental-calendar-wrapper .legend-item {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--text-muted);
  letter-spacing: 0.04em;
}
.dental-calendar-wrapper .legend-color { width: 14px; height: 14px; flex-shrink: 0; }
.dental-calendar-wrapper .legend-color.holiday,
.dental-calendar-wrapper .legend-color.clinic-closed { background: #ffa726; }
.dental-calendar-wrapper .legend-color.early-close { background: #66bb6a; }
.dental-calendar-wrapper .legend-color.morning-closed { background: #ef5350; }
.dental-calendar-wrapper .legend-color.afternoon-closed { background: #42a5f5; }
.dental-calendar-wrapper .mobile-month-nav {
  display: none;
  justify-content: space-between;
  align-items: center;
  margin: 16px 0;
  padding: 0 4px;
}
.dental-calendar-wrapper .mobile-month-nav button {
  background: var(--text-strong);
  color: #fff;
  border: none;
  padding: 8px 18px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.05em;
  cursor: pointer;
  font-family: var(--sans);
  transition: background var(--transition);
}
.dental-calendar-wrapper .mobile-month-nav button:hover { background: var(--accent-dark); }
.dental-calendar-wrapper .mobile-month-nav button:disabled { background: #ccc; cursor: not-allowed; opacity: 0.5; }
.dental-calendar-wrapper .mobile-month-nav .current-month {
  font-size: 15px;
  font-weight: 600;
  color: var(--text-strong);
  font-family: var(--serif);
  letter-spacing: 0.08em;
}

/* =====================================================
   26. RESPONSIVE
   ===================================================== */
@media (max-width: 1024px) {
  .blog-grid, .case-grid, .voice-grid { grid-template-columns: repeat(2, 1fr); }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 2rem; }
  .doctor-profile { grid-template-columns: 1fr; gap: 2rem; max-width: 600px; }
  .doctor-profile-image { max-width: 360px; margin: 0 auto; }
  .doctor-profile-info { text-align: center; }
  .doctor-profile-info .doctor-profile-text,
  .doctor-profile-info .doctor-message { text-align: left; }
  .doctor-others { max-width: 720px; }
  .doctor-others-track { grid-template-columns: 1fr; }
  .doctor-others--slider .doctor-other-card { flex: 0 0 calc((100% - clamp(1rem, 2vw, 1.5rem)) / 2); }
  .feature-card, .feature-card.feature-reverse { grid-template-columns: 1fr; gap: 1.5rem; }
  .feature-card.feature-reverse > .feature-card-photo { order: 0; }
  .feature-card-photo { max-height: 320px; }
  .banner-grid { grid-template-columns: 1fr; gap: 1.25rem; }
  .access-content { grid-template-columns: 1fr; }
  .access-detail { padding: 1.75rem; }
  .access-map iframe,
  .access-map > div { min-height: 600px; }
  .concern-grid { grid-template-columns: 1fr; gap: 2.5rem; }
  .concern-illust { max-width: 360px; }
  .three-s-grid { grid-template-columns: 1fr; gap: 2.5rem; max-width: 320px; margin: 0 auto; }
}

@media (max-width: 768px) {
  body { font-size: 15.5px; line-height: 1.9; }
  .primary-nav { display: none; }
  .header-cta { display: none; }
  .menu-toggle { display: flex; }
  .floating-cta { display: flex; }
  .back-to-top { bottom: 70px; }
  .header-inner { height: 60px; }
  .hero { height: auto; min-height: auto; margin-top: 60px; }
  .hero-slider { position: relative; height: 60vh; min-height: 380px; }
  .hero-slide img { object-position: center 25%; }
  .hero-overlay { position: absolute; }
  .sp-only { display: inline; }
  .pc-only { display: none; }
  .page-header { padding: 100px 0 40px; }

  .medical-grid { grid-template-columns: 1fr; gap: 0; }
  .blog-grid, .case-grid, .voice-grid { grid-template-columns: 1fr; gap: 1.5rem; }
  .banner-grid > .banner-link:nth-child(1),
  .banner-grid > .banner-link:nth-child(2),
  .banner-grid > .banner-link:nth-child(n+3) { grid-column: span 1; grid-row: auto; }

  /* Cases archive page — mobile 2-column with title-only cards */
  .cases-page .cases-grid {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 0.75rem !important;
  }
  .cases-page .case-card-cats { top: 0.4rem; left: 0.4rem; gap: 0.25rem; }
  .cases-page .case-card-cat { padding: 0.2rem 0.5rem; font-size: 0.65rem; }
  .cases-page .case-card-body { padding: 0.75rem 0.85rem 1rem; }
  .cases-page .case-card-title { font-size: 0.85rem; line-height: 1.45; margin: 0; }
  .cases-page .case-card-meta { display: none; }

  /* Top page case slider — mobile only */
  .cases-home-slider { overflow: hidden; padding-bottom: 0.5rem; }
  .cases-home-slider .cases-grid {
    display: flex;
    grid-template-columns: none;
    gap: 0;
    transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
    will-change: transform;
  }
  .cases-home-slider .case-card { flex: 0 0 100%; min-width: 0; padding: 0 0.5rem; }
  .cases-home-nav {
    display: flex;
    justify-content: space-between;
    position: absolute;
    top: 28%;
    left: -0.5rem; right: -0.5rem;
    pointer-events: none;
    z-index: 2;
  }
  .cases-home-nav button {
    pointer-events: auto;
    width: 40px; height: 40px;
    border-radius: 50%;
    background: var(--white);
    border: 1px solid var(--line);
    color: var(--text-strong);
    font-size: 1.4rem; line-height: 1;
    cursor: pointer;
    box-shadow: var(--shadow-soft);
  }
  .cases-home-dots {
    display: flex;
    justify-content: center;
    gap: 0.5rem;
    margin-top: 1rem;
  }
  .cases-home-dots button {
    width: 8px; height: 8px;
    border-radius: 50%;
    border: none;
    background: var(--line);
    cursor: pointer;
    padding: 0;
  }
  .cases-home-dots button.is-active { background: var(--accent-dark); }
  .footer-grid { grid-template-columns: 1fr; gap: 2rem; }
  .doctor-others { grid-template-columns: 1fr; max-width: 100%; }
  .doctor-other-card { grid-template-columns: 1fr; gap: 1.5rem; }
  .doctor-other-photo { justify-content: center; }
  .doctor-other-photo img { height: 240px; }
  .doctor-others--slider .doctor-other-card { flex: 0 0 100%; }
  .case-detail-flow { grid-template-columns: 1fr; }

  .concern-message { padding: 2.5rem 1.5rem; }
  .concern-message .concern-desc { text-align: left; }
  .concern-content { padding: 0 1rem; }
  .concern-list li { padding-left: 2.5rem; font-size: 1.05rem; }
  .three-s-card-desc { text-align: left; }

  .feature-card-num { letter-spacing: 0.2em; }
}

@media (max-width: 480px) {
  .hero-slider { height: 50vh; min-height: 320px; }
  .three-s-card-img { aspect-ratio: 4/3; }
}

/* =====================================================
   27. CALENDAR (mobile)
   ===================================================== */
@media (max-width: 768px) {
  .dental-calendar-container .calendar-content { padding: 16px 12px 12px; }
  .dental-calendar-wrapper .multi-calendar-container { flex-direction: column; gap: 0; }
  .dental-calendar-wrapper .calendar-month { max-width: 100%; min-width: 100%; }
  .dental-calendar-wrapper .calendar-month:nth-child(2),
  .dental-calendar-wrapper .calendar-month:nth-child(3) { display: none; }
  .dental-calendar-wrapper .mobile-month-nav { display: flex; }
  /* スマホでは FullCalendar 標準のツールバーを非表示にして mobile-month-nav に統一 */
  .dental-calendar-wrapper .fc-header-toolbar { display: none !important; }
  .dental-calendar-wrapper .legend { gap: 12px; padding: 12px 12px 0; }
  .dental-calendar-wrapper .legend-item { font-size: 12px; }
  .dental-calendar-wrapper .fc .fc-event { font-size: 9px; }
}

/* ------------------------------------------------------------------
   Elementor グローバル kit (.elementor-kit-6 a{text-decoration:underline})
   の打ち消し。Elementor 有効時、新テーマ描画ページの全リンクに下線が付く
   のを防ぐ（staging と同じ見た目に揃える）。
   sd-native は Elementor 本文ページ(LP等)には付かないため、そちらは無影響。
   テーマ本来の hover 下線(パンくず等)は base のみ上書きなので保持される。
   ------------------------------------------------------------------ */
body.sd-native a { text-decoration: none; }
