/* ============================================================
   千里丘たかの矯正歯科 — style.css 【Ver3｜実写主導】(2026-07-25 site/へ昇格済み・これが本番)
   ※ 変数名は現行と同一のまま値だけVer3に置換(全ページ一括で切替)
   palette: base #FCFAF6 / greige #F3EFE8 / 深緑 #2E5847 / gold #B08D57
   ============================================================ */
:root {
  --base: #FCFAF6;        /* Ver3: あたたかい白 */
  --offwhite: #FCFAF6;
  --greige: #F3EFE8;      /* Ver3: 淡いウォームグレー(交互セクション) */
  --greige-dark: #E4DED3;
  --teal: #2E5847;        /* Ver3: 深い森グリーン(旧ティール枠) */
  --teal-dark: #22412F;
  --gold: #B08D57;
  --gold-dark: #9A7748;
  --gold-deep: #8A6A3E;   /* CTA地色: 白/クリーム文字で4.5:1以上 */
  --gold-ink: #7E5F35;    /* 小さなゴールド文字: クリーム/グレージュ/白地で4.5:1以上 */
  --navy: #26402F;        /* Ver3: 深緑(フッター/実績の枠) */
  --ink: #33302B;
  --ink-soft: #4A453D;
  --ink-muted: #6B655B;
  --ph-text: #8a8478;
  --serif: 'Noto Serif JP', serif;
  --sans: 'Noto Sans JP', sans-serif;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 96px; }
body { margin: 0; font-family: var(--sans); color: var(--ink); background: var(--base); line-height: 1.8; }
img { max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
h1, h2, h3 { line-height: 1.5; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---- buttons / links ---- */
.btn { display: inline-block; border-radius: 4px; font-weight: 700; text-align: center; transition: background .2s, color .2s; }
.btn-primary { background: var(--gold-deep); color: var(--base); padding: 11px 22px; font-size: 14.5px; white-space: nowrap; }
.btn-primary:hover { background: var(--gold-ink); }
.btn-lg { padding: 16px 32px; font-size: 16px; }
.btn-line { border: 1px solid var(--teal); color: var(--teal); padding: 9px 16px; font-size: 13.5px; font-weight: 500; white-space: nowrap; }
.btn-line:hover { background: var(--teal); color: var(--base); }
.btn-ghost { border: 1px solid var(--base); color: var(--base); padding: 15px 32px; font-size: 15px; font-weight: 500; }
.btn-ghost:hover { background: var(--base); color: var(--teal); }
.link-underline { color: var(--teal); font-weight: 700; border-bottom: 1px solid var(--teal); padding-bottom: 2px; font-size: 14.5px; }
.link-underline:hover { color: var(--teal-dark); }

/* ---- header ---- */
.site-header { position: sticky; top: 0; z-index: 50; background: rgba(250,248,245,.95); backdrop-filter: blur(6px); border-bottom: 1px solid var(--greige); display: flex; align-items: center; justify-content: space-between; padding: 0 48px; height: 84px; gap: 24px; }
.header-logo img { height: 54px; width: auto; display: block; }
.header-nav { display: flex; gap: 28px; font-size: 14.5px; font-weight: 500; }
.header-nav a:hover { color: var(--teal); }
.header-cta { display: flex; align-items: center; gap: 12px; }
.nav-toggle { display: none; }

/* ---- hero ---- */
.hero { position: relative; min-height: 640px; display: flex; align-items: center; overflow: hidden; }
.hero-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
/* ヒーロー・スライドショー(フェード切替) */
.hero-slides { position: absolute; inset: 0; z-index: 0; }
.hero-slide { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: 0; transition: opacity 1.4s ease; will-change: opacity; }
.hero-slide.is-active { opacity: 1; }
.hero-scrim { position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(100deg, rgba(250,248,245,.94) 0%, rgba(250,248,245,.66) 32%, rgba(250,248,245,.12) 58%, rgba(250,248,245,0) 78%); }
@media (prefers-reduced-motion: reduce) { .hero-slide { transition: none; } }
.hero-inner { position: relative; z-index: 2; max-width: 1440px; margin: 0 auto; width: 100%; padding: 64px 48px; }
.hero-eyebrow { font-size: 14px; letter-spacing: .12em; color: var(--teal); font-weight: 700; margin: 0 0 18px; }
.hero h1 { font-family: var(--serif); font-size: clamp(30px, 4vw, 46px); font-weight: 700; color: var(--teal); margin: 0 0 24px; }
.hero-lead { font-size: 16px; line-height: 1.9; color: var(--ink-soft); margin: 0 0 36px; max-width: 520px; }
.hero-cta { display: flex; align-items: center; gap: 24px; flex-wrap: wrap; }

/* ---- trust bar ---- */
.trust-bar { background: linear-gradient(180deg, var(--teal) 0%, var(--teal-dark) 100%); padding: 20px 48px; }
.trust-bar ul { list-style: none; margin: 0 auto; padding: 0; max-width: 1120px; display: flex; justify-content: center; align-items: stretch; }
.trust-bar li { flex: 1; display: flex; align-items: center; justify-content: center; gap: 14px; padding: 4px 20px; color: var(--base); font-size: 15px; font-weight: 500; letter-spacing: .01em; position: relative; }
.trust-bar li span { white-space: nowrap; }
.trust-bar li + li::before { content: ""; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 1px; height: 40px; background: linear-gradient(180deg, transparent, rgba(255,255,255,.28), transparent); }
.trust-bar img { width: 52px; height: 52px; flex-shrink: 0; filter: drop-shadow(0 4px 8px rgba(0,0,0,.22)); }
.trust-bar li strong { font-family: var(--serif); font-weight: 700; font-size: 1.28em; color: #fff; margin: 0 1px; }
@media (max-width: 992px) {
  .trust-bar { padding: 18px 20px; }
  .trust-bar ul { flex-wrap: wrap; row-gap: 16px; max-width: 560px; }
  .trust-bar li { flex: 0 0 50%; gap: 11px; padding: 6px 12px; font-size: 13.5px; }
  .trust-bar li span { white-space: normal; }
  .trust-bar li + li::before { display: none; }
  .trust-bar li:nth-child(odd)::after { content: ""; position: absolute; right: 0; top: 50%; transform: translateY(-50%); width: 1px; height: 36px; background: linear-gradient(180deg, transparent, rgba(255,255,255,.24), transparent); }
  .trust-bar img { width: 44px; height: 44px; }
}

/* ---- child banner ---- */
.child-banner { display: block; position: relative; min-height: 340px; overflow: hidden; border-top: 3px solid var(--gold); border-bottom: 3px solid var(--gold); }
.child-banner-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: right center; }
.child-banner::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(229,222,212,.98) 0%, rgba(229,222,212,.94) 42%, rgba(229,222,212,.45) 70%, rgba(229,222,212,.05) 100%); }
.child-banner-text { position: absolute; inset: 0; z-index: 1; max-width: 1440px; margin: 0 auto; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; padding: 44px 48px; }
.child-banner-badge { display: inline-block; font-size: 12px; font-weight: 700; letter-spacing: .1em; color: #fff; background: var(--teal); padding: 6px 15px; border-radius: 999px; margin-bottom: 18px; }
.child-banner-title { font-family: var(--serif); font-size: clamp(26px, 3.2vw, 36px); font-weight: 700; color: var(--teal); line-height: 1.35; margin: 0 0 14px; }
.child-banner-lead { font-size: 15px; line-height: 1.85; color: var(--ink-soft); margin: 0 0 26px; max-width: 30em; }
.child-banner-btn { display: inline-flex; align-items: center; gap: 10px; font-size: 15.5px; font-weight: 700; color: #fff; background: var(--gold-deep); padding: 14px 30px; border-radius: 999px; box-shadow: 0 6px 18px rgba(138,106,62,.32); transition: transform .2s, box-shadow .2s, background .2s; }
.child-banner-btn .arrow { display: inline-block; transition: transform .2s; }
.child-banner:hover .child-banner-btn { transform: translateY(-2px); background: var(--gold-ink); box-shadow: 0 12px 26px rgba(126,95,53,.42); }
.child-banner:hover .child-banner-btn .arrow { transform: translateX(5px); }

/* ---- sections ---- */
.section { padding: 100px 48px; max-width: 1536px; margin: 0 auto; }
.section-beige { max-width: none; background: var(--greige); }
.section-beige > * { max-width: 1440px; margin-left: auto; margin-right: auto; }
.section-eyebrow { text-align: center; font-size: 13px; letter-spacing: .15em; color: var(--gold-ink); font-weight: 700; margin: 0 0 12px; }
.section-title { text-align: center; font-family: var(--serif); font-size: clamp(24px, 3vw, 32px); color: var(--teal); margin: 0 0 60px; }
.section-footnote { text-align: center; margin: 48px 0 0; font-size: 14.5px; color: var(--ink-soft); }

/* ---- reasons ---- */
.reason-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; }
.reason-item { text-align: center; padding: 0 12px; }
.reason-item img { margin-bottom: 20px; }
.reason-item h3 { font-size: 17px; font-weight: 700; color: var(--teal); margin: 0 0 12px; }
.reason-item p { font-size: 14px; line-height: 1.8; color: var(--ink-muted); margin: 0; }
.reason-more { text-align: center; margin-top: 44px; }

/* ---- 選ばれる理由 詳細ページ ---- */
.reason-point { max-width: 860px; margin: 0 auto; }
.reason-point-head { display: flex; align-items: center; gap: 22px; margin-bottom: 22px; }
.reason-point-head img { width: 92px; height: 92px; flex: none; }
.reason-point-num { font-size: 13px; letter-spacing: .14em; color: var(--gold); font-weight: 700; display: block; margin-bottom: 4px; }
.reason-point-head h2 { font-family: var(--serif); font-size: clamp(20px, 2.4vw, 27px); color: var(--teal); margin: 0; line-height: 1.4; }
.reason-point .lead-box { margin: 0 auto 20px; }
.reason-point .applies { max-width: 860px; }
@media (max-width: 640px) {
  .reason-point-head { gap: 14px; margin-bottom: 16px; }
  .reason-point-head img { width: 64px; height: 64px; }
}

/* ---- stats ---- */
.stats { position: relative; background: var(--navy); padding: 96px 48px; overflow: hidden; }
.stats-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .5; }
.stats-inner { position: relative; z-index: 1; max-width: 1200px; margin: 0 auto; text-align: center; }
.stats-divider { display: block; margin: 0 auto 40px; }
.stats-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; margin: 0; }
.stats-grid dt { font-family: var(--serif); font-weight: 700; color: var(--gold); line-height: 1; }
.stats-num { font-size: 64px; }
.stats-unit { font-size: 32px; }
.stats-grid dd { color: var(--base); font-size: 15px; margin: 16px 0 0; }
.stats-note { color: #a9b8bd; font-size: 12px; margin: 48px 0 0; }

/* ---- treatment menu ---- */
.menu-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; }
.menu-card { background: #fff; border-radius: 4px; overflow: hidden; transition: box-shadow .2s; }
.menu-card:hover { box-shadow: 0 8px 24px rgba(31,95,91,.12); }
.menu-card img { width: 100%; aspect-ratio: 4/3; object-fit: cover; display: block; }
.menu-card-body { padding: 24px; }
.menu-card-body h3 { font-size: 16px; font-weight: 700; color: var(--teal); margin: 0 0 8px; }
.menu-card-body p { font-size: 13.5px; color: var(--ink-muted); margin: 0 0 18px; }
.menu-card-body a { font-size: 13px; color: var(--gold-ink); font-weight: 700; }

/* ---- placeholders ---- */
.ph { background: var(--greige-dark); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; color: var(--ph-text); font-size: 12px; border-radius: 4px; }
.ph::before { content: ""; width: 32px; height: 32px; border-radius: 50%; border: 2px solid var(--ph-text); opacity: .5; }

/* ---- cases(横スクロールカルーセル) ---- */
.case-scroll-hint { text-align: center; font-size: 12.5px; color: var(--ink-muted); margin: 0 0 24px; }
.case-scroll-hint span { color: var(--gold-dark); }
.case-grid {
  display: flex; gap: 22px; overflow-x: auto; scroll-snap-type: x proximity;
  -webkit-overflow-scrolling: touch; scrollbar-width: none; cursor: grab;
  padding: 4px 0 12px;
}
.case-grid::-webkit-scrollbar { display: none; }
.case-grid.is-dragging { cursor: grabbing; scroll-snap-type: none; }
.case-card {
  background: #fff; border-radius: 4px; overflow: hidden;
  flex: 0 0 auto; width: 92vw; max-width: 560px; scroll-snap-align: start;
}
.case-photos { display: grid; grid-template-columns: 1fr 1fr; cursor: zoom-in; }
.case-photos .ph { aspect-ratio: 4 / 3.4; border-radius: 0; }
.case-photos .ph-after { background: #cfc9bd; }

/* 症例ライトボックス(術前術後の拡大表示) */
.lightbox { position: fixed; inset: 0; z-index: 200; display: none; align-items: center; justify-content: center; padding: 24px; background: rgba(18,48,63,.86); }
.lightbox.is-open { display: flex; }
.lightbox-inner { position: relative; background: #fff; border-radius: 6px; width: 100%; max-width: 920px; max-height: 92vh; overflow: auto; padding: 30px; box-shadow: 0 24px 60px rgba(0,0,0,.35); }
.lightbox-caption { font-family: var(--serif); font-size: 19px; font-weight: 700; color: var(--teal); text-align: center; margin: 0 0 22px; padding: 0 36px; line-height: 1.5; }
.lightbox-photos { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
.lightbox-fig { margin: 0; }
.lightbox-fig figcaption { text-align: center; font-size: 13px; font-weight: 700; letter-spacing: .04em; color: var(--ink-soft); margin: 0 0 10px; }
.lightbox-fig figcaption::before { content: ""; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--greige-dark); margin-right: 7px; vertical-align: middle; }
.lightbox-fig.is-after figcaption::before { background: var(--gold); }
.lightbox-fig img { width: 100%; height: auto; border-radius: 4px; display: block; background: var(--base); }
.lightbox-note { text-align: center; font-size: 12px; color: var(--ink-muted); margin: 20px 0 0; }
.lightbox-close { position: absolute; top: 12px; right: 14px; width: 42px; height: 42px; border: none; background: var(--base); border-radius: 50%; font-size: 24px; line-height: 1; color: var(--ink); cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .2s; }
.lightbox-close:hover { background: var(--greige); }
body.lightbox-open { overflow: hidden; }
@media (max-width: 640px) { .lightbox { padding: 14px; } .lightbox-inner { padding: 22px 18px; } .lightbox-photos { grid-template-columns: 1fr; gap: 16px; } .lightbox-caption { font-size: 16px; padding: 0 30px; } }
.case-body { padding: 20px 22px 22px; }
.case-body h3 { font-size: 16.5px; font-weight: 700; color: var(--teal); margin: 0 0 12px; }
.case-meta { list-style: none; margin: 0; padding: 12px 0 0; font-size: 13px; color: var(--ink-muted); line-height: 2; border-top: 1px solid var(--greige); }
.case-disclosure { margin-top: 14px; padding: 13px 14px; background: var(--base); border-radius: 4px; font-size: 12px; color: var(--ink-muted); line-height: 1.7; }
.case-disclosure p { margin: 0 0 4px; }
.case-disclosure p:last-child { margin: 0; }
.case-disclosure b { color: var(--teal); }
@media (min-width: 640px) { .case-card { width: 520px; max-width: 520px; } }
@media (min-width: 1100px) { .case-card { width: 620px; max-width: 620px; } }

/* ---- doctor ---- */
.doctor-grid { display: grid; grid-template-columns: 320px 1fr; gap: 64px; align-items: center; }
.doctor-photo { aspect-ratio: 3/4; font-size: 13px; }
.doctor-body h2 { font-family: var(--serif); font-size: clamp(22px, 2.5vw, 28px); color: var(--teal); margin: 0 0 24px; }
.doctor-body .section-eyebrow { text-align: left; }
.doctor-lead { font-size: 15px; line-height: 2; color: var(--ink-soft); margin: 0 0 28px; max-width: 40em; }
.doctor-chips { list-style: none; display: flex; gap: 10px; flex-wrap: wrap; margin: 0 0 28px; padding: 0; }
.doctor-chips li { background: var(--greige); color: var(--teal); font-size: 12.5px; padding: 8px 14px; border-radius: 20px; }

/* ---- price ---- */
.price-inner { max-width: 900px; margin: 0 auto; text-align: center; }
.price-lead { font-size: 15px; color: var(--ink-soft); margin: 0 0 48px; }
.price-table { background: #fff; border-radius: 4px; overflow: hidden; text-align: left; margin: 0; }
.price-table > div { display: grid; grid-template-columns: 1fr auto; padding: 20px 28px; border-bottom: 1px solid var(--greige); }
.price-table > div:last-child { border-bottom: 0; }
.price-table dt { font-size: 14.5px; color: var(--ink-soft); }
.price-table dd { font-family: var(--serif); font-size: 16px; color: var(--teal); font-weight: 700; margin: 0; }
.price-note { font-size: 12.5px; color: var(--ink-muted); margin: 24px 0 0; }

/* ---- flow ---- */
.flow-grid { list-style: none; display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; margin: 8px 0 0; padding: 0; }
.flow-grid--4 { grid-template-columns: repeat(4, 1fr); max-width: 960px; margin: 8px auto 0; }
.flow-node { position: relative; text-align: center; padding-top: 14px; }
/* connector line running behind the discs */
.flow-node::before { content: ""; position: absolute; top: calc(14px + 62px); left: 50%; width: 100%; height: 2px; background: repeating-linear-gradient(90deg, rgba(31,95,91,.28) 0 8px, transparent 8px 14px); z-index: 0; }
.flow-node:last-child::before { display: none; }
.flow-disc { position: relative; z-index: 1; display: inline-flex; align-items: center; justify-content: center; width: 124px; height: 124px; border-radius: 50%; background: radial-gradient(circle at 50% 38%, #fff 0%, var(--offwhite) 72%); border: 1px solid var(--greige); box-shadow: 0 10px 24px -14px rgba(18,48,63,.28), inset 0 1px 0 rgba(255,255,255,.9); margin-bottom: 18px; transition: transform .3s ease, box-shadow .3s ease; }
.flow-disc img { width: 96px; height: 96px; margin: 0; filter: drop-shadow(0 6px 10px rgba(18,48,63,.16)); }
.flow-node:hover .flow-disc { transform: translateY(-6px); box-shadow: 0 18px 30px -16px rgba(18,48,63,.38), inset 0 1px 0 rgba(255,255,255,.9); }
.flow-num { position: absolute; top: 6px; left: 50%; transform: translateX(38px); z-index: 2; display: inline-flex; align-items: center; justify-content: center; min-width: 30px; height: 30px; padding: 0 6px; border-radius: 999px; background: var(--teal); color: #fff; font-family: var(--serif); font-weight: 700; font-size: 14px; box-shadow: 0 6px 14px -6px rgba(31,95,91,.6); }
.flow-step { display: block; font-size: 11px; letter-spacing: .1em; color: var(--gold); font-weight: 700; margin-bottom: 6px; }
.flow-grid h3 { font-size: 14.5px; font-weight: 700; color: var(--teal); margin: 0 0 6px; }
.flow-grid p { font-size: 12px; color: var(--ink-muted); margin: 0; }

/* ---- faq ---- */
.faq-inner { max-width: 800px; margin: 0 auto; }
.faq-inner details { background: #fff; border-radius: 4px; margin-bottom: 12px; padding: 20px 24px; }
.faq-inner summary { font-size: 15px; font-weight: 700; color: var(--teal); cursor: pointer; }
.faq-inner details p { font-size: 13.5px; line-height: 1.9; color: var(--ink-muted); margin: 14px 0 0; }
.faq-more { text-align: center; margin: 28px 0 0; }

/* ---- 装置の比較表 ---- */
.cmp-wrap { max-width: 1000px; margin: 8px auto 0; }
.cmp-legend { display: flex; flex-wrap: wrap; gap: 6px 18px; justify-content: center; margin: 0 0 20px; font-size: 12.5px; color: var(--ink-muted); }
.cmp-legend b { color: var(--teal); font-weight: 700; }
.cmp-table { width: 100%; border-collapse: separate; border-spacing: 0; background: #fff; border-radius: 10px; overflow: hidden; box-shadow: 0 10px 30px -18px rgba(18,48,63,.3); }
.cmp-table th, .cmp-table td { padding: 15px 14px; text-align: center; border-bottom: 1px solid var(--greige); font-size: 13.5px; vertical-align: middle; }
.cmp-table thead th { background: var(--teal); color: #fff; font-weight: 700; font-size: 12.5px; letter-spacing: .02em; border-bottom: none; }
.cmp-table thead th:first-child { background: var(--teal-dark); text-align: left; }
.cmp-table tbody th[scope="row"] { text-align: left; font-family: var(--serif); font-weight: 700; color: var(--teal); font-size: 14px; background: var(--offwhite); white-space: nowrap; }
.cmp-table tbody tr:last-child th, .cmp-table tbody tr:last-child td { border-bottom: none; }
.cmp-table .rate { font-size: 15px; font-weight: 700; margin-right: 3px; }
.cmp-table .rate-good { color: var(--teal); }
.cmp-table .rate-mid { color: var(--gold); }
.cmp-table .rate-poor { color: var(--ph-text); }
.cmp-val { display: block; }
.cmp-main { display: inline-block; font-weight: 500; }
.cmp-sub { display: block; font-size: 11.5px; color: var(--ink-muted); margin-top: 3px; line-height: 1.5; }
.cmp-links { display: flex; flex-wrap: wrap; gap: 10px 14px; justify-content: center; margin: 24px 0 0; }
.cmp-note { text-align: center; font-size: 12px; color: var(--ph-text); margin: 16px 0 0; }
@media (max-width: 767px) {
  .cmp-legend { font-size: 11.5px; gap: 4px 12px; }
  .cmp-table, .cmp-table tbody, .cmp-table tr, .cmp-table th, .cmp-table td { display: block; }
  .cmp-table { background: transparent; box-shadow: none; border-radius: 0; }
  .cmp-table thead { display: none; }
  .cmp-table tbody tr { background: #fff; border-radius: 10px; box-shadow: 0 8px 22px -16px rgba(18,48,63,.3); margin-bottom: 16px; overflow: hidden; }
  .cmp-table tbody th[scope="row"] { background: var(--teal); color: #fff; font-size: 15px; padding: 13px 16px; }
  .cmp-table td { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; text-align: right; padding: 11px 16px; }
  .cmp-table td::before { content: attr(data-label); font-weight: 700; color: var(--teal); font-size: 12.5px; text-align: left; flex-shrink: 0; padding-top: 1px; }
  .cmp-val { flex: 1; text-align: right; }
  .cmp-main { display: block; }
}

/* ---- access ---- */
.access-grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: 48px; align-items: start; }
.access-map { aspect-ratio: 16/10; font-size: 13px; }
.access-map-wrap { aspect-ratio: 16/10; border-radius: 4px; overflow: hidden; background: var(--greige-dark); }
.access-map-wrap iframe { width: 100%; height: 100%; border: 0; display: block; }
.access-photo { aspect-ratio: 16/10; font-size: 13px; margin-bottom: 28px; }
.access-station { font-size: 15px; font-weight: 700; color: var(--teal); margin: 0 0 6px; }
.access-address { font-size: 14px; color: var(--ink-muted); margin: 0; }
.hours { margin-top: 56px; }
.hours table { width: 100%; border-collapse: collapse; font-size: 13px; text-align: center; }
.hours thead tr { background: var(--teal); color: var(--base); }
.hours th, .hours td { padding: 12px; font-weight: 500; }
.hours tbody tr:nth-child(odd) { background: #fff; }
.hours tbody tr:nth-child(even) { background: #F3F0EA; }
.hours tbody th { font-weight: 700; color: var(--teal); }
.hours td.open { color: var(--gold); }
.hours td.closed { color: #b0aa9c; }
.hours-note { text-align: center; font-size: 13px; color: var(--ink-muted); margin: 16px 0 0; }

/* ---- 診療カレンダー(今月+来月・自動生成) ---- */
.clinic-calendar { margin-top: 40px; }
.cal-head { text-align: center; margin-bottom: 18px; }
.cal-head .section-eyebrow { margin-bottom: 4px; }
.cal-h { font-family: var(--serif); font-size: 20px; color: var(--teal); margin: 0; }
.cal-legend { display: flex; justify-content: center; gap: 20px; margin-bottom: 20px; font-size: 12.5px; color: var(--ink-muted); }
.cal-lg { display: inline-flex; align-items: center; gap: 7px; }
.cal-lg::before { content: ""; width: 13px; height: 13px; border-radius: 3px; border: 1px solid var(--greige-dark); }
.cal-lg-open::before { background: #fff; }
.cal-lg-closed::before { background: #F0EBE2; }
.cal-months { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; max-width: 760px; margin: 0 auto; }
.cal-month { background: #fff; border: 1px solid var(--greige); border-radius: 10px; padding: 16px 16px 18px; }
.cal-title { text-align: center; font-family: var(--serif); font-size: 16px; font-weight: 700; color: var(--teal); margin-bottom: 12px; }
.cal-grid { width: 100%; border-collapse: collapse; table-layout: fixed; }
.cal-grid th { font-size: 11px; font-weight: 700; color: var(--ink-muted); padding: 4px 0 8px; }
.cal-grid th.cal-sun { color: #b06a5a; }
.cal-grid th.cal-sat { color: #5a7fb0; }
.cal-grid td { height: 42px; vertical-align: top; text-align: center; padding: 3px 0 0; border-top: 1px solid #efe9df; position: relative; }
.cal-d { font-size: 12.5px; font-weight: 500; color: var(--ink-soft); line-height: 1.1; }
.cal-mark { display: block; font-size: 11px; margin-top: 1px; }
.cal-mark.cal-open { color: var(--gold); font-size: 9px; }
.cal-grid td.is-closed { background: #F5F1EA; }
.cal-grid td.is-closed .cal-d { color: #a39c8e; }
.cal-grid td.is-closed .cal-mark { color: #b0a99b; }
.cal-grid td.cal-sun .cal-d { color: #b06a5a; }
.cal-grid td.cal-sat .cal-d { color: #5a7fb0; }
.cal-grid td.is-today { outline: 2px solid var(--gold); outline-offset: -2px; border-radius: 4px; }
.cal-hol { display: block; font-size: 11px; line-height: 1.15; color: #b06a5a; margin-top: 1px; padding: 0 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cal-empty { background: transparent; }
.cal-note { text-align: center; font-size: 12px; color: var(--ink-muted); margin: 18px 0 0; }
@media (max-width: 640px) {
  .cal-months { grid-template-columns: 1fr; gap: 18px; max-width: 400px; }
  .cal-legend { gap: 14px; }
  .cal-grid td { height: 40px; }
}

/* ---- final CTA ---- */
.final-cta { background: var(--teal); padding: 88px 48px; text-align: center; }
.final-cta h2 { font-family: var(--serif); font-size: clamp(20px, 2.5vw, 28px); color: var(--base); margin: 0 0 36px; }
.final-cta-btns { display: flex; align-items: center; justify-content: center; gap: 20px; flex-wrap: wrap; }

/* ---- お悩み別リンク(トップ) ---- */
.symptom-links { max-width: 1000px; margin: 0 auto; display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.symptom-links a { background: #fff; border: 1px solid var(--greige); border-radius: 8px; padding: 20px 18px; font-size: 15px; font-weight: 700; color: var(--teal); display: flex; flex-direction: column; gap: 4px; transition: box-shadow .2s, transform .2s; }
.symptom-links a:hover { box-shadow: 0 8px 20px rgba(31,95,91,.12); transform: translateY(-2px); }
.symptom-links a span { font-size: 11.5px; font-weight: 400; color: var(--ink-muted); }

/* ---- お悩み別:画像カード対応(トップ) ---- */
.symptom-links.has-thumbs { max-width: 900px; grid-template-columns: repeat(3, 1fr); }
.symptom-links.has-thumbs a { align-items: center; text-align: center; padding: 16px 14px 18px; justify-content: flex-start; }
.symptom-thumb { width: 100%; aspect-ratio: 4 / 3; background: var(--offwhite); border: 1px solid var(--greige); border-radius: 8px; margin-bottom: 12px; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.symptom-thumb img { width: 90%; height: 90%; object-fit: contain; }
.symptom-thumb.is-placeholder { color: var(--ink-muted); font-size: 12px; font-weight: 500; background: repeating-linear-gradient(45deg, var(--offwhite), var(--offwhite) 10px, #f3efe8 10px, #f3efe8 20px); }

/* ---- 症状ページ:ヒーローイラスト ---- */
.symptom-hero { max-width: 900px; margin: 0 auto; display: grid; grid-template-columns: 1.15fr .85fr; gap: 32px; align-items: center; }
.symptom-hero .lead-box { margin: 0; }
.symptom-hero-illust { background: var(--offwhite); border: 1px solid var(--greige); border-radius: 12px; padding: 12px; }
.symptom-hero-illust img { display: block; width: 100%; height: auto; }
@media (max-width: 720px) { .symptom-hero { grid-template-columns: 1fr; gap: 20px; } }

/* ---- ビフォーアフター比較イラスト ---- */
.ba-compare { max-width: 820px; margin: 8px auto 0; display: grid; grid-template-columns: 1fr auto 1fr; gap: 16px; align-items: center; }
.ba-item { text-align: center; }
.ba-item figure { margin: 0; background: var(--offwhite); border: 1px solid var(--greige); border-radius: 12px; padding: 10px; }
.ba-item img { display: block; width: 100%; height: auto; }
.ba-item figcaption { margin-top: 10px; font-size: 13px; font-weight: 700; color: var(--teal); }
.ba-item.is-before figcaption { color: var(--ink-muted); }
.ba-arrow { font-size: 28px; color: var(--gold); font-weight: 700; }
.ba-note { max-width: 820px; margin: 12px auto 0; font-size: 12px; color: var(--ink-muted); text-align: center; }
@media (max-width: 640px) { .ba-compare { grid-template-columns: 1fr; } .ba-arrow { transform: rotate(90deg); margin: 0 auto; } }

/* ---- 医療広告注記 ---- */
.notice-mark { color: var(--gold-ink); font-size: .75em; vertical-align: super; font-weight: 700; margin-left: 1px; position: relative; }
.notice-mark::after { content: ""; position: absolute; inset: -14px -12px; } /* タップ領域の拡張(44px相当) */
.menu-brand { font-size: 12px; color: var(--ink-muted); font-weight: 500; display: block; margin-top: 2px; }
.notice { background: var(--greige); padding: 56px 48px; }
.notice-inner { max-width: 780px; margin: 0 auto; color: var(--ink-muted); font-size: 12.5px; line-height: 1.9; }
.notice-inner h2 { font-size: 15px; color: var(--teal); margin: 0 0 14px; font-family: var(--serif); }
.notice-inner h3 { font-size: 13px; color: var(--ink-soft); margin: 22px 0 8px; }
.notice-lead { margin: 0 0 8px; }
.notice-inner ul { margin: 0; padding-left: 1.2em; }
.notice-inner li { margin-bottom: 6px; }
.notice-inner b { color: var(--ink-soft); font-weight: 700; }

.notice-verify { color: var(--gold-dark); }

/* ============================================================
   小児矯正 特設ページ (/child/)
   ============================================================ */
.breadcrumb { max-width: 1440px; margin: 0 auto; padding: 16px 48px 0; font-size: 12.5px; color: var(--ink-muted); }
.breadcrumb a { color: var(--teal); }
.breadcrumb a:hover { text-decoration: underline; }

.child-hero { max-width: 1440px; margin: 0 auto; padding: 48px 48px 72px; display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; }
.child-hero-text h1 { font-family: var(--serif); font-size: clamp(28px, 3.4vw, 42px); color: var(--teal); margin: 0 0 22px; line-height: 1.55; }
.child-hero-lead { font-size: 15.5px; line-height: 2; color: var(--ink-soft); margin: 0 0 32px; }
.child-hero-img img { width: 100%; border-radius: 12px; box-shadow: 0 16px 40px rgba(31,95,91,.14); }

.reassure { background: var(--teal); display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; padding: 56px 48px; }
.reassure-item { text-align: center; color: var(--base); }
.reassure-item img { filter: brightness(0) invert(1); margin-bottom: 14px; }
.reassure-item h2 { font-size: 17px; font-weight: 700; margin: 0 0 10px; color: #fff; }
.reassure-item p { font-size: 13.5px; line-height: 1.85; color: #d7e2e0; margin: 0; }

.why-grid { display: grid; grid-template-columns: 0.9fr 1.1fr; gap: 56px; align-items: center; }
.why-photo { aspect-ratio: 4/3; font-size: 13px; }
.why-photo.photo-img { object-fit: contain; background: #ece7de; }
.why-body p { font-size: 15px; line-height: 2; color: var(--ink-soft); margin: 0 0 18px; }
.why-body p:last-child { margin: 0; }
.why-body b { color: var(--teal); font-weight: 700; }

.timeline { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.timeline li { background: #fff; border-radius: 8px; padding: 28px 24px; border-top: 4px solid var(--greige-dark); }
.timeline li.timeline-highlight { border-top-color: var(--gold); box-shadow: 0 12px 30px rgba(176,141,87,.16); }
.timeline-age { display: inline-block; font-family: var(--serif); font-size: 15px; font-weight: 700; color: var(--gold-dark); margin-bottom: 8px; }
.timeline h3 { font-size: 17px; color: var(--teal); margin: 0 0 12px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.timeline-badge { font-size: 11px; font-weight: 700; color: #fff; background: var(--gold); padding: 3px 10px; border-radius: 20px; }
.timeline p { font-size: 13.5px; line-height: 1.85; color: var(--ink-muted); margin: 0; }

.phase-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.phase-card { background: #fff; border: 1px solid var(--greige); border-radius: 8px; padding: 32px; }
.phase-label { display: inline-block; font-size: 13px; font-weight: 700; color: #fff; background: var(--teal); padding: 5px 16px; border-radius: 20px; margin-bottom: 16px; }
.phase-card h3 { font-family: var(--serif); font-size: 20px; color: var(--teal); margin: 0 0 14px; }
.phase-card p { font-size: 14px; line-height: 1.9; color: var(--ink-muted); margin: 0; }

.child-menu-grid { grid-template-columns: repeat(3, 1fr); }
.final-cta-lead { color: #d7e2e0; font-size: 14.5px; margin: 0 0 32px; }

/* ============================================================
   下層ページ共通
   ============================================================ */
.page-head { max-width: 900px; margin: 0 auto; padding: 56px 48px 8px; text-align: center; }
.page-head-title { font-family: var(--serif); font-size: clamp(26px, 3.2vw, 36px); color: var(--teal); margin: 8px 0 20px; }
.page-head-lead { font-size: 15px; line-height: 2; color: var(--ink-soft); margin: 0; }
.page-head-lead b { color: var(--teal); }
.prose { max-width: 820px; margin: 0 auto; }
.prose p { font-size: 15px; line-height: 2.1; color: var(--ink-soft); margin: 0 0 20px; }
.prose p:last-child { margin: 0; }
.prose b { color: var(--teal); font-weight: 700; }

/* ---- 院長ページ ---- */
.doctor-hero { max-width: 1200px; margin: 0 auto; padding: 40px 48px 64px; display: grid; grid-template-columns: 340px 1fr; gap: 56px; align-items: center; }
.doctor-hero-photo { aspect-ratio: 3/4; font-size: 13px; }
.doctor-hero-text h1 { font-family: var(--serif); font-size: clamp(26px, 3vw, 38px); color: var(--teal); line-height: 1.5; margin: 0 0 24px; }
.doctor-hero-name { font-size: 16px; color: var(--ink-soft); margin: 0 0 20px; }
.doctor-hero-name b { font-size: 22px; font-weight: 700; color: var(--ink); }
.doctor-hero-kana { font-size: 13px; color: var(--ink-muted); margin-left: 12px; }
.doctor-hero-lead { font-size: 15px; line-height: 2; color: var(--ink-soft); margin: 0; }
.path-inner { max-width: 900px; margin: 0 auto; }
.path-inner .section-title { text-align: left; }
.career-wrap { max-width: 1100px; margin: 0 auto; display: grid; grid-template-columns: 1.4fr 1fr; gap: 56px; align-items: start; }
.career-list { margin: 0; }
.career-list > div { display: grid; grid-template-columns: 120px 1fr; gap: 16px; padding: 16px 0; border-bottom: 1px solid var(--greige); }
.career-list dt { font-family: var(--serif); font-weight: 700; color: var(--gold-dark); font-size: 15px; }
.career-list dd { margin: 0; font-size: 14.5px; color: var(--ink-soft); }
.career-side h3 { font-size: 14px; color: var(--teal); margin: 0 0 12px; padding-bottom: 8px; border-bottom: 2px solid var(--greige); }
.career-side h3:not(:first-child) { margin-top: 28px; }
.doctor-chips-list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.doctor-chips-list li { background: var(--greige); color: var(--teal); font-size: 12.5px; padding: 7px 14px; border-radius: 20px; }

/* ---- 症例ページ ---- */
.case-filter { max-width: 1200px; margin: 0 auto; padding: 24px 48px; }
.case-filter-group { display: flex; align-items: baseline; gap: 16px; margin-bottom: 16px; flex-wrap: wrap; }
.case-filter-label { font-size: 13px; font-weight: 700; color: var(--teal); white-space: nowrap; }
.case-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.case-chip { font-family: var(--sans); font-size: 13px; color: var(--ink-soft); background: #fff; border: 1px solid var(--greige-dark); padding: 7px 16px; border-radius: 20px; cursor: pointer; transition: background .2s, color .2s, border-color .2s; }
.case-chip:hover { border-color: var(--teal); color: var(--teal); }
.case-chip.is-active { background: var(--teal); color: #fff; border-color: var(--teal); }
.case-filter-note { font-size: 12px; color: var(--ink-muted); margin: 4px 0 0; }
.case-page-grid-wrap { max-width: 1240px; margin: 0 auto; padding: 24px 0 40px; }
.case-page-grid-wrap > .case-scroll-hint, .case-page-grid-wrap > .case-grid { padding-left: 24px; padding-right: 24px; }
/* 症例ページは横スクロールを使わず、折り返しの固定グリッド＋絞り込み表示にする */
.case-page-grid {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px;
  overflow: visible; cursor: default; scroll-snap-type: none;
}
.case-page-grid .case-card { width: auto; max-width: none; flex: initial; border: 1px solid var(--greige); }
.case-page-grid .case-card[hidden] { display: none; }
/* 症例が1件だけのときは横幅いっぱいに広げず中央寄せ(2件以上なら自動で2カラム) */
.case-page-grid .case-card:only-child { grid-column: 1 / -1; max-width: 640px; margin: 0 auto; }
.case-empty { text-align: center; color: var(--ink-muted); font-size: 14px; padding: 48px 0; margin: 0; }
@media (max-width: 760px) { .case-page-grid { grid-template-columns: 1fr; } }
/* 単独症例(小児ページ等)を中央寄せで固定表示 */
.case-single { max-width: 640px; margin: 0 auto; }
.case-single .case-card { width: auto; max-width: none; flex: initial; border: 1px solid var(--greige); }
.case-tags { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 10px; }
.case-tags span { font-size: 11px; color: var(--teal); background: var(--greige); padding: 3px 10px; border-radius: 4px; }
.case-body h2 { font-size: 15px; font-weight: 700; color: var(--teal); margin: 0 0 12px; }
.case-page-note { text-align: center; font-size: 12.5px; color: var(--ink-muted); margin: 36px 0 0; }

/* ---- 料金ページ ---- */
.price-policy { max-width: 1100px; margin: 0 auto; display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; }
.price-policy-item { background: #fff; border: 1px solid var(--greige); border-radius: 8px; padding: 28px 24px; }
.price-policy-num { font-family: var(--serif); font-size: 28px; font-weight: 700; color: var(--gold); }
.price-policy-item h2 { font-size: 16px; color: var(--teal); margin: 8px 0 12px; }
.price-policy-item p { font-size: 13.5px; line-height: 1.85; color: var(--ink-muted); margin: 0; }
.price-table-wrap { max-width: 900px; margin: 0 auto; }
.price-cat-title { font-family: var(--serif); font-size: 24px; color: var(--teal); margin: 0 0 24px; padding-bottom: 12px; border-bottom: 2px solid var(--gold); }
.price-sub { font-size: 15px; color: var(--ink); margin: 28px 0 10px; }
.price-full-table { width: 100%; border-collapse: collapse; background: #fff; border-radius: 8px; overflow: hidden; }
.price-full-table th[scope="row"] { text-align: left; font-weight: 500; font-size: 14px; color: var(--ink-soft); padding: 16px 20px; border-bottom: 1px solid var(--greige); }
.price-full-table td { text-align: right; font-family: var(--serif); font-weight: 700; font-size: 15px; color: var(--teal); padding: 16px 20px; border-bottom: 1px solid var(--greige); white-space: nowrap; }
.price-full-table tr:last-child th, .price-full-table tr:last-child td { border-bottom: 0; }
/* 説明用の表(金額ではなく内容を書く場合)。price-full-table の「金額1行」向け指定を打ち消す。
   ★td の white-space:nowrap を外さないと長文が折り返さず横に突き抜ける(2026-08-04に実際に出した) */
.price-full-table--desc th[scope="row"] { white-space: normal; width: 32%; vertical-align: top; color: var(--teal); font-weight: 700; font-size: 14.5px; line-height: 1.8; }
.price-full-table--desc td { white-space: normal; text-align: left; font-family: var(--sans); font-weight: 400; font-size: 14px; line-height: 1.95; color: var(--ink-soft); }
.price-full-table--desc td b { color: var(--teal); font-weight: 700; }
@media (max-width: 767px) {
  .price-full-table--desc th[scope="row"] { display: block; width: auto; border-bottom: 0; padding: 16px 16px 4px; }
  .price-full-table--desc td { display: block; padding: 0 16px 16px; }
}
.price-highlight { background: #fff6e9; border-left: 4px solid var(--gold); padding: 16px 20px; font-size: 13.5px; color: var(--ink-soft); margin: 20px 0 0; border-radius: 0 6px 6px 0; }

/* ============================================================
   症状ページの追記ブロック(2026-08-04 テキスト増量)
   ★.section 直下の <p> は汎用の脚注ルール(12px・中央寄せ)を拾うので、
     本文を置くときは必ずこのクラスで囲うこと。素の <p> を置かない。
   ============================================================ */
.sym-note { max-width: 900px; margin: 28px auto 0; font-size: 15px; line-height: 2; color: var(--ink-soft); text-align: left; }
.sym-note b { color: var(--teal); }
.stance-body { max-width: 900px; margin: 0 auto; text-align: left; }
.stance-body > p { font-size: 15px; line-height: 2; color: var(--ink-soft); text-align: left; margin: 0 0 20px; }
.stance-body > p:last-child { margin-bottom: 0; }
.stance-body b { color: var(--teal); }
.stance-body .ba-note { font-size: 12.5px; line-height: 1.9; color: var(--ink-muted); text-align: left; margin-top: 24px; }
@media (max-width: 767px) {
  .sym-note { font-size: 14.5px; line-height: 1.95; margin-top: 22px; }
  .stance-body > p { font-size: 14.5px; line-height: 1.95; }
}
.price-support-grid { max-width: 900px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.price-support-item { background: var(--greige); border-radius: 8px; padding: 28px; }
.price-support-item h3 { font-size: 16px; color: var(--teal); margin: 0 0 12px; }
.price-support-item p { font-size: 13.5px; line-height: 1.9; color: var(--ink-muted); margin: 0; }

/* ============================================================
   アライナー特設LP(/menu/mouthpiece/)
   ============================================================ */
/* ヒーロー */
.al-hero { position: relative; min-height: 520px; display: flex; align-items: center; overflow: hidden; }
.al-hero-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.al-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(250,248,245,.94) 0%, rgba(250,248,245,.8) 38%, rgba(250,248,245,.12) 66%, rgba(250,248,245,0) 100%); }
.al-hero-inner { position: relative; z-index: 1; max-width: 1240px; margin: 0 auto; width: 100%; padding: 72px 48px; }
.al-hero-inner .hero-eyebrow { color: var(--gold-ink); }
.al-hero h1 { font-family: var(--serif); font-size: clamp(28px, 4vw, 46px); font-weight: 700; color: var(--teal); line-height: 1.5; margin: 0 0 22px; }
.al-hero-lead { font-size: 16px; line-height: 2; color: var(--ink-soft); margin: 0 0 32px; max-width: 460px; }
.al-hero-note { font-size: 12px; color: var(--ink-muted); margin: 20px 0 0; }

/* 交互 feature-row */
.al-row { max-width: 1100px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
.al-row + .al-row { margin-top: 72px; }
.al-row.reverse .al-figure { order: 2; }
.al-figure img { width: 100%; border-radius: 10px; display: block; box-shadow: 0 16px 40px rgba(31,95,91,.10); }
.al-figure.plain img { box-shadow: none; background: #fff; border: 1px solid var(--greige); }
.al-copy .al-tag { display: inline-block; font-size: 12px; font-weight: 700; letter-spacing: .08em; color: var(--gold-dark); margin-bottom: 12px; }
.al-copy h2 { font-family: var(--serif); font-size: clamp(22px, 2.6vw, 30px); color: var(--teal); line-height: 1.5; margin: 0 0 18px; }
.al-copy p { font-size: 15px; line-height: 2; color: var(--ink-soft); margin: 0 0 14px; }
.al-copy p:last-child { margin: 0; }
.al-copy b { color: var(--teal); }

/* メリット3枚組(画像上・カード) */
.al-benefits { max-width: 1100px; margin: 0 auto; display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.al-benefit { background: #fff; border: 1px solid var(--greige); border-radius: 10px; overflow: hidden; }
.al-benefit img { width: 100%; aspect-ratio: 3/2; object-fit: cover; display: block; }
.al-benefit-body { padding: 22px; }
.al-benefit-body h3 { font-size: 16px; color: var(--teal); margin: 0 0 8px; }
.al-benefit-body p { font-size: 13.5px; line-height: 1.85; color: var(--ink-muted); margin: 0; }

/* 流れ(横長イラスト) */
.al-flow-img { max-width: 1000px; margin: 0 auto; }
.al-flow-img img { width: 100%; border-radius: 10px; display: block; }
.al-flow-steps { max-width: 1000px; margin: 28px auto 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.al-flow-step { text-align: center; }
.al-flow-step .n { display: inline-flex; width: 34px; height: 34px; align-items: center; justify-content: center; border-radius: 50%; background: var(--teal); color: #fff; font-family: var(--serif); font-weight: 700; font-size: 15px; margin-bottom: 10px; }
.al-flow-step h3 { font-size: 14px; color: var(--teal); margin: 0 0 4px; }
.al-flow-step p { font-size: 12px; color: var(--ink-muted); margin: 0; }

/* 中立提案(画像+文) */
.al-neutral { max-width: 1000px; margin: 0 auto; display: grid; grid-template-columns: 0.85fr 1.15fr; gap: 44px; align-items: center; }
.al-neutral img { width: 100%; border-radius: 10px; display: block; }
.al-neutral h2 { font-family: var(--serif); font-size: 24px; color: var(--teal); margin: 0 0 16px; }
.al-neutral p { font-size: 15px; line-height: 2; color: var(--ink-soft); margin: 0; }
.al-neutral b { color: var(--teal); }

/* 最終CTA(画像背景) */
.al-cta { position: relative; padding: 96px 48px; text-align: center; overflow: hidden; }
.al-cta-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.al-cta::after { content: ""; position: absolute; inset: 0; background: rgba(18,48,63,.7); }
.al-cta-inner { position: relative; z-index: 1; }
.al-cta h2 { font-family: var(--serif); font-size: clamp(22px, 3vw, 30px); color: #fff; margin: 0 0 14px; }
.al-cta p { color: #d7e2e0; font-size: 15px; margin: 0 0 32px; }

@media (max-width: 900px) {
  .al-benefits { grid-template-columns: 1fr; max-width: 460px; }
  .al-flow-steps { grid-template-columns: 1fr 1fr; gap: 20px; }
}
@media (max-width: 767px) {
  .al-hero { min-height: 0; }
  .al-hero::after { background: linear-gradient(180deg, rgba(250,248,245,.5) 0%, rgba(250,248,245,.85) 55%, rgba(250,248,245,.97) 100%); }
  .al-hero-inner { padding: 220px 20px 40px; }
  .al-hero-lead { max-width: none; }
  .al-row, .al-row.reverse .al-figure { grid-template-columns: 1fr; gap: 24px; order: 0; }
  .al-figure { order: -1; }
  .al-neutral { grid-template-columns: 1fr; gap: 24px; }
  .al-cta { padding: 64px 20px; }
}

/* ============================================================
   装置別・症状別ページ共通
   ============================================================ */
.lead-box { max-width: 820px; margin: 0 auto 8px; background: var(--greige); border-radius: 8px; padding: 28px 32px; }
.lead-box p { font-size: 15px; line-height: 2; color: var(--ink-soft); margin: 0; }
.lead-box b { color: var(--teal); }
.md-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; max-width: 1000px; margin: 0 auto; }
.md-col { border-radius: 8px; padding: 28px; }
.md-col h3 { margin: 0 0 16px; font-size: 17px; display: flex; align-items: center; gap: 8px; }
.md-col.merit { background: #eef5f3; }
.md-col.merit h3 { color: var(--teal); }
.md-col.demerit { background: #f7f1ea; }
.md-col.demerit h3 { color: var(--gold-dark); }
.md-col ul { margin: 0; padding-left: 1.2em; }
.md-col li { font-size: 14px; line-height: 1.85; color: var(--ink-soft); margin-bottom: 8px; }
.applies { max-width: 820px; margin: 0 auto; list-style: none; padding: 0; display: grid; gap: 12px; }
.applies li { background: #fff; border: 1px solid var(--greige); border-radius: 6px; padding: 16px 20px; font-size: 14.5px; color: var(--ink-soft); display: flex; gap: 12px; align-items: flex-start; }
.applies li::before { content: "✓"; color: var(--gold); font-weight: 700; flex-shrink: 0; }
.cause-grid { max-width: 900px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.cause-item { background: #fff; border: 1px solid var(--greige); border-radius: 8px; padding: 24px; }
.cause-item h3 { font-size: 15px; color: var(--teal); margin: 0 0 10px; }
.cause-item p { font-size: 13.5px; line-height: 1.85; color: var(--ink-muted); margin: 0; }
.mini-ctas { max-width: 820px; margin: 40px auto 0; display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.mini-cta { display: flex; flex-direction: column; gap: 4px; background: var(--teal); color: var(--base); border-radius: 8px; padding: 22px 24px; transition: background .2s; }
.mini-cta:hover { background: var(--teal-dark); }
.mini-cta b { font-size: 15px; }
.mini-cta span { font-size: 12.5px; color: #cfe0dd; }
.risk-inline { max-width: 820px; margin: 0 auto; background: #f7f1ea; border-left: 4px solid var(--gold); border-radius: 0 6px 6px 0; padding: 20px 24px; }
.risk-inline h3 { font-size: 14px; color: var(--gold-dark); margin: 0 0 8px; }
.risk-inline p { font-size: 13px; line-height: 1.8; color: var(--ink-muted); margin: 0; }
.device-nav { max-width: 1000px; margin: 0 auto; display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.device-nav a { text-align: center; background: #fff; border: 1px solid var(--greige); border-radius: 6px; padding: 14px 8px; font-size: 13px; font-weight: 700; color: var(--teal); transition: background .2s, color .2s; }
.device-nav a:hover, .device-nav a.is-current { background: var(--teal); color: #fff; }

/* ---- 画像埋め込み(プレースホルダ差し替え) ---- */
.photo-img { width: 100%; height: 100%; object-fit: cover; display: block; border-radius: 4px; }
.doctor-photo.photo-img, .doctor-hero-photo.photo-img { object-position: center 30%; }
.case-photos .photo-img { border-radius: 0; object-fit: contain; background: #ece7de; }

/* ---- ブログ ---- */
.blog-grid { max-width: 1100px; margin: 0 auto; display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.blog-card { background: #fff; border: 1px solid var(--greige); border-radius: 8px; overflow: hidden; display: flex; flex-direction: column; transition: box-shadow .2s, transform .2s; }
a.blog-card:hover { box-shadow: 0 10px 28px rgba(31,95,91,.12); transform: translateY(-2px); }
.blog-card.is-placeholder { opacity: .55; }
.blog-thumb { aspect-ratio: 16/10; border-radius: 0; font-size: 12px; }
.blog-card-body { padding: 20px; display: flex; flex-direction: column; gap: 8px; }
.blog-cat { align-self: flex-start; font-size: 11px; font-weight: 700; color: var(--gold-dark); background: var(--greige); padding: 3px 10px; border-radius: 4px; }
.blog-card-body h3 { font-size: 15.5px; color: var(--teal); margin: 0; line-height: 1.5; }
.blog-card-body p { font-size: 13px; color: var(--ink-muted); line-height: 1.75; margin: 0; }
.blog-card-body time { font-size: 12px; color: var(--ink-muted); }
.blog-article-inner { max-width: 760px; margin: 0 auto; }
.blog-article-title { font-family: var(--serif); font-size: clamp(24px, 3vw, 34px); color: var(--teal); line-height: 1.5; margin: 12px 0 16px; }
.blog-meta { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; font-size: 13px; color: var(--ink-muted); padding-bottom: 20px; border-bottom: 1px solid var(--greige); margin-bottom: 28px; }
.blog-author a { color: var(--teal); font-weight: 700; border-bottom: 1px solid var(--teal); }
.blog-hero { aspect-ratio: 16/9; margin-bottom: 28px; font-size: 13px; }
.blog-body h2 { font-family: var(--serif); font-size: 20px; color: var(--teal); margin: 36px 0 14px; padding-left: 14px; border-left: 4px solid var(--gold); }
.blog-note { font-size: 12px; color: var(--ph-text); margin-top: 32px; text-align: center; }
/* 回答エンジン型: 導入リード＋各見出し直下の結論先出し */
.blog-body .blog-lead { font-size: 16px; line-height: 2.05; color: var(--ink-soft); }
.blog-body .ans-lead { font-weight: 700; color: var(--teal); background: rgba(31,95,91,.055); border-left: 3px solid var(--gold); padding: 13px 18px; border-radius: 0 6px 6px 0; margin: 0 0 16px; line-height: 1.9; }
.blog-body .ans-lead b { color: var(--gold-dark); }
/* 著者ボックス(E-E-A-T / Personスキーマ連携) */
.blog-author-box { display: flex; gap: 18px; align-items: flex-start; background: var(--offwhite); border: 1px solid var(--greige); border-radius: 12px; padding: 22px 24px; margin: 40px 0 0; }
.blog-author-photo { width: 72px; height: 72px; border-radius: 50%; object-fit: cover; flex-shrink: 0; border: 2px solid #fff; box-shadow: 0 4px 12px -6px rgba(18,48,63,.35); }
.blog-author-role { font-size: 11px; letter-spacing: .1em; color: var(--gold); font-weight: 700; }
.blog-author-name { font-family: var(--serif); font-size: 18px; font-weight: 700; color: var(--teal); margin: 4px 0 8px; }
.blog-author-name span { font-family: var(--sans); font-size: 12.5px; font-weight: 500; color: var(--ink-muted); margin-left: 8px; }
.blog-author-desc { font-size: 13px; line-height: 1.9; color: var(--ink-muted); margin: 0; }
.blog-author-desc b { color: var(--teal); font-weight: 700; }
.blog-author-desc a { color: var(--teal); font-weight: 700; border-bottom: 1px solid var(--teal); white-space: nowrap; }
@media (max-width: 560px) {
  .blog-author-box { flex-direction: column; gap: 12px; padding: 20px; }
}

/* ---- footer ---- */
.site-footer { background: var(--navy); padding: 64px 48px 40px; }
.footer-grid { max-width: 1440px; margin: 0 auto; display: grid; grid-template-columns: 1.2fr 1fr; gap: 64px; }
.footer-address { font-size: 13.5px; color: #c7cdc9; line-height: 2; margin: 20px 0 0; }
.footer-links { display: flex; gap: 24px; margin-top: 28px; font-size: 13px; }
.footer-links a { color: #c7cdc9; }
.footer-links a:hover { color: var(--gold); }
.footer-hours { width: 100%; border-collapse: collapse; font-size: 12px; text-align: center; color: #c7cdc9; }
.footer-hours th, .footer-hours td { padding: 8px; font-weight: 500; }
.footer-hours thead tr { border-bottom: 1px solid #274453; }
.footer-hours .open { color: var(--gold); }
.footer-hours-note { font-size: 12px; color: #C9D6C5; text-align: center; margin: 14px 0 0; }
.copyright { text-align: center; font-size: 11px; color: #AFC2AC; margin: 56px 0 0; }

/* ---- PC追従サイドレール ---- */
.side-rail { position: fixed; right: 0; top: 50%; transform: translateY(-50%); z-index: 55; display: flex; flex-direction: column; gap: 8px; }
.side-rail a { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px; width: 68px; padding: 14px 4px; color: #fff; font-size: 11px; font-weight: 700; line-height: 1.3; text-align: center; border-radius: 8px 0 0 8px; box-shadow: -2px 2px 10px rgba(0,0,0,.12); transition: transform .2s, filter .2s; }
.side-rail a:hover { transform: translateX(-4px); filter: brightness(1.06); }
.side-rail-cta { background: var(--gold-deep); }
.side-rail-line { background: #06C755; }
.side-rail-insta { background: linear-gradient(135deg, #f9ce34 0%, #ee2a7b 45%, #6228d7 100%); }

/* ---- mobile fixed bar ---- */
.mobile-bar { display: none; }

/* ============================================================
   responsive
   ============================================================ */
@media (max-width: 1100px) {
  .header-nav { display: none; }
  .reason-grid, .menu-grid { grid-template-columns: repeat(2, 1fr); }
  /* vertical timeline */
  .flow-grid { grid-template-columns: 1fr; gap: 0; max-width: 440px; margin: 10px auto 0; }
  .flow-node { display: grid; grid-template-columns: 96px 1fr; column-gap: 20px; text-align: left; padding: 0 0 30px; }
  .flow-node::before { top: 48px; bottom: -48px; left: 48px; width: 2px; height: auto; background: repeating-linear-gradient(180deg, rgba(31,95,91,.28) 0 8px, transparent 8px 14px); }
  .flow-disc { grid-column: 1; grid-row: 1 / span 3; align-self: start; width: 96px; height: 96px; margin: 0; }
  .flow-disc img { width: 74px; height: 74px; }
  .flow-num { top: -2px; left: 64px; transform: none; }
  .flow-step { grid-column: 2; align-self: end; margin-top: 4px; }
  .flow-grid h3 { grid-column: 2; }
  .flow-grid p { grid-column: 2; align-self: start; }
}
@media (max-width: 767px) {
  html { scroll-padding-top: 72px; }
  .site-header { padding: 0 16px; height: 64px; }
  .header-logo img { height: 36px; }
  .header-cta { display: none; }
  .nav-toggle { display: flex; flex-direction: column; justify-content: center; gap: 5px; width: 44px; height: 44px; background: none; border: 0; cursor: pointer; padding: 10px; }
  .nav-toggle span { display: block; height: 2px; background: var(--teal); border-radius: 2px; transition: transform .2s, opacity .2s; }
  .nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
  .nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
  .header-nav.is-open { display: flex; flex-direction: column; gap: 0; position: fixed; top: 64px; left: 0; right: 0; background: var(--base); border-bottom: 1px solid var(--greige); padding: 8px 0; z-index: 49; }
  .header-nav.is-open a { padding: 14px 24px; border-bottom: 1px solid var(--greige); font-size: 15px; }
  .header-nav.is-open a:last-child { border-bottom: 0; }

  .hero { min-height: 480px; }
  .hero-inner { padding: 48px 20px 40px; }
  .hero-lead { font-size: 14px; }
  .hero-cta { flex-direction: column; align-items: stretch; gap: 14px; }
  .hero-cta .btn { width: 100%; }
  .hero-cta .link-underline { align-self: center; }
  .hero-scrim { background: linear-gradient(175deg, rgba(250,248,245,.92) 0%, rgba(250,248,245,.72) 42%, rgba(250,248,245,.42) 78%, rgba(250,248,245,.28) 100%); }

  .trust-bar { padding: 16px 16px; }
  .trust-bar ul { flex-wrap: wrap; row-gap: 14px; }
  .trust-bar li { flex: 0 0 50%; font-size: 12.5px; gap: 9px; padding: 6px 8px; }
  .trust-bar li + li::before { display: none; }
  .trust-bar li:nth-child(odd)::after { content: ""; position: absolute; right: 0; top: 50%; transform: translateY(-50%); width: 1px; height: 34px; background: linear-gradient(180deg, transparent, rgba(255,255,255,.24), transparent); }
  .trust-bar img { width: 38px; height: 38px; }
  .trust-bar li strong { font-size: 1.22em; }

  .child-banner { min-height: 330px; }
  .child-banner::after { background: linear-gradient(90deg, rgba(229,222,212,.98) 0%, rgba(229,222,212,.9) 55%, rgba(229,222,212,.5) 100%); }
  .child-banner-text { padding: 28px 20px; }
  .child-banner-badge { font-size: 11px; margin-bottom: 14px; }
  .child-banner-lead { font-size: 13.5px; margin-bottom: 20px; }
  .child-banner-btn { font-size: 14px; padding: 12px 24px; }

  .section { padding: 64px 20px; }
  .section-title { margin-bottom: 40px; }
  .reason-grid { grid-template-columns: 1fr; gap: 28px; }
  .reason-item { display: grid; grid-template-columns: 56px 1fr; gap: 16px; text-align: left; padding: 0; }
  .reason-item img { width: 56px; height: 56px; margin: 0; grid-row: span 2; }
  .reason-item h3 { margin: 0 0 6px; font-size: 15px; }
  .reason-item p { font-size: 13px; }

  .stats { padding: 56px 20px; }
  .stats-grid { gap: 12px; }
  .stats-num { font-size: 34px; }
  .stats-unit { font-size: 18px; }
  .stats-grid dd { font-size: 11px; }
  .stats-note { font-size: 10.5px; margin-top: 32px; }

  .menu-grid { grid-template-columns: 1fr 1fr; gap: 14px; }
  .menu-card-body { padding: 14px; }
  .menu-card-body h3 { font-size: 13.5px; }
  .menu-card-body p { font-size: 11.5px; margin-bottom: 12px; }

  .doctor-grid { grid-template-columns: 1fr; gap: 32px; }
  .doctor-photo { max-width: 260px; margin: 0 auto; }
  .price-table > div { padding: 16px 18px; }
  .flow-grid { max-width: 400px; }
  .access-grid { grid-template-columns: 1fr; gap: 28px; }
  .hours th, .hours td { padding: 8px 4px; font-size: 11.5px; }

  .final-cta { padding: 56px 20px; }
  .final-cta-btns { flex-direction: column; }
  .final-cta-btns .btn { width: 100%; max-width: 360px; }

  .footer-grid { grid-template-columns: 1fr; gap: 40px; }
  .site-footer { padding: 48px 20px 96px; }
  .notice { padding: 40px 20px; }
  .footer-links { flex-wrap: wrap; gap: 14px 24px; }

  .side-rail { display: none; }
  .mobile-bar { display: grid; grid-template-columns: 1fr 1.6fr; position: fixed; bottom: 0; left: 0; right: 0; z-index: 60; background: var(--base); border-top: 1px solid var(--greige); }
  .mobile-bar a { padding: 15px 0; text-align: center; font-size: 12px; color: var(--teal); font-weight: 500; border-right: 1px solid var(--greige); }
  .mobile-bar-cta { background: var(--gold-deep); color: var(--base) !important; font-weight: 700; font-size: 13px; border-right: 0 !important; }

  /* 小児ページ */
  .breadcrumb { padding: 14px 20px 0; }
  .child-hero { grid-template-columns: 1fr; gap: 24px; padding: 24px 20px 40px; }
  .child-hero-img { order: -1; }
  .reassure { grid-template-columns: 1fr; gap: 28px; padding: 40px 20px; }
  .why-grid { grid-template-columns: 1fr; gap: 24px; }
  .timeline { grid-template-columns: 1fr; gap: 16px; }
  .phase-cards { grid-template-columns: 1fr; gap: 16px; }
  .child-menu-grid { grid-template-columns: 1fr; }

  /* 下層ページ */
  .page-head { padding: 40px 20px 4px; }
  .doctor-hero { grid-template-columns: 1fr; gap: 24px; padding: 24px 20px 40px; }
  .doctor-hero-photo { max-width: 260px; margin: 0 auto; }
  .career-wrap { grid-template-columns: 1fr; gap: 36px; }
  .career-list > div { grid-template-columns: 96px 1fr; gap: 10px; }
  .case-filter { padding: 20px; }
  .case-page-grid-wrap { padding: 16px 0 40px; }
  .case-page-grid-wrap > .case-scroll-hint, .case-page-grid-wrap > .case-grid { padding-left: 20px; padding-right: 20px; }
  .price-policy { grid-template-columns: 1fr; gap: 16px; }
  .price-support-grid { grid-template-columns: 1fr; gap: 16px; }
  .price-full-table th[scope="row"] { padding: 14px; font-size: 13px; }
  .price-full-table td { padding: 14px; font-size: 13px; }
  .symptom-links { grid-template-columns: 1fr 1fr; gap: 10px; }
  .symptom-links.has-thumbs { grid-template-columns: 1fr 1fr; }
  .symptom-links a { padding: 16px 14px; font-size: 14px; }
  .md-cols { grid-template-columns: 1fr; }
  .cause-grid { grid-template-columns: 1fr; }
  .device-nav { grid-template-columns: 1fr 1fr; }
  .mini-ctas { grid-template-columns: 1fr; }
  .lead-box { padding: 22px 20px; }
}

@media (min-width: 768px) and (max-width: 1100px) {
  .child-menu-grid { grid-template-columns: 1fr 1fr; }
}

/* ---- Instagram(自動更新フィード枠) ---- */
.insta { text-align: center; }
.insta-handle { font-family: var(--serif); font-size: 16px; color: var(--gold-ink); letter-spacing: .04em; margin: 0 0 28px; }
.insta-embed { max-width: 960px; margin: 0 auto; }
.insta-placeholder { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; min-height: 320px; padding: 40px 24px; background: #fff; border: 2px dashed var(--greige-dark); border-radius: 8px; color: var(--teal); }
.insta-placeholder p { font-size: 14px; line-height: 1.8; color: var(--ink-muted); margin: 0; }
.insta-placeholder p b { color: var(--teal); font-size: 15.5px; }
.insta-cta { margin-top: 28px; }
.btn-ghost-teal { border: 1px solid var(--teal); color: var(--teal); background: #fff; padding: 14px 30px; font-size: 15px; }
.btn-ghost-teal:hover { background: var(--teal); color: #fff; }
@media (max-width: 640px) { .insta-placeholder { min-height: 220px; padding: 32px 18px; } }

/* ---- blog: カテゴリ絞り込み + タイプバッジ + 症例ブログ ---- */
.blog-filter { display: flex; justify-content: center; flex-wrap: wrap; gap: 10px; max-width: 1100px; margin: 0 auto 40px; }
.blog-chip { font-family: var(--sans); font-size: 13.5px; color: var(--ink-soft); background: #fff; border: 1px solid var(--greige-dark); padding: 8px 22px; border-radius: 22px; cursor: pointer; transition: background .2s, color .2s, border-color .2s; }
.blog-chip:hover { border-color: var(--teal); color: var(--teal); }
.blog-chip.is-active { background: var(--teal); color: #fff; border-color: var(--teal); }
.blog-card[hidden] { display: none; }
.blog-cat--column { color: #fff; background: var(--teal); }
.blog-cat--case { color: #fff; background: var(--gold-deep); }
.blog-ba { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 8px 0 28px; }
.blog-ba figure { margin: 0; }
.blog-ba figcaption { text-align: center; font-size: 12.5px; font-weight: 700; color: var(--ink-soft); margin-bottom: 8px; }
.blog-ba img { width: 100%; height: auto; border-radius: 6px; display: block; background: var(--base); }
.blog-casedata { list-style: none; margin: 0 0 32px; padding: 18px 20px; background: var(--base); border: 1px solid var(--greige); border-radius: 8px; font-size: 14px; line-height: 2; color: var(--ink-soft); }
.blog-casedata b { color: var(--teal); }
.blog-todo { color: var(--gold-dark); font-size: 12px; margin-left: 6px; }
@media (max-width: 640px) { .blog-ba { grid-template-columns: 1fr; } }

/* ---- トップの最新記事teaser(2枚を中央寄せ2カラム) ---- */
.blog-teaser-grid { grid-template-columns: repeat(3, 1fr); max-width: 1100px; }
@media (max-width: 860px) { .blog-teaser-grid { grid-template-columns: 1fr 1fr; max-width: 760px; } }
@media (max-width: 560px) { .blog-teaser-grid { grid-template-columns: 1fr; max-width: 400px; } }

/* ---- ヘッダーのドロップダウン(コラム → 医院コラム/症例ブログ) ---- */
.nav-drop { position: relative; display: inline-flex; align-items: center; align-self: stretch; }
.nav-drop > a::after { content: "▾"; font-size: 10px; margin-left: 5px; color: var(--gold); }
.nav-drop-menu { position: absolute; top: 100%; left: 50%; transform: translateX(-50%) translateY(8px); display: flex; flex-direction: column; background: #fff; border: 1px solid var(--greige); border-radius: 8px; box-shadow: 0 12px 30px rgba(31,95,91,.16); padding: 6px 0; min-width: 156px; opacity: 0; visibility: hidden; transition: opacity .18s ease, transform .18s ease, visibility .18s; z-index: 60; }
.nav-drop:hover .nav-drop-menu, .nav-drop:focus-within .nav-drop-menu { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); }
.nav-drop-menu a { padding: 11px 22px; font-size: 13.5px; font-weight: 500; white-space: nowrap; color: var(--ink-soft); }
.nav-drop-menu a:hover { background: var(--base); color: var(--teal); }

@media (max-width: 900px) {
  /* モバイル: 折りたたみメニュー内では常時インデント表示 */
  .header-nav.is-open .nav-drop { display: flex; flex-direction: column; align-items: stretch; align-self: auto; }
  .header-nav.is-open .nav-drop > a::after { display: none; }
  .header-nav.is-open .nav-drop-menu { position: static; opacity: 1; visibility: visible; transform: none; display: flex; flex-direction: column; background: var(--base); border: 0; border-radius: 0; box-shadow: none; padding: 0; min-width: 0; }
  .header-nav.is-open .nav-drop-menu a { padding-left: 44px; font-size: 14px; color: var(--ink-muted); }
}

/* ---- 駅からの道順(写真つきステップ) ---- */
.route-lead { text-align: center; font-size: 15px; line-height: 1.9; color: var(--ink-soft); max-width: 720px; margin: -30px auto 44px; }
.route-lead b { color: var(--teal); }
.route-steps { list-style: none; margin: 0 auto; padding: 0; max-width: 1100px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px 26px; }
.route-step { margin: 0; }
.route-img { position: relative; border-radius: 10px; overflow: hidden; box-shadow: 0 6px 18px rgba(31,95,91,.10); }
.route-img img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.route-num { position: absolute; top: 12px; left: 12px; width: 38px; height: 38px; border-radius: 50%; background: var(--teal); color: #fff; font-weight: 700; font-size: 17px; display: flex; align-items: center; justify-content: center; box-shadow: 0 3px 10px rgba(0,0,0,.28); }
.route-cap { font-size: 14.5px; line-height: 1.85; color: var(--ink-soft); margin: 14px 4px 0; }
.route-cap b { color: var(--teal); font-weight: 700; }
.route-note { text-align: center; font-size: 12px; color: var(--ph-text); margin: 40px 0 0; }
@media (max-width: 900px) { .route-steps { grid-template-columns: repeat(2, 1fr); gap: 26px 20px; } }
@media (max-width: 600px) { .route-steps { grid-template-columns: 1fr; max-width: 400px; } .route-lead { margin-top: -10px; } }

/* ============================================================
   AIチャット・ウィジェット(ローカル /api/chat 用)
   ============================================================ */
.dchat-launch { position: fixed; right: 20px; bottom: 20px; z-index: 1200; display: flex; align-items: center; gap: 10px;
  background: var(--teal); color: #fff; border: none; border-radius: 999px; padding: 12px 20px 12px 16px; cursor: pointer;
  box-shadow: 0 10px 28px rgba(31,95,91,.34); font-family: var(--sans); font-size: 14px; font-weight: 700; transition: transform .2s, box-shadow .2s; }
.dchat-launch:hover { transform: translateY(-2px); box-shadow: 0 14px 34px rgba(31,95,91,.42); }
.dchat-launch svg { width: 22px; height: 22px; flex: none; }
.dchat-launch .dchat-launch-dot { position: absolute; top: 6px; right: 8px; width: 9px; height: 9px; background: var(--gold); border-radius: 50%; box-shadow: 0 0 0 2px var(--teal); }
.dchat-launch.is-hidden { display: none; }

.dchat-panel { position: fixed; right: 20px; bottom: 20px; z-index: 1201; width: 370px; max-width: calc(100vw - 32px); height: 560px; max-height: calc(100vh - 40px);
  background: var(--base); border-radius: 16px; overflow: hidden; display: none; flex-direction: column;
  box-shadow: 0 24px 60px rgba(18,48,63,.28); border: 1px solid var(--greige); }
.dchat-panel.is-open { display: flex; }

.dchat-head { background: var(--teal); color: #fff; padding: 14px 16px; display: flex; align-items: center; gap: 10px; }
.dchat-head h3 { font-family: var(--serif); font-size: 15px; margin: 0; font-weight: 700; letter-spacing: .02em; }
.dchat-head .dchat-sub { font-size: 10.5px; opacity: .82; margin: 2px 0 0; }
.dchat-head .dchat-avatar { width: 34px; height: 34px; border-radius: 50%; background: rgba(255,255,255,.15); display: flex; align-items: center; justify-content: center; flex: none; }
.dchat-head .dchat-avatar svg { width: 18px; height: 18px; }
.dchat-close { margin-left: auto; background: transparent; border: none; color: #fff; font-size: 22px; line-height: 1; cursor: pointer; opacity: .85; padding: 0 2px; }
.dchat-close:hover { opacity: 1; }

.dchat-body { flex: 1; overflow-y: auto; padding: 16px 14px; background: linear-gradient(180deg, #fff 0%, var(--base) 100%); }
.dchat-note { font-size: 11px; color: var(--ink-muted); background: #fff; border: 1px solid var(--greige); border-radius: 10px; padding: 10px 12px; margin: 0 0 14px; line-height: 1.7; }
.dchat-msg { display: flex; margin-bottom: 12px; }
.dchat-msg .dchat-bubble { max-width: 82%; padding: 10px 13px; border-radius: 14px; font-size: 13.5px; line-height: 1.75; white-space: normal; word-break: break-word; }
.dchat-msg.bot { justify-content: flex-start; }
.dchat-msg.bot .dchat-bubble { background: #fff; border: 1px solid var(--greige); color: var(--ink-soft); border-top-left-radius: 4px; }
.dchat-msg.user { justify-content: flex-end; }
.dchat-msg.user .dchat-bubble { background: var(--teal); color: #fff; border-top-right-radius: 4px; }
.dchat-bubble strong { font-weight: 700; }
.dchat-bubble a { color: var(--gold-dark); text-decoration: underline; }

.dchat-typing { display: inline-flex; gap: 4px; padding: 12px 14px; }
.dchat-typing span { width: 7px; height: 7px; background: var(--greige-dark); border-radius: 50%; animation: dchatBlink 1.2s infinite both; }
.dchat-typing span:nth-child(2) { animation-delay: .2s; }
.dchat-typing span:nth-child(3) { animation-delay: .4s; }
@keyframes dchatBlink { 0%,80%,100% { opacity: .3; } 40% { opacity: 1; } }

.dchat-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 2px 0 4px; }
.dchat-chip { background: #fff; border: 1px solid var(--greige-dark); color: var(--teal); border-radius: 999px; padding: 7px 13px; font-size: 12px; font-weight: 700; cursor: pointer; transition: background .15s, color .15s; }
.dchat-chip:hover { background: var(--teal); color: #fff; }

.dchat-input { display: flex; align-items: flex-end; gap: 8px; padding: 10px 12px; border-top: 1px solid var(--greige); background: #fff; }
.dchat-input textarea { flex: 1; resize: none; border: 1px solid var(--greige-dark); border-radius: 12px; padding: 10px 12px; font-family: var(--sans); font-size: 13.5px; line-height: 1.5; max-height: 100px; color: var(--ink); }
.dchat-input textarea:focus { outline: none; border-color: var(--teal); }
.dchat-send { flex: none; width: 40px; height: 40px; border-radius: 12px; border: none; background: var(--teal); color: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.dchat-send:disabled { opacity: .45; cursor: default; }
.dchat-send svg { width: 18px; height: 18px; }

@media (max-width: 767px) {
  .dchat-launch { bottom: 74px; right: 14px; padding: 10px 16px 10px 14px; font-size: 13px; }
  .dchat-panel { right: 8px; left: 8px; bottom: 8px; width: auto; max-width: none; height: calc(100vh - 16px); }
}

/* ============================================================
   Ver3 ── 実写主導スキン
   写真が主役。木×ガラス×光。木漏れ日は"写真"で表現する。
   ※A′の装飾レイヤー(波/グレイン/ブロブ/水彩)は使わない
   ============================================================ */

/* ---- 見出し: 上に細いゴールドの罫＋ドット ---- */
.section-eyebrow { color: var(--gold-ink); letter-spacing: .18em; font-size: 12px; margin-bottom: 18px; }
.section-title { position: relative; font-weight: 600; letter-spacing: .04em; margin-bottom: 56px; }
.section-title::before {
  content: ""; display: block; width: 64px; height: 1px; margin: 0 auto 20px;
  background: var(--gold); opacity: .55;
}
.section-title::after {   /* ドットは罫線の中央に重ねる(英字見出しに被らせない) */
  content: ""; position: absolute; top: -2px; left: 50%; transform: translateX(-50%);
  width: 5px; height: 5px; border-radius: 50%; background: var(--gold);
}
/* カード内の「詳しく見る」を下端で揃える */
.menu-card { display: flex; flex-direction: column; }
.menu-card-body { flex: 1; display: flex; flex-direction: column; }
.menu-card-body a { margin-top: auto; }

/* ---- ボタン: ゴールドのピル ---- */
.btn { border-radius: 999px; letter-spacing: .03em; }
.btn-primary { background: var(--gold-deep); box-shadow: 0 8px 22px -12px rgba(138,106,62,.6); }
.btn-primary:hover { background: var(--gold-ink); }

/* ---- ヒーロー: 実写を全面に、左に文字用の明るいスクリム ---- */
.hero { min-height: 74vh; }
.hero-scrim { background: linear-gradient(100deg,
    rgba(252,250,246,.95) 0%, rgba(252,250,246,.88) 26%,
    rgba(252,250,246,.55) 46%, rgba(252,250,246,.08) 68%, rgba(252,250,246,0) 100%); }
.hero h1 { font-weight: 600; letter-spacing: .03em; line-height: 1.45; }
.hero-eyebrow { color: var(--gold-ink); letter-spacing: .2em; font-size: 12.5px; }

/* ---- トラストバー: 濃い塗り→白地＋線画アイコンを細い円で ---- */
.trust-bar { background: #fff; border-bottom: 1px solid var(--greige); padding: 26px 48px; }
.trust-bar li { color: var(--ink-soft); font-size: 14px; gap: 12px; }
.trust-bar li strong { color: var(--teal); font-size: 1.22em; }
.trust-bar li + li::before { background: var(--greige); width: 1px; height: 34px; }
.trust-bar img { width: 46px; height: 46px; padding: 9px; border-radius: 50%;
  border: 1px solid var(--greige-dark); background: var(--base); filter: none; }

/* ---- 木漏れ日を背景に敷くセクション(写真をそのまま背景に) ---- */
.komorebi-bg { position: relative; background: var(--base); }
.komorebi-bg::before {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background: url("../assets/v3/bg_komorebi.webp") center/cover no-repeat;
  opacity: .5;
}
.komorebi-bg > * { position: relative; z-index: 1; }

/* ---- 実績: 深緑の塗り→木のバンド ---- */
.stats { background: url("../assets/v3/wood_band.webp") center/cover no-repeat; padding: 76px 48px; }
.stats .stats-bg { display: none; }
.stats-num, .stats-unit { color: var(--teal); }
.stats-grid dd { color: var(--ink-soft); }
.stats-note { color: var(--ink-muted); }
.stats-grid > div + div { border-left: 1px solid rgba(46,88,71,.22); }

/* ---- カード類: 白・大きめ角丸・やわらかい影 ---- */
.menu-card, .symptom-links a, .faq-inner details, .phase-card,
.price-policy-item, .timeline li, .cal-month, .case-card {
  border-radius: 16px; border-color: var(--greige); }
.menu-card { background: #fff; box-shadow: 0 2px 18px -12px rgba(51,48,43,.22); transition: box-shadow .3s ease, transform .3s ease; }
.menu-card:hover { box-shadow: 0 18px 40px -22px rgba(46,88,71,.42); transform: translateY(-4px); }
.menu-card-body h3 { color: var(--teal); font-weight: 600; }

/* ---- 線画アイコン(reason/flow): 3D→線画に差し替え ---- */
.reason-item img { width: 144px; height: 144px; margin-bottom: 10px; }
.flow-disc { background: #fff; border: 1px solid var(--greige); box-shadow: none; width: 104px; height: 104px; }
.flow-num { background: var(--teal); }

/* ---- 写真帯(院内): 3枚並べて"見せる"だけ ---- */
.v3-photoband { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; max-width: 1536px; margin: 0 auto 96px; padding: 0 48px; }
.v3-photoband figure { margin: 0; overflow: hidden; border-radius: 14px; }
.v3-photoband img { width: 100%; height: 100%; aspect-ratio: 4/3; object-fit: cover; display: block; transition: transform .7s ease; }
.v3-photoband figure:hover img { transform: scale(1.04); }

@media (max-width: 767px) {
  .hero { min-height: 0; }
  .hero-scrim { background: linear-gradient(180deg,
      rgba(252,250,246,.55) 0%, rgba(252,250,246,.9) 52%, rgba(252,250,246,.97) 100%); }
  .trust-bar { padding: 18px 20px; }
  .trust-bar img { width: 38px; height: 38px; padding: 7px; }
  .section-title { margin-bottom: 40px; }
  .v3-photoband { grid-template-columns: 1fr; padding: 0 20px; }
  .stats { padding: 52px 20px; }
}

/* 写真は角丸に(Ver3の統一ルール) */
.doctor-photo, .child-banner-bg, .case-photos img, .symptom-hero-illust img,
.al-figure img, .blog-card img, .access-map-wrap { border-radius: 14px; }
.case-card { overflow: hidden; }

/* ============================================================
   Ver3 ── モックアップ準拠の調整
   ============================================================ */

/* ---- ヒーロー: 左=クリームのテキストパネル / 右=実写(見本Bの分割型) ---- */
.hero-split { display: grid; grid-template-columns: 42% 58%; min-height: 640px; align-items: stretch; overflow: hidden; }
.hero-split .hero-panel { position: relative; display: flex; align-items: center; background: var(--base); }
.hero-split .hero-panel::before {   /* パネル側にも壁の木漏れ日をうっすら */
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background: url("../assets/v3/bg_komorebi.webp") left center/cover no-repeat; opacity: .45; }
.hero-split .hero-inner { position: relative; z-index: 1; max-width: 560px; margin-left: auto; padding: 72px 56px 72px 48px; }
.hero-split .hero-photo { background: url("../assets/v3/hero_consult.webp") center/cover no-repeat; }
.hero-split h1 { font-size: clamp(28px, 2.9vw, 42px); }

@media (max-width: 900px) {
  .hero-split { grid-template-columns: 1fr; min-height: 0; }
  .hero-split .hero-photo { aspect-ratio: 16/10; }
  .hero-split .hero-inner { max-width: none; margin: 0; padding: 44px 20px 40px; }
}

/* ---- トラストバー: 円アイコンにゴールドのチェックバッジ(見本準拠) ---- */
.trust-ico { position: relative; display: inline-flex; flex-shrink: 0; }
.trust-ico::after {
  content: ""; position: absolute; right: -2px; bottom: -2px; width: 17px; height: 17px; border-radius: 50%;
  background: var(--gold) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>") center/10px no-repeat;
  box-shadow: 0 0 0 2px #fff; }

/* ---- 実績の木バンド: 右端に観葉植物を重ねる(見本準拠) ---- */
.stats { position: relative; overflow: hidden; }
.stats::after {
  content: ""; position: absolute; right: -10px; top: -10px; width: 320px; height: 100%;
  background: url("../assets/v3gen/foliage_corner.webp") right top/contain no-repeat;
  pointer-events: none; z-index: 0;
  opacity: .88; filter: saturate(.72) brightness(1.06); }
.stats-inner { position: relative; z-index: 1; }
@media (max-width: 900px) { .stats::after { width: 170px; opacity: .8; } }

/* ---- 小児バナー: 見本の分割型(左=テキスト / 右へ写真が抜ける) ---- */
.child-banner { background: var(--greige); }
.child-banner-title { color: var(--teal); }
.child-banner-badge { background: var(--teal); border-radius: 999px; }
.child-banner-btn { background: var(--gold-deep); border-radius: 999px; box-shadow: 0 8px 22px -12px rgba(138,106,62,.6); }

/* ---- 小児バナー: 見本の分割型に(左=クリームのテキスト面 / 右=写真がそのまま抜ける) ---- */
.child-banner { border-top: none; border-bottom: none; min-height: 400px; background: var(--base); }
.child-banner-bg { width: 58%; left: auto; right: 0; object-position: center; border-radius: 0; }
.child-banner::after {   /* 直線的なグラデ→左パネルをしっかり不透明に、写真との境目はやわらかく */
  background: linear-gradient(90deg,
    var(--base) 0%, var(--base) 38%, rgba(252,250,246,.82) 46%, rgba(252,250,246,0) 58%); }
.child-banner-text { max-width: 1536px; padding: 56px 48px; }
.child-banner-text > * { max-width: 30em; }
@media (max-width: 900px) {
  .child-banner { min-height: 0; }
  .child-banner-bg { position: relative; width: 100%; height: 240px; }
  .child-banner::after { background: linear-gradient(180deg, rgba(252,250,246,0) 0%, var(--base) 62%); }
  .child-banner-text { position: relative; inset: auto; padding: 24px 20px 36px; }
}

/* ---- 症状カード: 人物写真＋歯の線画の2枚組(見本B準拠) ---- */
.symptom-links.has-faces a { flex-direction: column; }
.symptom-figs { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 12px; }
.symptom-figs .sf-face { border-radius: 10px; overflow: hidden; background: var(--greige); }
.symptom-figs .sf-face img { width: 100%; height: 100%; aspect-ratio: 1/1; object-fit: cover; display: block; }
.symptom-figs .sf-illust { border-radius: 10px; overflow: hidden; background: var(--offwhite);
  border: 1px solid var(--greige); display: flex; align-items: center; justify-content: center; }
.symptom-figs .sf-illust img { width: 100%; height: auto; display: block; }

/* ---- 院内の写真帯: 見本Aに合わせて端まで抜くフル幅に ---- */
.v3-photoband { max-width: none; padding: 0; gap: 6px; margin-bottom: 0; }
.v3-photoband figure { border-radius: 0; }
.v3-photoband img { aspect-ratio: 16/11; }
@media (max-width: 767px) { .v3-photoband { grid-template-columns: 1fr 1fr; padding: 0; } .v3-photoband figure:nth-child(3) { display: none; } }

/* ---- 選ばれる理由: 見本の縦区切り線 ---- */
.reason-grid { gap: 0; }
.reason-item { padding: 0 28px; position: relative; }
.reason-item + .reason-item::before {
  content: ""; position: absolute; left: 0; top: 8px; bottom: 8px; width: 1px; background: var(--greige-dark); }
@media (max-width: 991px) { .reason-grid { gap: 32px 0; } }
@media (max-width: 767px) {
  .reason-item { padding: 0; }
  .reason-item + .reason-item::before { display: none; }
}

/* 症状カードは見本にあわせて3列×2段 */
.symptom-links.has-faces { grid-template-columns: repeat(3, 1fr); gap: 20px; max-width: 1180px; }
@media (max-width: 900px) { .symptom-links.has-faces { grid-template-columns: 1fr 1fr; gap: 12px; } }

/* ============================================================
   Ver3 ── 追い込み(モックアップ準拠の第2弾)
   ============================================================ */

/* ---- 1) 写真帯: 端まで抜くのをやめ、丸みのある写真に戻す ---- */
.v3-photoband { max-width: 1536px; padding: 0 48px; gap: 14px; margin: 0 auto 96px; }
.v3-photoband figure { border-radius: 18px; }
.v3-photoband img { aspect-ratio: 4/3; }
@media (max-width: 767px) {
  .v3-photoband { grid-template-columns: 1fr; padding: 0 20px; margin-bottom: 56px; }
  .v3-photoband figure:nth-child(3) { display: block; }
}

/* ---- 2) 実績の木バンド: 木漏れ日入りの木目に差し替え ---- */
.stats { background-image: url("../assets/v3/wood_band_komorebi.webp"); background-size: cover; background-position: center; }

/* ---- 3) 背景の木漏れ日をサイト全体へ(スクロールで一緒に流れる。固定追従はしない) ---- */
.komorebi-bg::before { opacity: .5; }
.section-komorebi { position: relative; }
.section-komorebi { overflow: hidden; }
.section-komorebi::before {   /* 影だけを抜いた透過オーバーレイ。左上から光が差す想定 */
  content: ""; position: absolute; top: -40px; left: -60px; width: 900px; height: 620px;
  z-index: 0; pointer-events: none;
  background: url("../assets/v3/komorebi_shadow.webp") left top/contain no-repeat;
  opacity: .55; }
.section-komorebi > * { position: relative; z-index: 1; }
/* 交互に向きを変えて単調さを避ける */
.section-komorebi.from-right::before { left: auto; right: -60px; transform: scaleX(-1); }
@media (max-width: 767px) { .section-komorebi::before { width: 520px; height: 380px; opacity: .45; } }

/* ---- 4) 症状カード: 人物写真をやめてイラストのみに戻す ---- */
.symptom-links.has-thumbs a { flex-direction: column; }
.symptom-thumb { aspect-ratio: 4/3; border-radius: 12px; border-color: var(--greige);
  background: var(--offwhite); padding: 10px; }
.symptom-thumb img { width: 100%; height: 100%; object-fit: contain; }

/* ---- ヒーロー右側をスライドショーに戻す(院長カウンセリング→小児→アライナー) ---- */
.hero-split .hero-photo { background: none; position: relative; overflow: hidden; }
.hero-split .hero-photo .hero-slides { position: absolute; inset: 0; z-index: 0; }
.hero-split .hero-photo .hero-slide { position: absolute; inset: 0;
  background-size: cover; background-position: center; }
@media (max-width: 900px) { .hero-split .hero-photo { min-height: 260px; } }

/* ============================================================
   Ver3 ── 写真帯＋木バナーを一続きに / 葉が両方にまたがる
   (ユーザー支給の新素材: wood_band_v2 / leaves_topright)
   ============================================================ */
.v3-band-group { position: relative; overflow: hidden; margin-bottom: 96px; }
.v3-band-group .v3-photoband { margin-bottom: 0; }
.v3-band-group .stats { margin-top: 14px; }

/* 木バナーを新素材に差し替え。旧の観葉植物(擬似要素)は使わない */
.stats { background-image: url("../assets/v3/wood_band_v2.webp"); }
.stats::after { display: none; }

/* 右側の枝葉 — 写真帯の途中から木バナーの中ほどまで垂れて連続性を出す */
.band-leaves {
  position: absolute; z-index: 3; pointer-events: none;
  right: -70px; top: -6%; width: 620px; height: 104%;
  background: url("../assets/v3/leaves_topright.webp") right top/contain no-repeat;
  filter: drop-shadow(0 12px 26px rgba(60,70,50,.18)); }

@media (max-width: 991px) { .band-leaves { width: 420px; right: -70px; } }
@media (max-width: 767px) {
  .v3-band-group { margin-bottom: 56px; }
  /* ★モバイルでは葉を小さく。250pxだと375px画面の67%を占め、写真帯(高さ165px)の
     3.2倍の高さで覆いかぶさり「写真と重なって見える」と指摘を受けたため。
     PCでの占有率(約27%)に近づけて約40%に落とす。 */
  .band-leaves { width: 150px; right: -34px; top: 0; height: 92%; opacity: .9; }
}

/* ============================================================
   Ver3 ── 下層ページをトップと同じ世界観に揃える
   ============================================================ */

/* ---- 最終CTA: 旧ティール時代の紺色の写真帯 → トップと同じ深緑に統一 ---- */
.al-cta { background: var(--teal); }
.al-cta .al-cta-bg { display: none; }
.al-cta::after { display: none; }
.al-cta h2 { color: var(--base); }
.al-cta p { color: #d8e4dc; }

/* ---- LPのヒーロー: スクリムをVer3の地色に合わせ、左側に木漏れ日 ---- */
.al-hero::after { background: linear-gradient(100deg,
    rgba(252,250,246,.95) 0%, rgba(252,250,246,.88) 28%,
    rgba(252,250,246,.55) 48%, rgba(252,250,246,.08) 70%, rgba(252,250,246,0) 100%); }
.al-hero::before {
  content: ""; position: absolute; top: -30px; left: -50px; width: 760px; height: 560px;
  z-index: 2; pointer-events: none;
  background: url("../assets/v3/komorebi_shadow.webp") left top/contain no-repeat;
  opacity: .5; }
.al-hero-inner { z-index: 3; }
@media (max-width: 767px) { .al-hero::before { width: 460px; height: 340px; opacity: .4; } }

/* ---- ページ見出し: 全幅の木漏れ日を敷いてトップと同じ入り口の印象に ---- */
.page-head-wrap { position: relative; overflow: hidden; }
.page-head-wrap .page-head { position: relative; z-index: 1; padding-top: 64px; padding-bottom: 16px; }

/* ---- 症状ページのイラスト枠・比較表など、丸みと余白をVer3に ---- */
.symptom-hero-illust, .ba-item figure { border-radius: 16px; border-color: var(--greige); }
.cmp-table { border-radius: 14px; }

/* ============================================================
   Ver3 ── 下層ページの"要所"に葉と木目をちょろっと
   (固定追従はしない。スクロールで一緒に流れる静的な装飾)
   ============================================================ */

/* ---- 締めのCTA: 片隅に葉をひとつ(全ページ共通の"出口"の合図) ---- */
.final-cta, .al-cta { position: relative; overflow: hidden; }
.final-cta > *, .al-cta > * { position: relative; z-index: 1; }
.final-cta::before, .al-cta::before {
  content: ""; position: absolute; z-index: 0; pointer-events: none;
  right: -70px; top: -80px; width: 400px; height: 360px;
  background: url("../assets/v3/leaves_topright.webp") right top/contain no-repeat;
  opacity: .42; }

/* ---- ページ見出し: 反対側の隅に小さく葉("入口"の合図) ---- */
.page-head-wrap::after {
  content: ""; position: absolute; z-index: 0; pointer-events: none;
  left: -60px; bottom: -40px; width: 260px; height: 230px;
  background: url("../assets/v3/leaves_topright.webp") left bottom/contain no-repeat;
  transform: scaleX(-1) rotate(8deg); opacity: .34; }

/* ---- 小児ページの安心帯: 深緑のベタ → 木目のバナーに ---- */
.reassure { position: relative; overflow: hidden;
  background: url("../assets/v3/wood_band_v2.webp") center/cover no-repeat; }
.reassure-item { color: var(--ink-soft); position: relative; z-index: 1; }
/* 木に押した焼印の表現: 深緑の線→焦げ茶に転換し、乗算で木目に沈ませる */
.reassure-item img {
  width: 184px; height: 184px; margin-bottom: 6px;   /* 48px → 約4倍 */
  mix-blend-mode: multiply;
  filter: sepia(1) saturate(2.6) hue-rotate(-20deg) brightness(.44) contrast(1.35)
          drop-shadow(0 1.5px 0 rgba(255,252,244,.55));
  opacity: .92; }
.reassure-item h2 { color: var(--teal); }
.reassure-item p { color: var(--ink-soft); }
.reassure::after {
  content: ""; position: absolute; z-index: 0; pointer-events: none;
  right: -50px; top: -40px; width: 300px; height: 280px;
  background: url("../assets/v3/leaves_topright.webp") right top/contain no-repeat;
  opacity: .5; }

/* ---- 実績バンド単体(院長ページ): トップと同じく葉を添える ---- */
.stats::before {
  content: ""; position: absolute; z-index: 0; pointer-events: none;
  right: -60px; top: -50px; width: 380px; height: 340px;
  background: url("../assets/v3/leaves_topright.webp") right top/contain no-repeat;
  opacity: .5; }
.v3-band-group .stats::before { display: none; }  /* トップは .band-leaves が担当 */

@media (max-width: 767px) {
  .final-cta::before, .al-cta::before { width: 230px; height: 210px; right: -50px; top: -50px; }
  .page-head-wrap::after { width: 150px; height: 135px; left: -45px; }
  .stats::before, .reassure::after { width: 190px; height: 175px; right: -40px; }
}

@media (max-width: 767px) { .reassure-item img { width: 132px; height: 132px; } }

/* 選ばれる理由のアイコン(トップ・理念ページ共通)。狭い画面は段階的に縮める */
@media (max-width: 1199px) { .reason-item img { width: 116px; height: 116px; } }
@media (max-width: 767px) {
  /* モバイルは「アイコン左・文章右」の横並び。列幅ごと広げないとアイコンが大きくならない */
  .reason-item { grid-template-columns: 76px 1fr; gap: 18px; }
  .reason-item img { width: 76px; height: 76px; }
}

/* ---- 治療の流れ: アイコンが小さいので円ごと拡大(番号バッジ・連結線も連動) ---- */
.flow-disc { width: 152px; height: 152px; }
.flow-disc img { width: 134px; height: 134px; }      /* 96px → 134px。生成アイコンは余白込みなので大きめに */
.flow-node::before { top: calc(14px + 76px); }        /* 連結線を円の中心へ (152/2=76) */
.flow-num { transform: translateX(48px); min-width: 34px; height: 34px; font-size: 15px; }

@media (max-width: 991px) {
  .flow-disc { width: 124px; height: 124px; }
  .flow-disc img { width: 108px; height: 108px; }
  .flow-node::before { top: calc(14px + 62px); }
  .flow-num { transform: translateX(38px); }
}
@media (max-width: 767px) {
  /* モバイルは「円が左・文章が右」の横並び。列幅ごと広げる */
  .flow-node { grid-template-columns: 118px 1fr; column-gap: 18px; }
  .flow-node::before { top: 60px; left: 59px; }
  .flow-disc { width: 118px; height: 118px; }
  .flow-disc img { width: 102px; height: 102px; }
  .flow-num { top: -2px; left: 82px; transform: none; }
}

/* ---- ロゴ差し替え(Ver3): 比率が変わったので高さ基準で表示する ---- */
.footer-grid img { width: auto; height: 46px; display: block; }
@media (max-width: 767px) { .footer-grid img { height: 38px; } }

/* ---- 院内の写真帯: ゆっくり自動で横に流れるマーキー ---- */
.v3-photoband { display: block; max-width: none; padding: 0; margin: 0; overflow: hidden; }
.pb-track { display: flex; width: max-content; animation: pbScroll 60s linear infinite;
  --pb-speed: 45; }   /* ★流れる速さ(px/秒)。ここだけ変えれば全幅で同じ体感になる。
                          main.js が「1セット分の距離 ÷ この値」で秒数を計算する。
                          旧実装は幅に関わらず60秒固定で、375px幅では20px/秒＝
                          写真1枚が自分の幅を移動するのに11秒かかり非常に遅かった。 */
/* ★will-change:transform は付けない。2340px幅の合成レイヤーになり、iOS Safariで
   レイヤーが白く抜ける(帯だけ空白になる)症状の原因になりうる。
   transformアニメーションはブラウザが自動で合成するのでヒントは不要。 */
/* セット間の余白は margin-right で持たせる。gap にすると -50% で継ぎ目がずれる */
.pb-set { display: flex; gap: 14px; margin-right: 14px; flex: 0 0 auto; }
/* ★flex:0 0 auto は必須。main.jsがトラック幅をpxで明示するため、万一その実測が
   ずれるとセットが縮んで写真が潰れ、継ぎ目が重なって見える。縮ませない。 */
.v3-photoband figure { flex: 0 0 clamp(240px, 27vw, 460px); margin: 0; border-radius: 18px; overflow: hidden; }
.v3-photoband img { width: 100%; height: auto; aspect-ratio: 4/3; object-fit: cover; display: block; }
/* ★移動量は px 指定(--pb-shift)を優先。`translateX(-50%)`は%をトラックの intrinsic 幅
   (width:max-content)に対して解決する必要があり、iOS Safariでレイヤーが白く抜ける
   一因になりうる。--pb-shift は main.js が1セット分の実寸から計算して入れる。
   JSが動かなければ 50% にフォールバックして従来どおり動く。 */
@keyframes pbScroll { from { transform: translateX(0); }
                       to { transform: translateX(calc(-1 * var(--pb-shift, 50%))); } }
.v3-photoband:hover .pb-track { animation-play-state: paused; }   /* 見たいときは止まる */
@media (prefers-reduced-motion: reduce) { .pb-track { animation: none; } }
@media (max-width: 767px) { .v3-photoband figure { flex-basis: 220px; } }

/* ============================================================
   Ver3: スクロールで一度だけふわっと現れる(reveal)
   ★A′で不評だった「サイドの葉がずっと追従する」装飾とは別物。
     画面に入った時に一度だけ動き、演出後はJSがクラスを外して素の状態に戻す
     (transitionが残るとホバーの速度が鈍る/`:active`と競合するため)。
   ★.reveal-on は main.js が付ける。JSが動かなければ何も隠れない(フェイルセーフ)
   ============================================================ */
.reveal-on .reveal { opacity: 0; transform: translateY(20px);
  transition: opacity .7s cubic-bezier(.22,.61,.36,1), transform .7s cubic-bezier(.22,.61,.36,1); }
.reveal-on .reveal.is-in { opacity: 1; transform: none; }
/* 横に並ぶカードは少しずつ遅らせて出す(1枚ずつ現れる) */
.reveal-on .reveal:nth-child(2) { transition-delay: .07s; }
.reveal-on .reveal:nth-child(3) { transition-delay: .14s; }
.reveal-on .reveal:nth-child(4) { transition-delay: .21s; }
.reveal-on .reveal:nth-child(5) { transition-delay: .28s; }
.reveal-on .reveal:nth-child(6) { transition-delay: .35s; }
@media (prefers-reduced-motion: reduce) { .reveal-on .reveal { opacity: 1 !important; transform: none !important; } }

/* ============================================================
   タップ時のフィードバック(タッチ端末にはホバーが無いため)
   ★transform ではなく独立プロパティの scale を使う。
     reveal の transform や既存の :hover transform と合成されるので競合しない
   ============================================================ */
a.btn, a.mini-cta, a.blog-card, .symptom-links a, .menu-card a, .case-photos img,
.side-rail a, .mobile-bar a, .reason-more a, .cmp-cta a {
  transition: scale .12s ease, box-shadow .2s ease, background-color .2s ease, color .2s ease;
  -webkit-tap-highlight-color: rgba(176,141,87,.14);   /* 既定の青いフラッシュ→ゴールドの淡い色に */
}
a.btn:active, a.mini-cta:active, a.blog-card:active, .symptom-links a:active,
.menu-card a:active, .case-photos img:active, .side-rail a:active, .mobile-bar a:active,
.reason-more a:active, .cmp-cta a:active { scale: .97; }
@media (prefers-reduced-motion: reduce) {
  a.btn:active, a.mini-cta:active, a.blog-card:active, .symptom-links a:active,
  .menu-card a:active, .case-photos img:active, .side-rail a:active, .mobile-bar a:active,
  .reason-more a:active, .cmp-cta a:active { scale: 1; }
}

/* ============================================================
   /counseling/ 初診相談ページ
   ============================================================ */
.cns-steps { list-style: none; margin: 0 auto; padding: 0; max-width: 760px; }
.cns-step { display: grid; grid-template-columns: 92px 1fr; gap: 20px;
  padding: 22px 0; border-bottom: 1px solid var(--greige); }
.cns-step:last-child { border-bottom: 0; }
.cns-step-num { font-family: var(--serif); font-size: 15px; letter-spacing: .08em;
  color: var(--gold); padding-top: 3px; }
.cns-step h3 { margin: 0 0 6px; font-size: 17px; color: var(--teal); }
.cns-step p { margin: 0; line-height: 1.85; }
.cns-note { margin-top: 8px !important; font-size: 13px; color: var(--gold); }

.cns-cost { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px;
  max-width: 960px; margin: 0 auto; }
.cns-cost-item { background: #fff; border-radius: 16px; padding: 26px 22px;
  box-shadow: 0 2px 18px -12px rgba(51,48,43,.22); text-align: center; }
.cns-cost-item dt { font-size: 14px; color: var(--ink-soft); margin-bottom: 10px; }
.cns-cost-item dd { margin: 0 0 10px; font-family: var(--serif); font-size: 26px; color: var(--teal); }
.cns-cost-item dd span { font-size: 13px; font-family: var(--sans); }
.cns-cost-item p { margin: 0; font-size: 13.5px; line-height: 1.8; }
.cns-cost-item a { display: inline-block; margin-top: 6px; color: var(--gold); font-weight: 700; }

@media (max-width: 767px) {
  .cns-step { grid-template-columns: 68px 1fr; gap: 12px; padding: 18px 0; }
  .cns-cost { grid-template-columns: 1fr; gap: 12px; }
  .cns-cost-item { padding: 20px 18px; }
}

/* ============================================================
   初診相談への導線(2026-07-25 競合分析より)
   ★3院とも初診相談を最優先CTAにしている。千里丘は治療の流れSTEP1の
     12pxリンク1本(9.6画面下)しか導線が無かったので、上部に2本足した。
   ============================================================ */
/* A: ヒーロー下の補助リンク */
.hero-sub-link { margin: 18px 0 0; font-size: 14px; }
.hero-sub-link a { color: var(--teal); border-bottom: 1px solid rgba(46,88,71,.28); padding-bottom: 2px; }
.hero-sub-link a:hover { border-bottom-color: var(--gold); color: var(--gold); }

/* B: 選ばれる理由の直後の相談バナー */
.cns-banner-wrap { padding-top: 0; }
.cns-banner { max-width: 980px; margin: 0 auto; background: #fff; border-radius: 20px;
  padding: 48px 40px; text-align: center; box-shadow: 0 10px 40px -26px rgba(51,48,43,.42); }
.cns-banner .section-title { margin-bottom: 12px; }
.cns-banner-lead { max-width: 620px; margin: 0 auto 28px; line-height: 1.9; }
.cns-banner-facts { list-style: none; display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 16px; margin: 0 0 30px; padding: 0; }
.cns-banner-facts li { display: flex; flex-direction: column; gap: 4px;
  padding: 0 10px; border-left: 1px solid var(--greige); }
.cns-banner-facts li:first-child { border-left: 0; }
.cns-banner-facts b { font-family: var(--serif); font-size: 20px; color: var(--teal); line-height: 1.4; }
.cns-banner-facts span { font-size: 12.5px; color: var(--ink-soft); }
.cns-banner-btns { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }

@media (max-width: 767px) {
  .cns-banner { padding: 34px 20px; border-radius: 16px; }
  .cns-banner-facts { grid-template-columns: 1fr; gap: 14px; }
  .cns-banner-facts li { border-left: 0; border-top: 1px solid var(--greige); padding: 12px 0 0; }
  .cns-banner-facts li:first-child { border-top: 0; padding-top: 0; }
  .cns-banner-facts b { font-size: 18px; }
  .cns-banner-btns { flex-direction: column; }
}

/* ============================================================
   ポジショニング「仕上がりが見えてから、始める矯正。」対応
   (2026-07-27。FVの注記／選ばれる理由を6項目=3列2段に)
   ============================================================ */

.hero-note { font-size: 12px; line-height: 1.7; color: var(--ink-muted); margin: 16px 0 0; max-width: 520px; }

/* 選ばれる理由を6項目に。philosophy/は4項目のままなので専用クラスで切り替える */
.reason-grid--six { grid-template-columns: repeat(3, 1fr); }
.reason-note { display: block; margin-top: 8px; font-size: 12px; color: var(--ink-muted); }

@media (max-width: 991px) {
  .reason-grid--six { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 767px) {
  .reason-grid--six { grid-template-columns: 1fr; }
  .reason-note { font-size: 11.5px; }
}
.reason-link { display: block; margin-top: 10px; font-size: 13px; color: var(--teal); border-bottom: 1px solid rgba(46,88,71,.28); padding-bottom: 2px; width: fit-content; margin-inline: auto; }
.reason-link:hover { color: var(--gold); border-bottom-color: var(--gold); }
@media (max-width: 767px) { .reason-link { margin-inline: 0; font-size: 12.5px; } }

/* ---- S1b デジタルでゴールを共有する(2026-07-27) ---- */
.dg-lead { max-width: 680px; margin: 0 auto 40px; text-align: center; font-size: 15.5px; line-height: 2; color: var(--ink-soft); }
.dg-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.dg-card { margin: 0; background: #fff; border-radius: 16px; overflow: hidden; box-shadow: 0 6px 24px rgba(51,48,43,.06); }
.dg-card img { display: block; width: 100%; height: auto; aspect-ratio: 16/9; object-fit: cover; }
.dg-card figcaption { padding: 16px 18px 20px; }
.dg-card figcaption > b { display: block; font-family: var(--serif); font-size: 15.5px; color: var(--teal); margin-bottom: 6px; }
.dg-card figcaption span b { font-weight: 700; color: var(--ink); }
.dg-card figcaption span { display: block; font-size: 13px; line-height: 1.75; color: var(--ink-muted); }
.dg-note { max-width: 860px; margin: 26px auto 0; font-size: 12px; line-height: 1.8; color: var(--ink-muted); text-align: center; }

@media (max-width: 991px) {
  .dg-grid { grid-template-columns: repeat(2, 1fr); gap: 18px; }
}
@media (max-width: 767px) {
  .dg-lead { font-size: 14px; text-align: left; margin-bottom: 28px; }
  .dg-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .dg-card figcaption { padding: 16px 18px 20px; }
  .dg-note { text-align: left; font-size: 12px; }
}
/* 見出しの途中で1文字だけ折り返すのを防ぐ(意味のかたまり単位で改行させる) */
.nowrap-unit { display: inline-block; }

/* ---- グローバルナビ整理(2026-07-27。10項目→7項目・ドロップダウン3つ) ---- */
/* 項目が「症/例」のように途中で折り返すのを防ぐ。PC 1280で1行に収まることを実測済み */
.header-nav > a, .header-nav .nav-drop > a { white-space: nowrap; }
@media (max-width: 1180px) {
  .site-header { padding: 0 28px; gap: 16px; }
  .header-nav { gap: 20px; font-size: 14px; }
}
@media (max-width: 767px) {
  .header-nav > a, .header-nav .nav-drop > a { white-space: normal; }
}
/* モバイル: 項目が増えて開いたナビが画面より高くなるため、内部スクロールを許可する
   (position:fixed なのでページスクロールでは下部に到達できない) */
@media (max-width: 991px) {
  .header-nav.is-open { max-height: calc(100vh - 64px); max-height: calc(100dvh - 64px); overflow-y: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
  .header-nav.is-open a { padding-top: 12px; padding-bottom: 12px; }
  .header-nav.is-open .nav-drop-menu a { padding-top: 10px; padding-bottom: 10px; }
}

/* ---- /digital/ の写真つきステップ(2026-07-27。トップの要約に対する詳細版) ---- */
.dg-steps { list-style: none; margin: 0 auto; padding: 0; max-width: 980px; display: grid; gap: 40px; }
.dg-step { display: grid; grid-template-columns: 400px 1fr; gap: 30px; align-items: center; }
.dg-step:nth-child(even) { grid-template-columns: 1fr 400px; }
.dg-step:nth-child(even) figure { order: 2; }
.dg-step figure { margin: 0; border-radius: 14px; overflow: hidden; box-shadow: 0 6px 24px rgba(51,48,43,.08); }
.dg-step figure img { display: block; width: 100%; height: auto; aspect-ratio: 16/9; object-fit: cover; }
.dg-step h3 { margin: 6px 0 10px; font-size: 19px; color: var(--teal); }
.dg-step p { margin: 0; font-size: 14.5px; line-height: 1.95; color: var(--ink-soft); }
.dg-step .cns-step-num { display: inline-block; font-family: var(--serif); font-size: 14px; letter-spacing: .08em; color: var(--gold-dark); }

@media (max-width: 900px) {
  .dg-step, .dg-step:nth-child(even) { grid-template-columns: 1fr; gap: 16px; }
  .dg-step:nth-child(even) figure { order: 0; }
  .dg-steps { gap: 36px; }
  .dg-step h3 { font-size: 17px; }
  .dg-step p { font-size: 14px; }
}

/* ===== polish 2026-07-27: アクセシビリティ(skip-link / focus-visible) ===== */
.skip-link { position: absolute; left: -9999px; top: 0; z-index: 100; background: var(--teal); color: #fff; padding: 10px 18px; border-radius: 0 0 8px 0; font-size: 14px; font-weight: 700; }
.skip-link:focus { left: 0; }
a:focus-visible, button:focus-visible, [tabindex]:focus-visible, summary:focus-visible { outline: 2px solid var(--teal); outline-offset: 2px; }
.footer-grid a:focus-visible, .final-cta a:focus-visible, .copyright a:focus-visible { outline-color: #fff; }
[hidden] { display: none !important; } /* hidden属性をauthor CSSのdisplay指定より優先 */
/* 深緑地の最終CTAでは金色の発光影ではなく中立の影に */
.final-cta .btn-primary { box-shadow: 0 10px 24px -14px rgba(0,0,0,.5); }

/* ===== 専門医院の強調(2026-07-27) ===== */
/* header-tagline はロゴ刷新(タグライン内蔵)に伴い削除(2026-07-28) */
.footer-specialty { font-size: 12.5px; letter-spacing: .12em; color: #DCC69E; }
.specialty-lead { text-align: center; font-size: 15px; line-height: 2; color: var(--ink-soft); max-width: 680px; margin: 0 auto 40px; }
.specialty-grid { max-width: 1100px; margin: 0 auto; display: grid; grid-template-columns: repeat(3, 1fr); }
.specialty-item { padding: 8px 32px; border-left: 1px solid var(--greige-dark); }
.specialty-item:first-child { border-left: 0; }
.specialty-item h3 { font-family: var(--serif); font-size: 18px; color: var(--teal); margin: 0 0 10px; }
.specialty-item p { font-size: 13.5px; line-height: 1.9; color: var(--ink-soft); margin: 0; }
.specialty-note { text-align: center; font-size: 12px; color: var(--ink-muted); margin: 28px 0 0; }
.specialty-link { text-align: center; margin: 12px 0 0; font-size: 14px; }
@media (max-width: 900px) {
  .specialty-grid { grid-template-columns: 1fr; gap: 24px; }
  .specialty-item { border-left: 0; padding: 24px 0 0; border-top: 1px solid var(--greige-dark); }
  .specialty-item:first-child { border-top: 0; padding-top: 0; }
}

/* ===== FVキャッチコピー2段構成+専門バッジ強化+地域セクション(2026-07-28) ===== */
.footer-area { font-size: 12px; letter-spacing: .06em; color: #C9D6C5; }
.area-lead { max-width: 820px; margin: 0 auto 28px; font-size: 14.5px; line-height: 2; color: var(--ink-soft); }
.area-points { max-width: 820px; margin: 0 auto; padding-left: 1.2em; font-size: 13.5px; line-height: 1.9; color: var(--ink-soft); }
.area-points li { margin-bottom: 8px; }
.area-points b { color: var(--teal); }
.area-link { text-align: center; margin: 24px 0 0; font-size: 14px; }

/* ===== 写真上の情緒コピー(不定形+文字。2026-07-28) ===== */
.hero-photo-copy { position: absolute; z-index: 2; left: 3%; bottom: 4%; width: min(440px, 70%); aspect-ratio: 3/2; display: flex; align-items: center; justify-content: center; text-align: center; pointer-events: none; }
.hero-photo-copy img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; opacity: .72; }
/* 手書き画像に置き換え(2026-07-28)。不定形の中央に収める */
/* 葉は不定形の y68%-82% にあるので、文字はそれより上で終わるように少し持ち上げる */
.hero-photo-copy .hpc-img { position: relative; width: 74%; height: auto; transform: translateY(-7%); }
/* モバイルは不定形が細くなるので、はみ出さないよう少し小さく */
@media (max-width: 991px) { .hero-photo-copy .hpc-img { width: 66%; } }
.hero-photo-copy.no-blob { background: rgba(252,250,246,.85); border-radius: 60% 40% 55% 45% / 55% 45% 60% 40%; aspect-ratio: auto; padding: 34px 40px; width: auto; max-width: 78%; }
@media (max-width: 991px) { .hero-photo-copy { width: min(330px, 72%); bottom: 5%; } }
/* ★スマホは写真が横長の帯になり中央に顔が来るので、左下の隅へ寄せる(体や服との重なりは可) */
@media (max-width: 900px) {
  .hero-photo-copy { left: -4%; bottom: -1%; width: min(300px, 64%); }
  .hero-photo-copy .hpc-img { width: 70%; }
}

/* 画像版の専門医院バッジ(2026-07-28) */
.hero-badge-img { margin: 0 0 24px; position: relative; z-index: 3; }
/* 手書き文字+手書き枠。枠だけ後から描くので2枚重ね(同じ切り出しなのでピタリ重なる)。
   枠が切れない・写真にまたがらない配置。左端は本文と揃える */
/* ★aspect-ratioを明示。画像の読み込み前でも枠の高さが確定するので、
   SVGの枠が一瞬小さくなって文字を囲めない現象を防ぐ */
.badge-stack { position: relative; display: block; width: min(500px, 112%); margin-left: -3.5%; aspect-ratio: 925 / 253; }
.badge-stack img { display: block; width: 100%; height: auto; }
.badge-stack .badge-frame { position: absolute; left: 0; top: 0; width: 100%; height: 100%; }
/* ★描画スタイルは .badge-stack 配下に限定しない(オープニングの複製は別の場所に置かれるため) */
.badge-frame { display: block; }
.badge-frame path { fill: none; stroke: #CD9C46; stroke-width: 8; stroke-linecap: round; stroke-linejoin: round; }
@media (max-width: 991px) { .badge-stack { width: min(420px, 100%); margin-left: 0; } }
.badge-stack .badge-text { width: 100%; height: 100%; object-fit: contain; }

/* ===== 信頼バー: 手書き文字画像+円なし大アイコン(2026-07-28) ===== */
.trust-bar .trust-ico img { width: 56px; height: 56px; padding: 0; border-radius: 0; border: 0; background: none; box-shadow: none; filter: none; }
.trust-bar img.trust-txt { width: auto; height: 26px; padding: 0; border-radius: 0; border: 0; background: none; filter: none; }
.trust-bar li { gap: 10px; padding: 4px 10px; }
@media (max-width: 992px) {
  .trust-bar .trust-ico img { width: 50px; height: 50px; }
  .trust-bar img.trust-txt { height: 24px; }
}
@media (max-width: 767px) {
  .trust-bar .trust-ico img { width: 38px; height: 38px; }
  .trust-bar img.trust-txt { height: 17px; }
  .trust-bar li { gap: 8px; padding: 6px 4px; }
}

/* FVのh1を手書き文字画像に(2026-07-28。テキストはalt。コピー変更時はCodexへ同トーンで再発注) */
.hero-inner h1 { display: flex; flex-direction: column; gap: 6px; }
.hero-inner h1 img { width: auto; max-width: 100%; height: auto; display: block; }
.hero-h1-write img:first-child { width: min(440px, 100%); }
.hero-h1-write img:last-child { width: min(409px, 93%); }

/* ===== FVオープニングの描画演出(2026-07-28) =====
   ★複製(.intro-stage の中)にだけ効かせる。.intro-stageはJSしか作らないので、
     JSが動かなければ何も隠れない。対象は順番ではなく**クラス名**で指定している。 */
.intro-stage .badge-text, .intro-stage .h1-l1, .intro-stage .h1-l2 {
  -webkit-mask-image: linear-gradient(to right, #000 0%, #000 42%, rgba(0,0,0,.35) 52%, transparent 62%, transparent 100%);
          mask-image: linear-gradient(to right, #000 0%, #000 42%, rgba(0,0,0,.35) 52%, transparent 62%, transparent 100%);
  -webkit-mask-size: 240% 100%;  mask-size: 240% 100%;
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
  -webkit-mask-position: 100% 0;  mask-position: 100% 0;
  /* 書き出しがゆっくり動き出すカーブ(筆を置いてから走らせる感じ) */
  animation: writeIn 1.3s cubic-bezier(.45,.05,.35,1) forwards;
}
/* ★1行目(バッジの文字)は特にゆっくり。より緩やかな立ち上がりのカーブを個別に当てる */
.intro-stage .badge-text {
  animation-delay: .5s; animation-duration: 2s;
  animation-timing-function: cubic-bezier(.55,.02,.42,1);
}
.intro-stage .h1-l1 { animation-delay: 2s; }      /* → 3.30秒 */
.intro-stage .h1-l2 { animation-delay: 2.85s; }   /* → 4.15秒で文字が書き終わる */
@keyframes writeIn {
  from { -webkit-mask-position: 100% 0; mask-position: 100% 0; }
  to   { -webkit-mask-position: 0 0;    mask-position: 0 0; }
}
/* ★枠は文字が書き終わってから(4.2秒)、線に沿って一定速度で一周描かれる。
   pathLength="1" にしてあるので dasharray/offset は 1 = 全長。 */
.intro-stage .badge-frame path {
  /* ★「1」だけだと"線1・空白1"の繰り返しになり、offset:1 のとき長さ0の線ができて
     丸いペン先が【点】として残る。空白を2にして offset を 1.02 から始めれば、
     描き始める前は本当に何も描かれない。 */
  stroke-dasharray: 1 2; stroke-dashoffset: 1.02;
  animation: drawFrame 1.15s cubic-bezier(.4,.06,.35,1) 4.2s forwards;
}
@keyframes drawFrame { from { stroke-dashoffset: 1.02; } to { stroke-dashoffset: 0; } }
/* 10/30 PCも書き始める前に左端がうっすら見えていたので、少し外側(115%)から始める */
.intro-stage .badge-text, .intro-stage .h1-l1, .intro-stage .h1-l2 { -webkit-mask-position: 115% 0; mask-position: 115% 0; animation-name: writeInM; }
@keyframes writeIn {
  from { -webkit-mask-position: 100% 0; mask-position: 100% 0; }
  to   { -webkit-mask-position: 0 0;    mask-position: 0 0; }
}

/* ===== FVオープニング演出(2026-07-28) =====
   ★要素はすべてJSが生成する。JSが動かなければ何も起きない = 通常表示。 */
.intro-veil { position: fixed; inset: 0; background: var(--base); z-index: 9998; }
.intro-stage { position: fixed; z-index: 9999; transform-origin: 50% 50%; }
.intro-stage img { position: absolute; display: block; margin: 0; }
.intro-hide { opacity: 0 !important; }

/* ===== ヘッダー刷新(2026-07-29) =====
   ①ロゴ上に小さなタグライン(地域+開院時期) ②下端を有機的な波に ③予約ボタンにカレンダーアイコン */
.header-brand { display: flex; flex-direction: column; align-items: flex-start; gap: 5px; flex-shrink: 0; }
.brand-tag { font-size: 10.5px; letter-spacing: .04em; color: var(--ink-muted); line-height: 1; white-space: nowrap;
  display: flex; align-items: center; gap: 7px; }
.brand-tag i { font-style: normal; color: var(--greige-dark); }

/* 下端の波: ヘッダーの地色をそのまま延ばし、縁に細い金の線を重ねる(2026-07-29) */
.site-header { border-bottom: 0; }
.site-header::after {
  content: ""; position: absolute; left: 0; right: 0; top: 100%; height: 36px; pointer-events: none;
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 36' preserveAspectRatio='none'><path d='M0 0h1440v20C1300 20 1240 6 1080 10 920 14 880 32 720 30 560 28 520 12 360 14 200 16 140 28 0 26Z' fill='rgba(250,248,245,.95)'/><path d='M0 26C140 28 200 16 360 14 520 12 560 28 720 30 880 32 920 14 1080 10 1240 6 1300 20 1440 20' fill='none' stroke='rgba(176,141,87,.45)' stroke-width='1.4'/></svg>") center top/100% 36px no-repeat;
}
/* 予約ボタンのアイコン */
.btn-ico { width: 16px; height: 16px; flex-shrink: 0; fill: none; stroke: currentColor;
  stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.header-cta .btn-primary { display: inline-flex; align-items: center; gap: 8px; }

/* タグライン+アイコンぶん横幅が増えたので、1400px以下は余白と項目間隔を詰める */
@media (max-width: 1400px) { .site-header { padding: 0 32px; gap: 18px; } .header-nav { gap: 22px; } }
@media (max-width: 1180px) { .brand-tag { font-size: 10px; letter-spacing: 0; } }
@media (max-width: 991px)  { .brand-tag { display: none; } .header-brand { gap: 0; } }
@media (max-width: 767px)  { .site-header::after { height: 20px; background-size: 100% 20px; } }
/* 波はヘッダーの下36pxに垂れるので、直後に来るパンくずが隠れないよう余白を足す */
.breadcrumb { padding-top: 46px; }
@media (max-width: 767px) { .breadcrumb { padding-top: 28px; } }

/* ============================================================
   Ver3 ── 立体レイアウト(2026-07-29・トップページのみ)
   参考サイト(やいづ原崎)の「上下に空間を使う」文法を
   当院の世界観(クリーム・深緑・金・手書き)に翻訳したもの。
   ①波の境界(ヘッダー波と同じ金の細線入り) ②境界をまたぐ重なり
   ③ゴースト英字 ④カードの段違い+大きな番号
   ★すべて .home(トップの<body class="home">)スコープ。
     style.cssは全32ページ共通なので、このスコープを外さないこと。
   ============================================================ */

/* ---- ゴースト英字(装飾・aria-hidden) ---- */
/* ★基底は全ページ共通(下層の見出し .ghost-head でも使う)。
   .ghost を持つ要素は自分で置いた場所にしか存在しないのでスコープ不要 */
.ghost {
  position: absolute; z-index: -1; pointer-events: none; user-select: none;
  font-family: var(--serif); font-style: italic; font-weight: 700;
  line-height: 1; white-space: nowrap;
}

/* ---- シミュレーション帯: 波の上下境界+カード段違い ---- */
/* 波のSVGは「下側が塗り・上側が透明」。::beforeはそのまま上へ垂らし、
   ::afterはscaleY(-1)で反転して下へ垂らす(同じ画像を使い回す) */
.home #simulation { position: relative; z-index: 2; }
.home #simulation::before, .home #simulation::after {
  content: ""; position: absolute; left: 0; right: 0; height: 64px; pointer-events: none;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 90' preserveAspectRatio='none'><path d='M0 58C120 40 260 74 430 60C600 46 660 18 830 28C1000 38 1090 72 1250 62C1350 56 1400 44 1440 50V90H0Z' fill='%23F3EFE8'/><path d='M0 58C120 40 260 74 430 60C600 46 660 18 830 28C1000 38 1090 72 1250 62C1350 56 1400 44 1440 50' fill='none' stroke='rgba(176,141,87,.5)' stroke-width='2'/></svg>") center/100% 100% no-repeat;
}
.home #simulation::before { bottom: 100%; }
.home #simulation::after { top: 100%; transform: scaleY(-1) scaleX(-1); }
.home #simulation .ghost { top: 30px; right: 3%; font-size: clamp(64px, 9vw, 132px); color: rgba(46,88,71,.07); }
/* カードを1枚おきに沈ませて段違いに(参考サイトのMenuカードの文法) */
.home .dg-grid { align-items: start; }
.home .dg-grid .dg-card:nth-child(even) { margin-top: 40px; }

/* ---- 相談バナー: 白いカードを写真帯の上に重ねる(境界またぎ) ---- */
.home .cns-banner-wrap { position: relative; z-index: 4; padding-bottom: 0; margin-bottom: -72px; }
.home .cns-banner { box-shadow: 0 34px 64px -32px rgba(51,48,43,.5); }

/* ---- 写真帯: 白抜きの筆記体ロゴを重ねる(参考サイトの Smile in the making) ---- */
.home .v3-photoband { position: relative; }
.home .v3-photoband .ghost-band {
  z-index: 2; left: 4%; bottom: 9%;
  font-size: clamp(38px, 5.5vw, 84px); color: rgba(252,250,246,.88);
  text-shadow: 0 4px 26px rgba(20,30,24,.35);
}

/* ---- 専門医院の深緑バンド(参考サイトの青帯に相当する、ページの主役の帯) ---- */
.home .specialty-band {
  position: relative; z-index: 2; max-width: none;
  background: linear-gradient(180deg, #2E5847 0%, #22412F 100%);
  margin: 110px 0 120px; padding: 104px 48px 116px;
}
.home .specialty-band::before, .home .specialty-band::after {
  content: ""; position: absolute; left: 0; right: 0; height: 76px; pointer-events: none;
  background-position: center; background-size: 100% 100%; background-repeat: no-repeat;
}
.home .specialty-band::before {
  bottom: 100%;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 90' preserveAspectRatio='none'><path d='M0 58C120 40 260 74 430 60C600 46 660 18 830 28C1000 38 1090 72 1250 62C1350 56 1400 44 1440 50V90H0Z' fill='%232E5847'/><path d='M0 58C120 40 260 74 430 60C600 46 660 18 830 28C1000 38 1090 72 1250 62C1350 56 1400 44 1440 50' fill='none' stroke='rgba(176,141,87,.55)' stroke-width='2'/></svg>");
}
.home .specialty-band::after {
  top: 100%; transform: scaleY(-1) scaleX(-1);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 90' preserveAspectRatio='none'><path d='M0 58C120 40 260 74 430 60C600 46 660 18 830 28C1000 38 1090 72 1250 62C1350 56 1400 44 1440 50V90H0Z' fill='%2322412F'/><path d='M0 58C120 40 260 74 430 60C600 46 660 18 830 28C1000 38 1090 72 1250 62C1350 56 1400 44 1440 50' fill='none' stroke='rgba(176,141,87,.55)' stroke-width='2'/></svg>");
}
.home .specialty-band > * { max-width: 1160px; margin-left: auto; margin-right: auto; }
.home .specialty-band .section-eyebrow { color: #DCC69E; }
.home .specialty-band .section-title { color: var(--base); }
.home .specialty-band .specialty-lead { color: #D8E3D9; }
.home .specialty-band .specialty-note { color: #C2D2C4; }
.home .specialty-band .specialty-link .link-underline { color: var(--base); border-bottom-color: rgba(252,250,246,.45); }
.home .specialty-band .specialty-link .link-underline:hover { color: #DCC69E; border-bottom-color: #DCC69E; }
.home .specialty-band .ghost-vert {
  writing-mode: vertical-rl; font-style: normal; right: 14px; top: 50%;
  transform: translateY(-50%); margin: 0;
  font-size: clamp(56px, 7vw, 104px); letter-spacing: .08em;
  color: rgba(252,250,246,.06); max-height: 92%; overflow: hidden;
}

/* 白カード3枚を段違いに並べ、大きな番号を写真の角に重ねる */
.home .specialty-grid { grid-template-columns: repeat(3, 1fr); gap: 44px 40px; align-items: start; margin-top: 16px; }
.home .specialty-item {
  position: relative; background: #fff; border: 0; border-radius: 18px;
  padding: 0 0 26px; box-shadow: 0 26px 54px -26px rgba(8, 22, 15, .6);
}
.home .specialty-item figure { margin: 0 0 20px; border-radius: 18px 18px 0 0; overflow: hidden; }
.home .specialty-item figure img { display: block; width: 100%; aspect-ratio: 4/3; object-fit: cover; }
.home .specialty-item h3 { padding: 0 26px; margin: 0 0 10px; }
.home .specialty-item p { padding: 0 26px; margin: 0; }
.home .sp-num {
  position: absolute; z-index: 2; top: -40px; pointer-events: none;
  font-family: var(--serif); font-style: italic; font-weight: 700;
  font-size: 84px; line-height: 1; color: rgba(252,250,246,.92);
  text-shadow: 0 6px 22px rgba(0,0,0,.3);
}
.home .specialty-item:nth-child(odd) .sp-num { left: -14px; }
.home .specialty-item:nth-child(even) .sp-num { right: -8px; }
@media (min-width: 901px) {
  .home .specialty-item:nth-child(2) { margin-top: 64px; }
  .home .specialty-item:nth-child(3) { margin-top: 128px; }
}

/* ★最終CTAの波は全ページ共通ルール(このファイル末尾「立体レイアウトの全ページ波及」)が
   担当する。以前ここにあった .home .wave-rise(HTMLにdivを置く方式)は、
   波のくぼみで前セクションの地色と body の地色の継ぎ目が出るため廃止した。 */

/* ---- モバイル調整 ---- */
@media (max-width: 900px) {
  .home .specialty-grid { grid-template-columns: 1fr; gap: 56px; max-width: 440px; }
  .home .specialty-band { padding: 72px 20px 84px; margin: 70px 0 80px; }
  .home .specialty-band .ghost-vert { display: none; }
  .home .sp-num { font-size: 60px; top: -28px; }
}
@media (max-width: 767px) {
  .home #simulation::before, .home #simulation::after,
  .home .specialty-band::before, .home .specialty-band::after { height: 36px; }
  .home #simulation .ghost { font-size: 54px; top: 18px; }
  .home .dg-grid .dg-card:nth-child(even) { margin-top: 18px; }
  .home .cns-banner-wrap { margin-bottom: -46px; }
  .home .v3-photoband .ghost-band { font-size: 34px; }
}

/* ============================================================
   立体レイアウトの全ページ波及(2026-07-29)
   ★上の .home ブロックはトップ専用。ここは全32ページに効く。
   ★波は「セクション自身の背景」として"内側"に描く。擬似要素で外へ
     はみ出す方式にしないのは、section-beige と section-komorebi
     (overflow:hidden)が同居するページが32箇所あり、はみ出した波が
     切れてしまうため。内側描画なら絶対に切れない。
   ★塗る色は「隣の地色」。隣接セレクタ(+)で自動的に切り替えるので、
     ページごとの出し分けは不要。
   ★波の形はヘッダーの波と同じ語彙(地色の波+金の細い縁取り)。
   ============================================================ */
:root {
  /* cap-top    = 塗りが"上"側 → セクションの上端に置き、上の色が垂れてくる表現
     cap-bottom = 塗りが"下"側 → セクションの下端に置き、下の色がせり上がる表現
     パスは3つとも同一。fill と閉じ方だけが違う。 */
  --wv-cream-top: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 90' preserveAspectRatio='none'><path d='M0 58C120 40 260 74 430 60C600 46 660 18 830 28C1000 38 1090 72 1250 62C1350 56 1400 44 1440 50L1440 0L0 0Z' fill='%23FCFAF6'/><path d='M0 58C120 40 260 74 430 60C600 46 660 18 830 28C1000 38 1090 72 1250 62C1350 56 1400 44 1440 50' fill='none' stroke='rgba(176,141,87,.42)' stroke-width='2'/></svg>");
  --wv-cream-bottom: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 90' preserveAspectRatio='none'><path d='M0 32C120 50 260 16 430 30C600 44 660 72 830 62C1000 52 1090 18 1250 28C1350 34 1400 46 1440 40L1440 90L0 90Z' fill='%23FCFAF6'/><path d='M0 32C120 50 260 16 430 30C600 44 660 72 830 62C1000 52 1090 18 1250 28C1350 34 1400 46 1440 40' fill='none' stroke='rgba(176,141,87,.42)' stroke-width='2'/></svg>");
  --wv-greige-top: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 90' preserveAspectRatio='none'><path d='M0 58C120 40 260 74 430 60C600 46 660 18 830 28C1000 38 1090 72 1250 62C1350 56 1400 44 1440 50L1440 0L0 0Z' fill='%23F3EFE8'/><path d='M0 58C120 40 260 74 430 60C600 46 660 18 830 28C1000 38 1090 72 1250 62C1350 56 1400 44 1440 50' fill='none' stroke='rgba(176,141,87,.5)' stroke-width='2'/></svg>");
}

/* ---- ①下層ページ: グレージュ帯の上下を波にする(直線の色替わりを消す) ---- */
/* トップ(.home)は上の専用ブロックで作り込み済みなので対象外 */
body:not(.home) .section-beige {
  background-image: var(--wv-cream-top), var(--wv-cream-bottom);
  background-repeat: no-repeat, no-repeat;
  background-position: top center, bottom center;
  background-size: 100% 58px, 100% 58px;
  /* 波のぶん上下の余白を足す。「上下に空間を使う」印象はこの余白が担う */
  padding-top: 132px; padding-bottom: 132px;
}
/* ★下の波を消すケース = 真下がクリームではないとき。
   これを入れないと、深緑CTAやグレージュの注記の上に
   クリームの波が挟まって"帯が浮いた"ように見える。 */
body:not(.home) .section-beige:has(+ .section-beige),
body:not(.home) .section-beige:has(+ .final-cta),
body:not(.home) .section-beige:has(+ .al-cta),
body:not(.home) .section-beige:has(+ .notice) {
  background-image: var(--wv-cream-top), none;
}
/* ★上の波を消すケース = 真上もグレージュのとき(:has 非対応環境の保険も兼ねる) */
body:not(.home) .section-beige + .section-beige {
  background-image: none, var(--wv-cream-bottom);
}
body:not(.home) .section-beige + .section-beige:has(+ .section-beige),
body:not(.home) .section-beige + .section-beige:has(+ .final-cta),
body:not(.home) .section-beige + .section-beige:has(+ .al-cta),
body:not(.home) .section-beige + .section-beige:has(+ .notice) {
  background-image: none, none;
}

/* ---- ②全ページ: 最終CTAの深緑が波で立ち上がる ---- */
/* 直前が何色でも合うよう、隣接セレクタで塗り色を切り替える(既定=クリーム) */
.final-cta, .al-cta {
  background-image: var(--wv-cream-top);
  background-repeat: no-repeat;
  background-position: top center;
  background-size: 100% 58px;
  padding-top: 136px;
}
.section-beige + .final-cta, .section-beige + .al-cta,
.notice + .final-cta, .notice + .al-cta {
  background-image: var(--wv-greige-top);
}
/* 葉の装飾は波より前面に出る(境界をまたぐのは意図どおり)が、
   波の金の縁まで潰さないよう、CTAの葉だけ少し内側から始める */
.final-cta::before, .al-cta::before { top: -40px; }

@media (max-width: 767px) {
  body:not(.home) .section-beige {
    background-size: 100% 34px, 100% 34px;
    padding-top: 86px; padding-bottom: 86px;
  }
  .final-cta, .al-cta { background-size: 100% 34px; padding-top: 84px; }
}

/* ---- ③下層ページ: 見出しの背後に大きなゴースト英字 ---- */
/* トップの #simulation / 深緑帯と同じ語彙。page-head-wrap は
   position:relative + overflow:hidden なので、はみ出しは自動で切れる。
   ★右端で"切れる"のは意図どおり(参考サイトの大きな英字と同じ扱い)。
   ★英字キッカーと同じ語なので、重ねると誤植のように見える。
     見出しの上に余白を足して、ゴーストはその余白の中に置くこと。 */
.page-head-wrap .page-head { padding-top: 112px; }
.ghost-head {
  z-index: 0;                      /* 基底の -1 だと木漏れ日の下に潜るので 0 に */
  right: -3%; top: 14px;
  font-size: clamp(56px, 9.2vw, 150px);
  color: rgba(46, 88, 71, .065);
}
@media (max-width: 767px) {
  .page-head-wrap .page-head { padding-top: 76px; }
  /* ★42px の根拠: 最長の「Why Choose Us」が 375px 幅に収まる上限(実測 52px=406px幅で
     左右とも見切れ、語の断片に見えた)。右端だけで切れるのが正しい姿。
     文言の長いページを足すときはここを実測し直すこと */
  .ghost-head { font-size: 42px; right: -2%; top: 8px; }
}

/* ============================================================
   FVオープニング: 転換の演出(2026-07-29・フラッシュアウト)
   枠が描き終わった後、カメラのフラッシュのように画面が白く飛び、
   その白の裏でコピーが定位置に「カット」で切り替わり、
   フラッシュの減衰とともに完成したFVが現れる。
   ※前案(グリント+笑顔の弧+幕が円形に開く)はユーザー却下で撤去済み
   ★要素はすべて main.js が生成。JSが動かなければ何も起きない(不変)
   ============================================================ */
.intro-flash {
  position: fixed; inset: 0; z-index: 10000; pointer-events: none; opacity: 0;
  /* 純白だと世界観から浮くので、ごくわずかに暖色(クリーム寄りの白) */
  background: radial-gradient(circle at 50% 44%,
    #FFFEFA 0%, #FFFAEE 55%, #FAF2DF 100%);
}
/* 露出オーバー風: 白が約0.95秒かけてゆっくり満ちて(〜33%)、保持(〜43%)、
   **明るいまま粘ってから(〜55%で92%)、ゆっくり晴れていく**長い減衰。
   「保持」の間(0.96〜1.25s)に main.js が裏でカットを行う。
   ★立ち上がりの遅さ=「文字がゆっくり光に溶ける」/減衰の遅さ=「期待を引き出す」
     (どちらも2026-07-29ユーザー指示。最初は立ち上がり100ms・減衰0.6sで作り、2度「早すぎる」と却下された)
     短くする指示が来たら duration → 55%の粘り → 立ち上がり(33%) の順で詰める */
.intro-flash.is-fire { animation: introFlash 2.9s cubic-bezier(.25,.1,.25,1) forwards; }
@keyframes introFlash {
  0% { opacity: 0; animation-timing-function: cubic-bezier(.55,.06,.55,.5); }
  33% { opacity: 1; }
  43% { opacity: 1; animation-timing-function: cubic-bezier(.4,0,.7,.4); }
  55% { opacity: .92; animation-timing-function: cubic-bezier(.35,0,.25,1); }
  100% { opacity: 0; }
}
/* 白が満ちるのと同時に、コピー自体もふわっと透明になって光に溶ける */
.intro-stage.is-dissolve { opacity: 0; transition: opacity .9s cubic-bezier(.4,.1,.7,.6); }

/* ============================================================
   ボタン: 手書きの一筆で囲う(2026-07-29)
   ★FVバッジ(手書き文字+金の手書き枠)と同じ「手で描いた線」を
     ボタンにも展開する。当院のいちばん強い署名を全ページへ。
   ★手書きの枠は border-radius の8値指定で作る。SVGの枠画像だと
     幅が可変のボタンで線が伸び縮みして太さが崩れるため、
     どんな幅でも線幅が均一なこの方式を採った。
   ★--hand-a と --hand-b は振れの向きが逆。主/二次で使い分けて
     「同じ判子を押した」ように見えるのを避けている。
   ============================================================ */
:root {
  --hand-a: 255px 14px 225px 16px / 16px 225px 14px 255px;
  --hand-b: 14px 255px 16px 225px / 225px 16px 255px 14px;
}

/* ---- 全ボタン共通: ピル(999px)をやめて手書きの枠へ ---- */
.btn { border-radius: var(--hand-a); }

/* ---- 主ボタン(予約): 金の塗りは維持。形だけ手書きに ---- */
/* ★コンバージョンの主導線なので塗り・色・影は変えない(視認性を落とさない) */
.btn-primary { border-radius: var(--hand-a); }

/* ---- 二次ボタン: 金の手書き線＋明朝。ここが「署名」の主役 ---- */
.btn-ghost-teal, .btn-ghost {
  border-radius: var(--hand-b);
  border-width: 2px; border-style: solid;
  font-family: var(--serif); font-weight: 700; letter-spacing: .06em;
  transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}
/* クリーム/グレージュ地: 白ベタをやめ、枠そのものを主役にする */
.btn-ghost-teal { background: transparent; border-color: var(--gold); color: var(--teal); }
.btn-ghost-teal:hover { background: rgba(176,141,87,.10); border-color: var(--gold-ink); color: var(--teal-dark); }
/* 深緑地(最終CTA): 反転塗りだと手書きの線が消えるので、淡く沈ませる */
.btn-ghost { border-color: #DCC69E; color: var(--base); }
.btn-ghost:hover { background: rgba(252,250,246,.12); border-color: #fff; color: #fff; }

/* ---- 小さい枠ボタン(ヘッダーのLINE等): 形だけ手書きに ---- */
/* ★明朝にはしない。13.5pxでは字面が細く、ヘッダーの横幅も食うため */
.btn-line { border-radius: var(--hand-b); }

/* ---- 小児バナーのボタンも同じ筆致に ---- */
.child-banner-btn { border-radius: var(--hand-b); }

/* ---- サイトマップページ(2026-08-29) ---- */
.sitemap-wrap { display: grid; grid-template-columns: repeat(2, 1fr); gap: 32px 48px; max-width: 900px; }
.sitemap-group h2 { font-family: var(--serif); font-size: 17px; color: var(--teal); margin: 0 0 14px; padding-bottom: 8px; border-bottom: 1px solid var(--greige); }
.sitemap-group ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.sitemap-group a { font-size: 14.5px; color: var(--ink-soft); border-bottom: 1px solid transparent; }
.sitemap-group a:hover { color: var(--teal); border-bottom-color: rgba(46,88,71,.28); }
@media (max-width: 767px) { .sitemap-wrap { grid-template-columns: 1fr; gap: 28px; } }

/* ---- Instagram リード(フィード埋め込み保留中の代替・2026-08-29) ---- */
.insta-lead { display: flex; flex-direction: column; align-items: center; gap: 14px; padding: 40px 24px; color: var(--teal); text-align: center; }
.insta-lead p { font-size: 15px; line-height: 2; color: var(--ink-soft); margin: 0; max-width: 620px; }
.insta-lead p b { color: var(--teal); }
.insta-handle a { color: inherit; border-bottom: 1px solid rgba(46,88,71,.28); }
.insta-handle a:hover { color: var(--gold); border-bottom-color: var(--gold); }

/* ---- よくある不安カード(2026-08-30) ---- */
.worry-grid { max-width: 1100px; margin: 0 auto; display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.worry-card { position: relative; display: flex; flex-direction: column; gap: 10px; background: #fff; border: 1px solid var(--greige); border-radius: 8px; padding: 28px 24px 24px; transition: box-shadow .2s, transform .2s; }
.worry-card:hover { box-shadow: 0 10px 28px rgba(31,95,91,.12); transform: translateY(-2px); }
.worry-en { font-family: var(--serif); font-style: italic; font-size: 13px; letter-spacing: .08em; color: var(--gold); }
.worry-card h3 { font-family: var(--serif); font-size: 18px; color: var(--teal); margin: 0; line-height: 1.5; }
.worry-card p { font-size: 13.5px; line-height: 1.9; color: var(--ink-soft); margin: 0; flex: 1; }
.worry-more { font-size: 13px; color: var(--teal); border-bottom: 1px solid rgba(46,88,71,.28); padding-bottom: 2px; width: fit-content; }
.worry-card:hover .worry-more { color: var(--gold); border-bottom-color: var(--gold); }
@media (max-width: 1100px) { .worry-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .worry-grid { grid-template-columns: 1fr; gap: 14px; } .worry-card { padding: 22px 20px 20px; } }

/* ---- 診療時間バッジ(2026-08-30・FV写真右上) ---- */
.hours-badge { position: absolute; z-index: 2; top: 4%; right: 3.5%; width: clamp(120px, 14vw, 190px); aspect-ratio: 1; pointer-events: none; transform: rotate(3deg); filter: drop-shadow(0 4px 14px rgba(18,48,63,.14)); }
.hb-blob { position: absolute; inset: 0; width: 100%; height: 100%; }
.hb-body { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; color: var(--base); text-align: center; }
.hb-txt { width: 72%; height: auto; }
.hb-top { font-size: clamp(10px, 1.1vw, 14px); font-weight: 700; letter-spacing: .06em; border-bottom: 1px solid rgba(255,255,255,.55); padding-bottom: 3px; }
.hb-main { position: relative; display: flex; align-items: baseline; gap: 1px; font-family: var(--serif); }
.hb-yoru { font-size: clamp(12px, 1.3vw, 17px); }
.hb-num { font-size: clamp(34px, 4.2vw, 58px); line-height: 1; font-weight: 700; color: #fff; margin: 0 1px; }
.hb-ji { font-size: clamp(12px, 1.3vw, 17px); }
.hb-moon { position: absolute; top: 17%; right: 13%; width: clamp(12px,1.5vw,20px); height: auto; }
@media (max-width: 900px) { .hours-badge { width: 118px; top: 8px; right: 8px; } .hb-top { font-size: 10px; } .hb-num { font-size: 34px; } .hb-yoru,.hb-ji { font-size: 11px; } .hb-moon { font-size: 13px; } }

/* =========================================================
   /recruit/ 歯科衛生士募集 (2026-10-14〜)
   ========================================================= */
.rc-hero { padding: 28px 48px 72px; }
.rc-hero-inner { max-width: 1200px; margin: 0 auto; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 56px; align-items: center; }
.rc-eyebrow { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin: 0 0 18px; font-size: 13.5px; font-weight: 700; color: var(--ink-soft); }
.rc-open { background: var(--teal); color: var(--base); padding: 4px 12px; border-radius: 2px; letter-spacing: .06em; font-size: 12.5px; }
.rc-title { font-family: var(--serif); font-size: clamp(27px, 3.3vw, 42px); line-height: 1.5; color: var(--teal); margin: 0; letter-spacing: .02em; }
.rc-sub { font-family: var(--serif); font-size: clamp(17px, 1.7vw, 21px); color: var(--gold-ink); font-weight: 700; margin: 10px 0 26px; }
.rc-conds { list-style: none; margin: 0 0 28px; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.rc-conds li { background: #fff; border: 1px solid var(--greige-dark); border-radius: 6px; padding: 14px 16px 13px; display: flex; flex-direction: column; gap: 2px; }
.rc-cond-k { font-size: 12px; color: var(--ink-muted); letter-spacing: .08em; }
.rc-cond-v { font-family: var(--serif); font-size: clamp(19px, 1.9vw, 24px); color: var(--teal); line-height: 1.35; }
.rc-cond-v small { font-size: .62em; margin-left: 2px; }
.rc-cond-s { font-size: 12.5px; color: var(--ink-soft); }
.rc-hero-cta { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 24px; }
.rc-hero-sublink { color: var(--teal); font-weight: 700; font-size: 14.5px; border-bottom: 1px solid var(--teal); padding-bottom: 2px; }
.rc-hero-note { font-size: 13px; color: var(--ink-muted); margin: 14px 0 0; }
.rc-hero-photo { margin: 0; }
.rc-hero-photo img { display: block; width: 100%; aspect-ratio: 16 / 10; object-fit: cover; border-radius: 6px; }
.rc-hero-photo figcaption { font-size: 12px; color: var(--ink-muted); margin-top: 8px; line-height: 1.6; }
@media (max-width: 992px) {
  .rc-hero { padding: 16px 20px 48px; }
  .rc-hero-inner { grid-template-columns: 1fr; gap: 28px; max-width: 680px; }
}
@media (max-width: 640px) {
  .rc-hero { padding-top: 4px; }
  .rc-eyebrow { margin-bottom: 12px; font-size: 12.5px; gap: 6px 10px; }
  .rc-title { font-size: 25px; }
  .rc-sub { margin: 6px 0 16px; font-size: 16px; }
  .rc-conds { gap: 8px; margin-bottom: 18px; }
  .rc-conds li { padding: 10px 12px; }
  .rc-cond-v { font-size: 18px; }
  .rc-hero-cta .btn-lg { width: 100%; padding: 15px 20px; }
  .rc-hero-sublink { display: none; }
  .rc-hero-note { margin-top: 10px; text-align: center; }
  .rc-mobile-bar { grid-template-columns: 1fr 1.6fr; }
}
/* 採用ページでは患者向けAIチャットを出さない(応募者の質問に患者向けの答えを返さないため) */
body:has(.rc-hero) .dchat-launch, body:has(.rc-hero) .dchat-panel { display: none !important; }

/* ---- 768〜1100px: PCメニューが隠れる幅で「≡」が出ず、メニューが消えていた不具合の修正(2026-10-14) ---- */
@media (min-width: 768px) and (max-width: 1100px) {
  .nav-toggle { display: flex; flex-direction: column; justify-content: center; gap: 5px; width: 44px; height: 44px; background: none; border: 0; cursor: pointer; padding: 10px; flex-shrink: 0; }
  .nav-toggle span { display: block; height: 2px; background: var(--teal); border-radius: 2px; transition: transform .2s, opacity .2s; }
  .nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
  .nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
  .header-cta { margin-left: auto; }
  .header-nav.is-open { display: flex; flex-direction: column; gap: 0; position: fixed; top: 84px; left: 0; right: 0; max-height: calc(100vh - 84px); overflow-y: auto; background: var(--base); border-bottom: 1px solid var(--greige); padding: 8px 0; z-index: 49; }
  .header-nav.is-open a { padding: 14px 32px; border-bottom: 1px solid var(--greige); font-size: 15px; }
  .header-nav.is-open a:last-child { border-bottom: 0; }
  .header-nav.is-open .nav-drop { display: flex; flex-direction: column; align-items: stretch; align-self: auto; }
  .header-nav.is-open .nav-drop > a::after { display: none; }
  .header-nav.is-open .nav-drop-menu { position: static; opacity: 1; visibility: visible; transform: none; display: flex; flex-direction: column; background: var(--base); border: 0; border-radius: 0; box-shadow: none; padding: 0; min-width: 0; }
  .header-nav.is-open .nav-drop-menu a { padding-left: 52px; font-size: 14px; color: var(--ink-muted); }
}

/* ---- /recruit/ 2番目以降のセクション(2026-10-14) ---- */
.rc-sec { padding-top: 88px; padding-bottom: 88px; }
.rc-sec .section-title { margin-bottom: 40px; }
.rc-lead { text-align: center; font-size: 15px; color: var(--ink-soft); margin: -16px auto 36px; max-width: 720px; }
.rc-note { font-size: 13px; color: var(--ink-muted); margin: 14px 0 0; line-height: 1.8; }
.rc-photo { margin: 0; }
.rc-photo img { display: block; width: 100%; aspect-ratio: 16 / 10; object-fit: cover; border-radius: 6px; }
.rc-photo figcaption { font-size: 12px; color: var(--ink-muted); margin-top: 6px; }
.rc-photo-wide { max-width: 960px; margin: 40px auto 0; }

/* 院長 */
.rc-msg { max-width: 1000px; margin: 0 auto; display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 48px; align-items: start; }
.rc-msg-photo { margin: 0; }
.rc-msg-photo img { display: block; width: 100%; border-radius: 6px; }
.rc-msg-body.prose { max-width: none; margin: 0; }
.rc-sign { text-align: right; font-family: var(--serif); color: var(--teal) !important; font-weight: 700; }
.rc-career { margin-top: 24px; border-top: 1px solid var(--greige-dark); padding-top: 14px; }
.rc-career summary { cursor: pointer; font-weight: 700; color: var(--teal); font-size: 14.5px; }
.rc-career ul { margin: 12px 0 0; padding-left: 1.2em; font-size: 14px; color: var(--ink-soft); line-height: 1.9; }

/* 3つの柱 */
.rc-pillars { max-width: 1200px; margin: 0 auto; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.rc-pillar { background: #fff; border-radius: 8px; padding: 30px 26px; border: 1px solid var(--greige-dark); }
.rc-pillar-tag { margin: 0 0 10px; font-size: 13px; font-weight: 700; color: var(--gold-ink); letter-spacing: .08em; }
.rc-pillar-tag span { font-family: var(--serif); font-size: 22px; color: var(--gold); margin-right: 10px; }
.rc-pillar h3 { font-family: var(--serif); color: var(--teal); font-size: 19px; line-height: 1.55; margin: 0 0 16px; }
.rc-pillar ul, .rc-list, .rc-fit-col ul, .rc-table ul { margin: 0; padding-left: 1.2em; }
.rc-pillar li, .rc-list li, .rc-fit-col li { font-size: 14.5px; line-height: 1.85; color: var(--ink-soft); margin-bottom: 8px; }
.rc-pillar b, .rc-list b, .rc-fit-col b { color: var(--teal); }

/* 一緒に働く人 */
.rc-team { max-width: 900px; margin: 0 auto; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.rc-team-card { background: var(--greige); border-radius: 8px; padding: 24px 26px; }
.rc-team-card h3 { margin: 0 0 8px; font-family: var(--serif); color: var(--teal); font-size: 18px; }
.rc-team-card p { margin: 0; font-size: 14.5px; color: var(--ink-soft); line-height: 1.85; }
.rc-voice { max-width: 900px; margin: 28px auto 0; background: #fff; border: 1px solid var(--greige-dark); border-radius: 8px; padding: 26px; }
.rc-voice-label { font-weight: 700; color: var(--gold-ink); margin: 0 0 10px; font-size: 14px; }

/* 人柄 */
.rc-values p { font-size: 16px; text-align: center; }
.rc-values b { color: var(--teal); }

/* 仕事内容・1日の流れ */
.rc-split { max-width: 1100px; margin: 0 auto; display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 48px; align-items: start; }
.rc-photos-stack { display: grid; gap: 20px; }
.rc-day { list-style: none; margin: 0; padding: 0; border-left: 2px solid var(--greige-dark); }
.rc-day li { position: relative; display: grid; grid-template-columns: 116px minmax(0, 1fr); gap: 12px; padding: 0 0 22px 24px; }
.rc-day li::before { content: ""; position: absolute; left: -7px; top: 8px; width: 12px; height: 12px; border-radius: 50%; background: var(--base); border: 2px solid var(--gold); }
.rc-day time { font-family: var(--serif); font-weight: 700; color: var(--teal); font-size: 16px; }
.rc-day span { font-size: 14.5px; color: var(--ink-soft); line-height: 1.8; }

/* 覚える順番 */
.rc-steps { list-style: none; margin: 0 auto; padding: 0; max-width: 1100px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; counter-reset: rcstep; }
.rc-steps li { position: relative; background: #fff; border-radius: 8px; border: 1px solid var(--greige-dark); padding: 22px 20px 20px; counter-increment: rcstep; }
.rc-steps li::before { content: "STEP " counter(rcstep); display: block; font-size: 11.5px; letter-spacing: .12em; font-weight: 700; color: var(--gold-ink); margin-bottom: 6px; }
.rc-step-when { font-family: var(--serif); font-weight: 700; color: var(--teal); font-size: 18px; margin: 0 0 8px; }
.rc-steps li p:last-child { margin: 0; font-size: 14px; line-height: 1.85; color: var(--ink-soft); }

/* 募集要項・明示事項 */
.rc-table-wrap { max-width: 960px; margin: 0 auto; }
.rc-table { width: 100%; border-collapse: collapse; background: #fff; border-radius: 8px; overflow: hidden; }
.rc-table th, .rc-table td { border-bottom: 1px solid var(--greige); padding: 18px 22px; text-align: left; vertical-align: top; font-size: 14.5px; line-height: 1.85; }
.rc-table th { width: 170px; background: var(--offwhite); color: var(--teal); font-weight: 700; white-space: nowrap; }
.rc-table td { color: var(--ink-soft); }
.rc-table td b { color: var(--teal); }
.rc-table ul { margin-top: 8px; }
.rc-table li { margin-bottom: 4px; }
.rc-table--small th, .rc-table--small td { font-size: 13.5px; padding: 12px 18px; }
.rc-legal { padding-top: 64px; padding-bottom: 96px; }
.rc-legal-title { font-size: 16px; color: var(--teal); text-align: center; margin: 0 0 20px; }

/* 正直にお伝えしたいこと: 他と同じ重さで見せる(隠さない) */
.rc-honest { list-style: none; margin: 0 auto; padding: 0; max-width: 1000px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; counter-reset: rchonest; }
.rc-honest li { counter-increment: rchonest; background: #fff; border: 1px solid var(--greige-dark); border-left: 4px solid var(--gold); border-radius: 6px; padding: 22px 24px; }
.rc-honest h3 { margin: 0 0 8px; font-size: 16.5px; color: var(--teal); line-height: 1.6; }
.rc-honest h3::before { content: counter(rchonest) ". "; color: var(--gold-ink); }
.rc-honest p { margin: 0; font-size: 14.5px; line-height: 1.9; color: var(--ink-soft); }

/* こんな方 */
.rc-fit { max-width: 1000px; margin: 0 auto; display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 24px; }
.rc-fit-col { background: #fff; border-radius: 8px; padding: 28px; border: 1px solid var(--greige-dark); }
.rc-fit-col h3 { margin: 0 0 14px; font-family: var(--serif); color: var(--teal); font-size: 18px; }
.rc-fit-col--no { background: var(--offwhite); }

/* 選考の流れ */
.rc-flow { list-style: none; margin: 0 auto; padding: 0; max-width: 960px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.rc-flow li { background: var(--greige); border-radius: 8px; padding: 26px 22px; text-align: center; }
.rc-flow-num { display: inline-grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--teal); color: var(--base); font-weight: 700; font-family: var(--serif); }
.rc-flow h3 { margin: 12px 0 6px; font-family: var(--serif); color: var(--teal); font-size: 18px; }
.rc-flow p { margin: 0; font-size: 14px; color: var(--ink-soft); line-height: 1.8; }
.rc-flow-notes { max-width: 960px; margin: 20px auto 0; }
.rc-flow-notes p { margin: 0 0 4px; font-size: 13.5px; color: var(--ink-muted); }

/* 応募フォーム */
.rc-form { max-width: 640px; margin: 0 auto; background: #fff; border-radius: 10px; padding: 36px 36px 32px; border: 1px solid var(--greige-dark); }
.rc-field { border: 0; margin: 0 0 22px; padding: 0; }
.rc-field > label:not(.rc-choice), .rc-field legend { display: block; font-weight: 700; font-size: 14.5px; color: var(--ink); margin-bottom: 8px; padding: 0; }
.rc-req, .rc-opt { display: inline-block; margin-left: 8px; font-size: 11px; padding: 1px 7px; border-radius: 3px; vertical-align: 2px; font-weight: 700; }
.rc-req { background: var(--gold-deep); color: var(--base); }
.rc-opt { background: var(--greige); color: var(--ink-muted); }
.rc-field input[type="text"], .rc-field input[type="email"], .rc-field input[type="tel"], .rc-field textarea { width: 100%; font: inherit; font-size: 16px; padding: 12px 14px; border: 1px solid var(--greige-dark); border-radius: 6px; background: var(--base); color: var(--ink); }
.rc-field input:focus, .rc-field textarea:focus { outline: 2px solid var(--teal); outline-offset: 1px; }
.rc-choice { font-weight: 400; color: var(--ink); display: inline-flex; align-items: center; gap: 8px; margin: 0 20px 8px 0; font-size: 15px; cursor: pointer; }
.rc-choice input { width: 18px; height: 18px; accent-color: var(--teal); }
.rc-hp { position: absolute; left: -9999px; }
.rc-privacy { font-size: 12.5px; color: var(--ink-muted); margin: 0 0 18px; }
.rc-submit { width: 100%; border: 0; cursor: pointer; font-family: inherit; }
.rc-thanks { padding-top: 80px; padding-bottom: 100px; }

@media (max-width: 992px) {
  .rc-pillars, .rc-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rc-split { grid-template-columns: 1fr; gap: 32px; }
  .rc-msg { grid-template-columns: 220px minmax(0, 1fr); gap: 32px; }
}
@media (max-width: 640px) {
  .rc-sec { padding: 64px 20px; }
  body:not(.home) .rc-sec.section-beige { padding-top: 96px; padding-bottom: 96px; }
  .rc-sec .section-title { margin-bottom: 28px; }
  .rc-lead { margin: -8px auto 24px; text-align: left; }
  .rc-msg { grid-template-columns: 1fr; gap: 24px; }
  .rc-msg-photo { max-width: 220px; margin: 0 auto; }
  .rc-pillars, .rc-steps, .rc-team, .rc-honest, .rc-fit, .rc-flow { grid-template-columns: 1fr; }
  .rc-pillar { padding: 24px 20px; }
  .rc-values p { text-align: left; font-size: 15px; }
  .rc-day li { grid-template-columns: 1fr; gap: 0; }
  .rc-table th, .rc-table td { display: block; width: auto; padding: 12px 16px; }
  .rc-table th { border-bottom: 0; padding-bottom: 4px; }
  .rc-form { padding: 26px 18px 22px; }
}

/* トップ: フッター直上の採用帯(採用が終わったら index.html の <aside class="rc-band"> を消すだけで外せる) */
.rc-band { background: var(--greige); border-top: 1px solid var(--greige-dark); }
.rc-band a { display: flex; align-items: center; justify-content: center; gap: 14px; max-width: 1200px; margin: 0 auto; padding: 14px 20px; font-size: 14px; color: var(--ink-soft); }
.rc-band-tag { background: var(--teal); color: var(--base); font-size: 12px; font-weight: 700; padding: 3px 10px; border-radius: 2px; letter-spacing: .06em; white-space: nowrap; }
.rc-band-arrow { color: var(--teal); font-weight: 700; }
.rc-band a:hover .rc-band-text { color: var(--teal); text-decoration: underline; }
@media (max-width: 640px) { .rc-band a { font-size: 13px; gap: 10px; justify-content: flex-start; padding: 12px 16px; } }
.footer-free-note { max-width: 1200px; margin: 24px auto 0; padding: 0 48px; font-size: 12px; line-height: 1.8; color: rgba(252,250,246,.75); }
.footer-free-note a { text-decoration: underline; }
@media (max-width: 640px) { .footer-free-note { padding: 0 20px; } }
/* 開院前の予約案内(2027年1月の予約開始後に build_pages2.py から削除する) */
.pre-open-note { margin-top: 10px !important; font-size: 13.5px !important; color: var(--gold-ink) !important; font-weight: 700; }

/* ---- /recruit/ リサーチ反映(2026-10-14): FVの勤務時間・1分でわかる・Q&A ---- */
.rc-hero-hours { font-size: 13.5px; color: var(--ink-soft); margin: -14px 0 22px; }
.rc-hero-hours b { color: var(--teal); }
.rc-summary { max-width: 1000px; margin: 0 auto; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.rc-summary > div { background: #fff; border: 1px solid var(--greige-dark); border-radius: 8px; padding: 16px 18px; }
.rc-summary dt { font-size: 12px; letter-spacing: .08em; color: var(--ink-muted); margin-bottom: 4px; }
.rc-summary dd { margin: 0; font-size: 14.5px; line-height: 1.7; color: var(--ink-soft); }
.rc-summary dd b { color: var(--teal); }
.rc-summary dd span { font-size: 12.5px; color: var(--ink-muted); }
.rc-qa { max-width: 860px; margin: 0 auto; }
.rc-qa details { border-bottom: 1px solid var(--greige-dark); padding: 16px 4px; }
.rc-qa summary { cursor: pointer; font-weight: 700; color: var(--teal); font-size: 15.5px; line-height: 1.6; list-style: none; position: relative; padding-right: 28px; }
.rc-qa summary::-webkit-details-marker { display: none; }
.rc-qa summary::before { content: "Q. "; color: var(--gold-ink); }
.rc-qa summary::after { content: "+"; position: absolute; right: 4px; top: 0; color: var(--gold); font-size: 20px; line-height: 1.2; }
.rc-qa details[open] summary::after { content: "−"; }
.rc-qa p { margin: 10px 0 0; font-size: 14.5px; line-height: 1.95; color: var(--ink-soft); }
@media (max-width: 992px) { .rc-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) {
  .rc-hero-hours { margin: -8px 0 16px; font-size: 13px; }
  .rc-summary { grid-template-columns: 1fr; gap: 8px; }
  .rc-summary > div { display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: 8px; padding: 12px 14px; }
  .rc-summary dt { margin: 2px 0 0; }
}
/* 正直にお伝えしたいこと: 理由／当院では／合う人(2026-10-14) */
.rc-honest-dl { margin: 10px 0 0; display: grid; gap: 6px; }
.rc-honest-dl > div { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 8px; }
.rc-honest-dl dt { font-size: 12px; font-weight: 700; color: var(--gold-ink); padding-top: 3px; }
.rc-honest-dl dd { margin: 0; font-size: 14.5px; line-height: 1.85; color: var(--ink-soft); }
.rc-honest-close { max-width: 1000px; margin: 32px auto 0; text-align: center; }
.rc-honest-close p { font-family: var(--serif); color: var(--teal); font-size: 17px; font-weight: 700; margin: 0 0 18px; }
.rc-step-when small { font-size: .7em; font-weight: 500; color: var(--ink-muted); margin-left: 4px; }

/* FV1枚目(大人の女性): PCは反転版を左寄せで「Smile」の飾りを避ける。スマホは写真枠が横長で寄せられないため、元の向き(人物が右)を使う */
.hero-split .hero-photo .hero-slide--adult { background-image: url(../assets/hero_slide_adult.webp); background-position: 0% center; }
@media (max-width: 900px) { .hero-split .hero-photo .hero-slide--adult { background-image: url(../assets/hero_slide_adult_m.webp); background-size: 150% auto; background-position: 100% 30%; } }

/* /digital/remote/ 使い方の流れ(2026-10-14) */
.rm-steps { list-style: none; margin: 0 auto; padding: 0; max-width: 1100px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; counter-reset: rm; }
.rm-steps li { counter-increment: rm; background: #fff; border: 1px solid var(--greige-dark); border-radius: 8px; padding: 22px 20px; }
.rm-steps li::before { content: "STEP " counter(rm); display: block; font-size: 11.5px; letter-spacing: .12em; font-weight: 700; color: var(--gold-ink); margin-bottom: 6px; }
.rm-steps b { display: block; font-family: var(--serif); color: var(--teal); font-size: 17px; margin-bottom: 6px; }
.rm-steps span { font-size: 14px; line-height: 1.85; color: var(--ink-soft); }
@media (max-width: 992px) { .rm-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .rm-steps { grid-template-columns: 1fr; } }
/* トップ: お悩みカードの下の「大人のご相談」(2026-10-14) */
.symptom-more { max-width: 1100px; margin: 28px auto 0; text-align: center; font-size: 14.5px; color: var(--ink-soft); }
.symptom-more a { display: inline-block; margin: 6px 6px 0; padding: 6px 14px; border: 1px solid var(--teal); border-radius: 999px; color: var(--teal); font-weight: 700; font-size: 14px; background: #fff; }
.symptom-more a:hover { background: var(--teal); color: var(--base); }

/* ===== サイト内ナビ（2026-10-23: フッター全ページリンク／下層サイドメニュー／相互リンク）apply_sitenav.py で挿入 ===== */
.footer-sitemap { max-width: 1440px; margin: 48px auto 0; padding-top: 36px; border-top: 1px solid rgba(255,255,255,.14); }
.footer-sitemap-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 28px 32px; }
.footer-sitemap-head { margin: 0 0 12px; font-size: 13px; font-weight: 700; color: #fff; letter-spacing: .06em; }
.footer-sitemap ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.footer-sitemap a { font-size: 13px; color: #c7cdc9; text-decoration: none; line-height: 1.6; }
.footer-sitemap a:hover { color: var(--gold); text-decoration: underline; }
@media (max-width: 1023px) { .footer-sitemap-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 599px) {
  .footer-sitemap { margin-top: 32px; padding-top: 28px; }
  .footer-sitemap-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 16px; }
}

.sub-layout { display: flex; flex-direction: column; }
.sub-main { min-width: 0; }
.side-nav { order: 2; padding: 8px 20px 48px; display: grid; gap: 20px; max-width: 760px; width: 100%; margin: 0 auto; box-sizing: border-box; }
.side-nav-block { background: #fff; border: 1px solid var(--greige-dark); border-radius: 14px; padding: 18px 20px; }
.side-nav-head { margin: 0 0 10px; font-family: var(--serif); font-weight: 700; font-size: 15px; color: var(--teal); }
.side-nav ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px 12px; }
.side-nav a { display: block; padding: 7px 8px; border-radius: 8px; font-size: 14px; color: var(--ink-soft); text-decoration: none; line-height: 1.5; }
.side-nav a:hover { background: var(--greige); color: var(--teal); }
.side-nav a[aria-current="page"] { background: var(--teal); color: #fff; font-weight: 700; }
@media (min-width: 1100px) {
  .sub-layout { display: grid; grid-template-columns: 248px minmax(0, 1fr); gap: 0; max-width: 1600px; margin: 0 auto; }
  .side-nav { order: 0; position: sticky; top: 104px; align-self: start; max-height: calc(100vh - 120px); overflow-y: auto; padding: 40px 0 40px 32px; max-width: none; margin: 0; gap: 16px; }
  .side-nav ul { grid-template-columns: 1fr; }
  .side-nav-block { padding: 14px 14px; }
  .side-nav a { padding: 6px 10px; font-size: 13.5px; }
  .sub-main .section { padding-left: 40px; padding-right: 48px; }
}

.related-links { text-align: center; }
.related-links .related-links-title { margin-bottom: 32px; }
.related-links-list { list-style: none; margin: 0 auto; padding: 0; max-width: 960px; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; }
.related-links-list a { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 16px 20px; background: #fff; border: 1px solid var(--greige-dark); border-radius: 12px; color: var(--teal); font-weight: 700; text-decoration: none; }
.related-links-list a:hover { border-color: var(--teal); background: var(--greige); }
.related-links-note { max-width: 760px; margin: 20px auto 0; font-size: 13.5px; color: var(--ink-muted); }

/* 執筆・監修ボックス／コラムの日付（2026-10-23）apply_sitenav.py で挿入 */
.author-box-wrap { padding-top: 24px; padding-bottom: 56px; }
.author-box { max-width: 760px; margin: 0 auto; display: flex; gap: 20px; align-items: flex-start; background: #fff; border: 1px solid var(--greige-dark); border-radius: 16px; padding: 22px 24px; }
.author-box-photo { width: 88px; height: 88px; border-radius: 50%; object-fit: cover; object-position: top; flex-shrink: 0; }
.author-box-body { min-width: 0; }
.author-box-label { margin: 0 0 4px; font-size: 12px; font-weight: 700; letter-spacing: .08em; color: var(--gold-ink); }
.author-box-name { margin: 0 0 6px; font-family: var(--serif); font-size: 18px; font-weight: 700; color: var(--teal); }
.author-box-name a { color: inherit; }
.author-box-name span { display: inline-block; margin-left: 10px; font-family: var(--sans); font-size: 12.5px; font-weight: 500; color: var(--ink-muted); }
.author-box-text { margin: 0 0 6px; font-size: 13.5px; line-height: 1.7; color: var(--ink-soft); }
.author-box-date { margin: 0; font-size: 12.5px; color: var(--ink-muted); }
@media (max-width: 599px) { .author-box { padding: 18px; gap: 14px; } .author-box-photo { width: 64px; height: 64px; } .author-box-name span { display: block; margin: 2px 0 0; } }
.blog-date { display: inline-block; margin-right: 16px; font-size: 13px; color: var(--ink-muted); }
.blog-card img.blog-thumb { height: auto; aspect-ratio: 16 / 10; object-fit: cover; flex-shrink: 0; }  /* 2026-10-23 サムネの高さを揃える */

/* H1の先頭の検索語（2026-10-24）apply_sitenav.py で挿入 */
.h1-kw { display: block; font-family: var(--sans); font-size: clamp(14px, 1.3vw, 17px); font-weight: 700; letter-spacing: .08em; line-height: 1.5; color: var(--gold-ink); margin: 0 0 10px; }
.hero-h1-write .h1-kw { margin-bottom: 14px; }

/* 大人の矯正ページ（2026-10-24） */
.adult-hero-photo { margin: 0 auto; max-width: 1440px; padding: 0 48px; }
.adult-hero-photo img { width: 100%; height: auto; aspect-ratio: 16 / 7; object-fit: cover; border-radius: 18px; display: block; }
.adult-hero-photo figcaption { font-size: 11.5px; color: var(--ink-muted); text-align: right; margin-top: 6px; }
@media (max-width: 767px) { .adult-hero-photo { padding: 0 16px; } .adult-hero-photo img { aspect-ratio: 4 / 3; border-radius: 12px; } }
.age-cards { max-width: 1040px; margin: 0 auto; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.age-card { background: #fff; border: 1px solid var(--greige-dark); border-radius: 16px; padding: 20px 18px; }
.age-card-age { margin: 0 0 10px; font-family: var(--serif); font-size: 22px; font-weight: 700; color: var(--teal); border-bottom: 2px solid var(--gold); display: inline-block; padding-bottom: 2px; }
.age-card ul { margin: 0; padding-left: 1.1em; font-size: 14px; line-height: 1.7; color: var(--ink-soft); }
.age-card li + li { margin-top: 6px; }
.age-cards-note { max-width: 1040px; margin: 18px auto 0; font-size: 14px; color: var(--ink-muted); text-align: center; }
@media (max-width: 1023px) { .age-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 599px) { .age-cards { grid-template-columns: 1fr; } }
.doc-message { max-width: 900px; margin: 0 auto; display: flex; gap: 32px; align-items: flex-start; background: #fff; border-radius: 20px; padding: 32px 36px; box-shadow: 0 12px 30px -20px rgba(18,48,63,.3); }
.doc-message-photo { width: 160px; height: 160px; border-radius: 50%; object-fit: cover; object-position: top; flex-shrink: 0; }
.doc-message-body p { margin: 0 0 14px; line-height: 1.95; }
.doc-message-sign { text-align: right; font-family: var(--serif); font-weight: 700; color: var(--teal); }
@media (max-width: 767px) { .doc-message { flex-direction: column; align-items: center; padding: 24px 20px; gap: 18px; } .doc-message-photo { width: 120px; height: 120px; } }
.adult-age-photo { max-width: 1040px; padding: 0; margin: 0 auto 28px; }
/* アクセス：主な駅からの所要時間（2026-10-24） */
.access-times-title { max-width: 720px; margin: 40px auto 14px; font-family: var(--serif); font-size: 18px; color: var(--teal); text-align: center; }
.access-times { max-width: 720px; margin: 0 auto; }
.access-times-note { max-width: 720px; margin: 10px auto 0; font-size: 12.5px; color: var(--ink-muted); }
.price-example { max-width: 860px; margin: 22px auto 0; }
/* チェックリスト：太字やリンクの前後にすき間が出ないよう、flexをやめて行内で流す（2026-10-24） */
.applies li { display: block; position: relative; padding-left: 44px; line-height: 1.75; }
.applies li::before { position: absolute; left: 20px; top: 16px; line-height: 1.75; }

/* トップ：大人／子どもの振り分け（2026-10-24） */
.audience-split { max-width: 1320px; margin: 0 auto; padding: 64px 48px 72px; display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 56px; align-items: start; }
/* 枠なし・不定形の写真で「カード感」を消す(2026-10-24) */
.aud-card { position: relative; display: flex; flex-direction: column; text-decoration: none; color: inherit; }
.aud-photo { position: relative; display: block; aspect-ratio: 16 / 9; isolation: isolate; }
.aud-card--adult .aud-photo img { object-position: 62% center; }
.aud-photo::before { content: ""; position: absolute; inset: 10% -5% -7% 8%; z-index: -1; background: #E6EEE7; border-radius: 42% 58% 63% 37% / 46% 38% 62% 54%; transition: transform .6s ease; }
.aud-card--child .aud-photo::before { inset: 6% 6% -6% -6%; background: #F1E6D3; border-radius: 61% 39% 44% 56% / 52% 60% 40% 48%; }
.aud-photo img { width: 100%; height: 100%; object-fit: cover; display: block; border-radius: 58% 42% 46% 54% / 44% 52% 48% 56%; transition: border-radius .8s ease, transform .6s ease; }
.aud-card--child .aud-photo { aspect-ratio: 1 / 0.82; width: 88%; margin-left: auto; margin-top: 48px; }
.aud-card--child .aud-photo img { object-position: 72% center; border-radius: 46% 54% 38% 62% / 58% 44% 56% 42%; }
.aud-card:hover .aud-photo img { border-radius: 50% 50% 52% 48% / 50% 48% 52% 50%; transform: scale(1.015); }
.aud-card:hover .aud-photo::before { transform: rotate(-4deg) scale(1.03); }
.aud-body { display: flex; flex-direction: column; align-items: flex-start; padding: 28px 8px 0 4%; flex: 1; }
.aud-card--child .aud-body { padding-left: 14%; }
.aud-badge { display: inline-block; font-family: var(--serif); font-size: 13px; font-weight: 700; letter-spacing: .18em; color: var(--teal); padding: 0 0 6px; margin-bottom: 14px; border-bottom: 1px solid currentColor; }
.aud-card--child .aud-badge { color: var(--gold-deep); }
.aud-title { display: block; font-family: var(--serif); font-size: clamp(23px, 2.5vw, 32px); font-weight: 700; color: var(--teal); line-height: 1.45; margin-bottom: 14px; }
.aud-card--child .aud-title { font-size: clamp(20px, 2.05vw, 26px); }
.aud-lead { display: block; font-size: 14.5px; line-height: 1.9; color: var(--ink-soft); margin-bottom: 22px; max-width: 34em; }
.aud-btn { display: inline-flex; align-items: center; gap: 12px; font-size: 15px; font-weight: 700; color: var(--gold-deep); padding: 6px 0; }
.aud-card--adult .aud-btn { color: var(--teal); }
.aud-btn .arrow { display: inline-grid; place-items: center; width: 44px; height: 44px; border-radius: 52% 48% 45% 55% / 55% 45% 55% 45%; background: currentColor; transition: transform .25s; }
.aud-btn .arrow::after { content: "→"; color: #fff; font-size: 17px; }
.aud-btn .arrow { font-size: 0; }
.aud-card:hover .aud-btn .arrow { transform: translateX(6px); }
.aud-card:focus-visible { outline: 2px solid var(--teal); outline-offset: 8px; border-radius: 12px; }
@media (prefers-reduced-motion: reduce) { .aud-photo img, .aud-photo::before, .aud-btn .arrow { transition: none; } }
@media (max-width: 899px) {
  .audience-split { grid-template-columns: 1fr; padding: 36px 20px 44px; gap: 44px; }
  .aud-body { padding: 20px 4px 0; }
  .aud-card--child .aud-body { padding-left: 4px; }
  .aud-photo { aspect-ratio: 16 / 11; width: 94%; }
  .aud-card--child .aud-photo { width: 86%; margin-top: 0; aspect-ratio: 16 / 12; }
}

/* ============================================================
   不定形の丸み(2026-10-24)：写真の箱をやめ、手描きのような丸みに
   後ろの色面は box-shadow(border-radiusに沿う)で出すのでHTMLは変えない
   ============================================================ */
:root {
  --blob-a: 58% 42% 46% 54% / 44% 52% 48% 56%;
  --blob-b: 46% 54% 38% 62% / 58% 44% 56% 42%;
  --blob-c: 62% 38% 55% 45% / 48% 58% 42% 52%;
  --blob-d: 40% 60% 52% 48% / 55% 45% 60% 40%;
  --blob-sage: #E6EEE7;
  --blob-sand: #F1E6D3;
}
/* シミュレーション(トップ・デジタル) */
.dg-card { background: transparent; box-shadow: none; border-radius: 0; overflow: visible; }
.dg-card img { aspect-ratio: 4 / 3; border-radius: var(--blob-a); box-shadow: 12px 14px 0 var(--blob-sage); transition: border-radius .8s ease; }
.dg-card:nth-child(2) img { border-radius: var(--blob-b); box-shadow: -12px 14px 0 var(--blob-sand); }
.dg-card:nth-child(3) img { border-radius: var(--blob-c); }
.dg-card:nth-child(4) img { border-radius: var(--blob-d); box-shadow: -12px 14px 0 var(--blob-sand); }
.dg-card:hover img { border-radius: 50% 50% 48% 52% / 50% 50% 50% 50%; }
.dg-card figcaption { padding: 22px 6px 0; }
/* 矯正の種類 */
.menu-card, .menu-card:hover { background: transparent; box-shadow: none; border: 0; border-radius: 0; overflow: visible; transform: none; }
.menu-card img { border-radius: var(--blob-a); box-shadow: 10px 12px 0 var(--blob-sage); transition: border-radius .8s ease, transform .5s ease; }
.menu-card:nth-child(2) img { border-radius: var(--blob-c); box-shadow: -10px 12px 0 var(--blob-sand); }
.menu-card:nth-child(3) img { border-radius: var(--blob-b); }
.menu-card:nth-child(4) img { border-radius: var(--blob-d); box-shadow: -10px 12px 0 var(--blob-sand); }
.menu-card:hover img { border-radius: 50%; transform: translateY(-3px); }
.menu-card-body { padding: 22px 6px 0; }
/* 院長写真 */
.doctor-photo, .doctor-hero-photo { border-radius: 52% 48% 44% 56% / 40% 46% 54% 60%; box-shadow: 18px 20px 0 var(--blob-sage); }
/* アクセスの外観写真 */
.access-photo { border-radius: var(--blob-c); box-shadow: -14px 16px 0 var(--blob-sand); }
/* 大人の矯正ページ */
.adult-hero-photo img { border-radius: 48% 52% 38% 62% / 62% 46% 54% 38%; }
.doc-message { border-radius: 60px 160px 70px 130px / 70px 110px 80px 120px; box-shadow: none; background: #fff; }
.doc-message-photo { border-radius: var(--blob-b); box-shadow: 8px 10px 0 var(--blob-sage); }
@media (max-width: 767px) {
  .adult-hero-photo img { border-radius: 44% 56% 40% 60% / 50% 44% 56% 50%; }
  .doc-message { border-radius: 40px 90px 44px 80px / 50px 70px 56px 80px; }
  .dg-card img { box-shadow: 8px 10px 0 var(--blob-sage); }
  .dg-card:nth-child(even) img { box-shadow: -8px 10px 0 var(--blob-sand); }
  .menu-card img { box-shadow: 6px 8px 0 var(--blob-sage); }
  .menu-card:nth-child(even) img { box-shadow: -6px 8px 0 var(--blob-sand); }
  .menu-card-body { padding: 14px 2px 0; }
}
@media (prefers-reduced-motion: reduce) { .dg-card img, .menu-card img { transition: none; } }

/* ============================================================
   専門医院バンドを深緑→やさしいセージに(2026-10-24 試行)
   元に戻すときは、このブロックを丸ごと削除する
   ============================================================ */
.home .specialty-band { background: linear-gradient(180deg, #E7EEE5 0%, #DCE6DA 100%); }
.home .specialty-band::before {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 90' preserveAspectRatio='none'><path d='M0 58C120 40 260 74 430 60C600 46 660 18 830 28C1000 38 1090 72 1250 62C1350 56 1400 44 1440 50V90H0Z' fill='%23E7EEE5'/></svg>");
}
.home .specialty-band::after {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 90' preserveAspectRatio='none'><path d='M0 58C120 40 260 74 430 60C600 46 660 18 830 28C1000 38 1090 72 1250 62C1350 56 1400 44 1440 50V90H0Z' fill='%23DCE6DA'/></svg>");
}
.home .specialty-band .section-eyebrow { color: var(--gold-deep); }
.home .specialty-band .section-title { color: var(--teal); }
.home .specialty-band .specialty-lead { color: var(--ink-soft); }
.home .specialty-band .specialty-note { color: var(--ink-muted); }
.home .specialty-band .specialty-link .link-underline { color: var(--teal); border-bottom-color: rgba(46,88,71,.35); }
.home .specialty-band .specialty-link .link-underline:hover { color: var(--gold-deep); border-bottom-color: var(--gold-deep); }
.home .specialty-band .ghost-vert { color: rgba(46,88,71,.06); }
.home .specialty-item { border-radius: 28px 64px 28px 56px / 28px 48px 28px 44px; box-shadow: 0 22px 44px -30px rgba(46,88,71,.38); }
.home .specialty-item figure { border-radius: 28px 64px 0 0 / 28px 48px 0 0; }
.home .sp-num { color: rgba(138,106,62,.85); text-shadow: 0 2px 0 rgba(252,250,246,.9); z-index: 3; }
.footnote-sub { display: inline-block; margin-top: 10px; font-size: 13.5px; color: var(--ink-muted); }
.menu-card img { object-fit: cover; }

/* 専門医院バンド：中間のセージ(2026-10-24 試行。淡い版に戻すときはこのブロックを削除) */
.home .specialty-band { background: linear-gradient(180deg, #B9CDBB 0%, #A9C0AC 100%); }
.home .specialty-band::before {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 90' preserveAspectRatio='none'><path d='M0 58C120 40 260 74 430 60C600 46 660 18 830 28C1000 38 1090 72 1250 62C1350 56 1400 44 1440 50V90H0Z' fill='%23B9CDBB'/></svg>");
}
.home .specialty-band::after {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 90' preserveAspectRatio='none'><path d='M0 58C120 40 260 74 430 60C600 46 660 18 830 28C1000 38 1090 72 1250 62C1350 56 1400 44 1440 50V90H0Z' fill='%23A9C0AC'/></svg>");
}
.home .specialty-band .section-eyebrow { color: #5E4626; }
.home .specialty-band .section-title { color: #1F3D30; }
.home .specialty-band .specialty-lead, .home .specialty-band .specialty-note { color: #2B3A31; }
.home .specialty-band .specialty-link .link-underline { color: #1F3D30; border-bottom-color: rgba(31,61,48,.45); }
.home .specialty-band .ghost-vert { color: rgba(252,250,246,.28); }
.home .sp-num { color: rgba(252,250,246,.95); text-shadow: 0 4px 16px rgba(31,61,48,.28); }
.home .specialty-item { box-shadow: 0 24px 48px -28px rgba(31,61,48,.5); }

/* 専門医院バンド：若葉の黄緑＋木漏れ日(2026-10-24 試行。中間セージに戻すときはこのブロックを削除) */
.home .specialty-band {
  background:
    radial-gradient(ellipse 50% 40% at 10% 42%, rgba(255,251,230,.75), rgba(255,251,230,0) 70%),
    radial-gradient(ellipse 40% 35% at 88% 30%, rgba(255,251,230,.45), rgba(255,251,230,0) 70%),
    radial-gradient(ellipse 50% 40% at 70% 92%, rgba(150,184,112,.35), rgba(150,184,112,0) 70%),
    linear-gradient(180deg, #DDE9C9 0%, #C9DCB0 100%);
}
.home .specialty-band::before {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 90' preserveAspectRatio='none'><path d='M0 58C120 40 260 74 430 60C600 46 660 18 830 28C1000 38 1090 72 1250 62C1350 56 1400 44 1440 50V90H0Z' fill='%23DDE9C9'/></svg>");
}
.home .specialty-band::after {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 90' preserveAspectRatio='none'><path d='M0 58C120 40 260 74 430 60C600 46 660 18 830 28C1000 38 1090 72 1250 62C1350 56 1400 44 1440 50V90H0Z' fill='%23C9DCB0'/></svg>");
}
.home .specialty-band .section-eyebrow { color: #6B5530; }
.home .specialty-band .section-title { color: #2E5847; }
.home .specialty-band .specialty-lead, .home .specialty-band .specialty-note { color: #34443A; }
.home .specialty-band .specialty-link .link-underline { color: #2E5847; border-bottom-color: rgba(46,88,71,.4); }
.home .specialty-band .ghost-vert { color: rgba(255,255,255,.4); }
.home .sp-num { color: #fff; text-shadow: 0 4px 18px rgba(74,104,52,.35); }
.home .specialty-item { box-shadow: 0 24px 48px -28px rgba(74,104,52,.45); }
/* 上の余白(地色の白)をなくし、波を前のセクション(ベージュ)に直接重ねる */
.home .specialty-band { margin-top: 0; }
@media (max-width: 900px) { .home .specialty-band { margin-top: 0; } }

/* ============================================================
   最終CTAとフッターを若葉色に(2026-10-24 試行・全ページ)
   元に戻すときは、このブロックを丸ごと削除する
   ============================================================ */
.final-cta, .al-cta {
  background-color: #D6E5C0;
  background-image: var(--wv-cream-top),
    radial-gradient(ellipse 45% 60% at 12% 70%, rgba(255,251,230,.7), rgba(255,251,230,0) 70%),
    linear-gradient(180deg, #DDE9C9 0%, #CCDDB3 100%);
  background-size: 100% 58px, auto, auto;
  background-position: top center, center, center;
  background-repeat: no-repeat;
}
.section-beige + .final-cta, .section-beige + .al-cta,
.notice + .final-cta, .notice + .al-cta {
  background-image: var(--wv-greige-top),
    radial-gradient(ellipse 45% 60% at 12% 70%, rgba(255,251,230,.7), rgba(255,251,230,0) 70%),
    linear-gradient(180deg, #DDE9C9 0%, #CCDDB3 100%);
}
@media (max-width: 767px) { .final-cta, .al-cta { background-size: 100% 34px, auto, auto; } }
.final-cta h2, .al-cta h2 { color: #2E5847; }
.final-cta-lead, .al-cta p { color: #34443A; }
.final-cta::before, .al-cta::before { opacity: .55; }
.final-cta a:focus-visible { outline-color: #2E5847; }

/* フッター：淡い若葉 */
.site-footer { background: #EEF3E5; border-top: 1px solid rgba(46,88,71,.12); }
.footer-grid img { content: url("../assets/logo_a.png"); }
.footer-address, .footer-links a, .footer-hours, .footer-sitemap a { color: #3F4A42; }
.footer-specialty { color: #8A6A3E; }
.footer-area, .footer-hours-note { color: #56645A; }
.footer-hours thead tr { border-bottom-color: rgba(46,88,71,.25); }
.footer-hours .open { color: #8A6A3E; }
.footer-sitemap { border-top-color: rgba(46,88,71,.18); }
.footer-sitemap-head { color: #2E5847; }
.footer-links a:hover, .footer-sitemap a:hover { color: #8A6A3E; }
.footer-free-note { color: #56645A; }
.copyright { color: #6B776E; }
.footer-grid a:focus-visible, .copyright a:focus-visible { outline-color: #2E5847; }

/* ============================================================
   線画アイコンを若葉の不定形にのせて、写真・帯と同じ語彙に(2026-10-24 試行)
   元に戻すときは、このブロックを丸ごと削除する
   ============================================================ */
/* 選ばれる理由 */
.reason-item img { width: 148px; height: 148px; padding: 22px; box-sizing: border-box; background: #E6EFD8; border-radius: var(--blob-a); margin-bottom: 18px; transition: border-radius .8s ease; }
.reason-item:nth-child(2n) img { background: #F1E8D6; border-radius: var(--blob-b); }
.reason-item:nth-child(3n) img { border-radius: var(--blob-c); }
.reason-item:nth-child(4) img { border-radius: var(--blob-d); }
.reason-item:hover img { border-radius: 50%; }
/* 診療の流れ */
.flow-disc { background: #E6EFD8; border: 0; border-radius: var(--blob-a); }
.flow-node:nth-child(even) .flow-disc { background: #F1E8D6; border-radius: var(--blob-b); }
/* 信頼バー(ヒーロー下) */
.trust-ico { isolation: isolate; }
.trust-ico::before { content: ""; position: absolute; inset: -6px -8px -4px -6px; z-index: -1; background: #E6EFD8; border-radius: var(--blob-c); }
.trust-bar li:nth-child(even) .trust-ico::before { background: #F1E8D6; border-radius: var(--blob-b); }
.trust-ico::after { box-shadow: 0 0 0 2px #fff; }
@media (max-width: 767px) {
  .reason-item img { width: 76px; height: 76px; padding: 12px; }  /* 2026-10-30: 列幅76pxに合わせる(120pxだと縦に伸びていた) */
  .trust-ico::before { inset: -4px -5px -3px -4px; }
}
/* 木漏れ日の影画像の四角い端を、ふちに向けて消す */
.section-komorebi::before {
  -webkit-mask-image: radial-gradient(ellipse 70% 70% at 0% 0%, #000 35%, transparent 78%);
          mask-image: radial-gradient(ellipse 70% 70% at 0% 0%, #000 35%, transparent 78%);
}

/* ============================================================
   トップ：症例を上部に・治療前/治療後スライド比較(2026-10-25)
   ============================================================ */
.case-feature { max-width: 1240px; margin: 0 auto; padding-top: 56px; }
.cf-lead { text-align: center; color: var(--ink-soft); font-size: 14.5px; margin: -8px 0 32px; }
.cf-wrap { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: 40px; align-items: center; }
.ba-slider { position: relative; aspect-ratio: 4 / 3; border-radius: 22px; overflow: hidden; background: #111; box-shadow: 18px 20px 0 var(--blob-sage), 0 24px 50px -30px rgba(31,61,48,.5); touch-action: pan-y; user-select: none; }
.ba-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; display: block; pointer-events: none; }
.ba-after { clip-path: inset(0 0 0 var(--pos)); }
.ba-handle { position: absolute; top: 0; bottom: 0; left: var(--pos); width: 3px; margin-left: -1.5px; background: #fff; box-shadow: 0 0 10px rgba(0,0,0,.4); pointer-events: none; }
.ba-handle span { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 48px; height: 48px; border-radius: 52% 48% 45% 55% / 55% 45% 55% 45%; background: #fff; color: var(--teal); display: grid; place-items: center; font-weight: 700; font-size: 18px; letter-spacing: -.1em; box-shadow: 0 4px 14px rgba(0,0,0,.3); }
.ba-label { position: absolute; top: 14px; font-size: 12.5px; font-weight: 700; letter-spacing: .08em; color: #fff; background: rgba(0,0,0,.45); padding: 4px 12px; border-radius: 999px; pointer-events: none; }
.ba-label--before { left: 14px; }
.ba-label--after { right: 14px; background: rgba(46,88,71,.85); }
.ba-range { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; -webkit-appearance: none; appearance: none; }
.ba-range:focus-visible + * , .ba-slider:focus-within { outline: 3px solid var(--gold); outline-offset: 4px; }
.cf-info .cf-tag { display: inline-block; font-size: 12px; font-weight: 700; letter-spacing: .1em; color: var(--teal); border-bottom: 1px solid currentColor; padding-bottom: 4px; margin: 0 0 12px; }
.cf-title { font-family: var(--serif); font-size: clamp(20px, 2.1vw, 26px); color: var(--teal); line-height: 1.45; margin: 0 0 14px; }
.cf-more { display: inline-flex; align-items: center; gap: 10px; margin-top: 18px; font-weight: 700; color: var(--teal); }
.cf-more span { display: inline-grid; place-items: center; width: 36px; height: 36px; border-radius: 52% 48% 45% 55% / 55% 45% 55% 45%; background: var(--teal); color: #fff; transition: transform .25s; }
.cf-more:hover span { transform: translateX(5px); }
.cf-tabs { display: flex; gap: 14px; margin-top: 36px; overflow-x: auto; padding: 4px 2px 8px; scrollbar-width: none; }
.cf-tabs::-webkit-scrollbar { display: none; }
.cf-tab { flex: 0 0 auto; width: 150px; border: 0; background: none; padding: 0; cursor: pointer; text-align: left; color: var(--ink-soft); font: inherit; }
.cf-tab img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 14px; background: #111; opacity: .55; transition: opacity .2s, box-shadow .2s; }
.cf-tab span { display: block; font-size: 13px; margin-top: 8px; font-weight: 700; }
.cf-tabs { align-items: flex-start; } /* 2026-10-30: 説明文の長さが違っても画像の上端をそろえる（buttonは中身を縦中央に置くため） */
.cf-tab:hover img { opacity: .85; }
.cf-tab.is-active img { opacity: 1; box-shadow: 0 0 0 3px var(--teal); }
.cf-tab.is-active span { color: var(--teal); }
.cf-note { font-size: 12px; color: var(--ink-muted); margin: 14px 0 0; }
@media (max-width: 899px) {
  .case-feature { padding-top: 32px; }
  .cf-wrap { grid-template-columns: 1fr; gap: 24px; }
  .ba-slider { box-shadow: 10px 12px 0 var(--blob-sage); border-radius: 16px; }
  .cf-tab { width: 118px; }
  .cf-lead { margin-bottom: 22px; font-size: 13.5px; }
}
.ba-slider.is-hint .ba-after { transition: clip-path .6s ease; }
.ba-slider.is-hint .ba-handle { transition: left .6s ease; }
/* 歯並び別ページ版：サイドメニュー横の狭い幅に合わせて縦積み */
.case-feature--sub { padding-top: 40px; padding-bottom: 48px; }
.case-feature--sub .cf-wrap { grid-template-columns: 1fr; gap: 24px; }
@media (min-width: 1200px) { .case-feature--sub .cf-wrap { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); } }
.case-feature--sub .cf-tab { width: 130px; }
.case-feature--sub .cf-tab span { font-weight: 500; font-size: 12px; line-height: 1.5; }

/* ============================================================
   症例一覧(写真タイル＋絞り込み)と症例ページ(2026-10-26)
   ============================================================ */
.is-sample { background: repeating-linear-gradient(-45deg, #FFF6DA, #FFF6DA 6px, #FDEFC4 6px, #FDEFC4 12px); color: #7A5B1E; border: 1px dashed #D9B45A; border-radius: 6px; padding: 1px 6px; font-size: .95em; }
.cd-sample-block { display: block; padding: 18px; text-align: center; }
.cx-list { max-width: 1240px; margin: 0 auto; padding-top: 32px; }
.cx-filter { background: #fff; border-radius: 24px 48px 24px 40px / 24px 36px 24px 32px; padding: 22px 26px; box-shadow: 0 16px 36px -28px rgba(46,88,71,.45); display: grid; gap: 14px; }
.cx-group { display: grid; grid-template-columns: 9em 1fr; gap: 10px; align-items: start; }
.cx-label { margin: 6px 0 0; font-size: 13px; font-weight: 700; color: var(--teal); }
.cx-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.cx-chip { font: inherit; font-size: 13px; color: var(--ink-soft); background: var(--base); border: 1px solid var(--greige-dark); border-radius: 999px; padding: 6px 12px; cursor: pointer; display: inline-flex; gap: 6px; align-items: center; transition: background .2s, color .2s, border-color .2s; }
.cx-chip:hover { border-color: var(--teal); color: var(--teal); }
.cx-chip[aria-pressed="true"] { background: var(--teal); border-color: var(--teal); color: #fff; }
.cx-n { font-size: 11px; opacity: .7; }
.cx-chip.is-empty { opacity: .55; }
.cx-bar { display: flex; justify-content: space-between; align-items: center; border-top: 1px solid var(--greige); padding-top: 12px; }
.cx-count { margin: 0; font-weight: 700; color: var(--teal); }
.cx-count:empty { display: none; }   /* 2026-11-05 件数は出さない */
.cx-clear { font: inherit; font-size: 13px; background: none; border: 0; color: var(--gold-deep); text-decoration: underline; cursor: pointer; }
.cx-hint { font-size: 13px; color: var(--ink-muted); margin: 18px 0 12px; }
.cx-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 22px; }
.cx-grid--3 { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.cx-tile { display: flex; flex-direction: column; text-decoration: none; color: inherit; }
.cx-tile[hidden] { display: none; }
.cx-img { position: relative; display: block; aspect-ratio: 4 / 3; border-radius: 18px; overflow: hidden; background: #111; box-shadow: 8px 10px 0 var(--blob-sage); transition: transform .3s; }
.cx-img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; transition: opacity .35s; }
.cx-before { opacity: 0; }
.cx-tile:hover .cx-before, .cx-tile:focus-visible .cx-before { opacity: 1; }
.cx-tile:hover .cx-img { transform: translateY(-3px); }
.cx-flag { position: absolute; top: 10px; left: 10px; font-size: 11.5px; font-weight: 700; color: #fff; background: rgba(46,88,71,.88); padding: 3px 10px; border-radius: 999px; }
.cx-flag::after { content: "治療後"; }
.cx-tile:hover .cx-flag { background: rgba(0,0,0,.55); }
.cx-tile:hover .cx-flag::after { content: "治療前"; }
.cx-body { padding: 14px 4px 0; display: grid; gap: 6px; }
.cx-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.cx-tags span, .cd-tags span { font-size: 11px; color: var(--teal); background: #E6EFD8; padding: 2px 9px; border-radius: 999px; }
.cx-title { font-weight: 700; color: var(--teal); line-height: 1.5; }
.cx-meta { font-size: 12.5px; color: var(--ink-muted); }
.cx-empty { text-align: center; padding: 30px; color: var(--ink-soft); }
.cd-tags { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; margin: 14px 0 0; }
.case-feature--detail { max-width: 860px; padding-top: 32px; }
.case-feature--detail .cf-lead { margin: 16px 0 0; }
.cd-summary { max-width: 860px; margin: 0 auto; }
.cd-table { width: 100%; border-collapse: collapse; background: #fff; border-radius: 16px; overflow: hidden; font-size: 14.5px; }
.cd-table th, .cd-table td { padding: 13px 18px; border-bottom: 1px solid var(--greige); text-align: left; vertical-align: top; line-height: 1.8; }
.cd-table th { width: 11em; background: #F4F7EE; color: var(--teal); font-weight: 700; }
.cd-story .prose h2 { font-family: var(--serif); font-size: 20px; color: var(--teal); margin: 28px 0 8px; }
.cd-story .prose h2:first-child { margin-top: 0; }
.cd-comment { display: flex; gap: 16px; align-items: flex-start; background: #fff; border-radius: 22px 44px 22px 36px / 22px 32px 22px 28px; padding: 18px 22px; margin-top: 26px; }
.cd-comment img { width: 72px; height: 72px; border-radius: var(--blob-b); object-fit: cover; object-position: top; flex-shrink: 0; }
.cd-comment-head { font-weight: 700; color: var(--teal); margin: 0 0 4px; }
.cd-comment p { margin: 0; }
.cd-progress { max-width: 1000px; margin: 0 auto; }
.cd-progress-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; }
.cd-progress-grid img { width: 100%; border-radius: 14px; background: #111; }
.cd-related { max-width: 1100px; margin: 0 auto; }
@media (max-width: 767px) {
  .cx-filter { padding: 16px; border-radius: 18px; }
  .cx-group { grid-template-columns: 1fr; gap: 6px; }
  .cx-chips { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; scrollbar-width: none; }
  .cx-chips::-webkit-scrollbar { display: none; }
  .cx-chip { flex: 0 0 auto; }
  .cx-grid { grid-template-columns: 1fr 1fr; gap: 14px; }
  .cx-title { font-size: 13.5px; }
  .cx-tags span:nth-child(n+3) { display: none; }
  .cd-table th { width: 7.5em; padding: 11px 12px; }
  .cd-table td { padding: 11px 12px; }
}
/* ヘッダーメニュー8項目化(2026-10-26)：幅に応じて間隔と文字を詰める */
@media (min-width: 1024px) {
  .header-nav { gap: clamp(14px, 1.45vw, 28px); font-size: clamp(13px, 1.02vw, 14.5px); }
}
/* 1101〜1299px は8項目が入りきらないため、右上のLINEボタンを隠す（右端の固定LINEボタンがあるため導線は残る） */
@media (min-width: 1101px) and (max-width: 1259px) { .site-header .header-cta { display: none; } }
@media (min-width: 1101px) and (max-width: 1199px) { .site-header { padding: 0 18px; gap: 12px; } .header-nav { gap: 13px; } }
/* 右端のプルダウンは右寄せにして、画面の外へはみ出さないようにする */
.header-nav > .nav-drop:last-child .nav-drop-menu { left: auto; right: -12px; transform: translateY(8px); }
.header-nav > .nav-drop:last-child:hover .nav-drop-menu, .header-nav > .nav-drop:last-child:focus-within .nav-drop-menu { transform: translateY(0); }
@media (max-width: 1100px) { .header-nav.is-open > .nav-drop:last-child .nav-drop-menu { right: auto; transform: none; } }
/* スマホのメニュー：項目名を押すと小メニューが開く(アコーディオン)(2026-10-26) */
@media (max-width: 1100px) {
  .header-nav.is-open .nav-drop > .nav-drop-menu { display: none; }
  .header-nav.is-open .nav-drop.is-expanded > .nav-drop-menu { display: flex; }
  .header-nav.is-open .nav-drop > a::after { display: inline-block; content: "＋"; margin-left: auto; padding-left: 12px; font-size: 14px; color: var(--gold); }
  .header-nav.is-open .nav-drop.is-expanded > a::after { content: "－"; }
  .header-nav.is-open .nav-drop > a { display: flex; align-items: center; }
}
.cd-photos { max-width: 1100px; margin: 0 auto; }
.cd-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.cd-pair figure { margin: 0; }
.cd-pair figcaption { font-weight: 700; color: var(--teal); margin-bottom: 8px; }
.cd-pair img { width: 100%; height: auto; display: block; border-radius: 14px; background: #111; }
.cd-pair--profile { max-width: 640px; margin: 0 auto; }
.cd-pair--profile img { background: #f4efe6; }
.cd-photo-note { font-size: 13px; color: var(--ink-muted); margin: 12px 0 0; text-align: center; }
@media (max-width: 640px) { .cd-pair:not(.cd-pair--profile) { grid-template-columns: 1fr; } }
/* 症例ページ：治療前→治療中→治療後の時系列(2026-10-26) */
.cd-timeline { max-width: 1280px; margin: 0 auto; }
.cd-steps { display: grid; gap: 34px; align-items: start; counter-reset: step; }
.cd-steps--2 { grid-template-columns: 1fr 1fr; }
.cd-steps--3 { grid-template-columns: 1fr 1fr 1fr; }
.cd-steps--4 { grid-template-columns: 1fr 1fr; }
.cd-step { position: relative; margin: 0; }
.cd-step figcaption { display: flex; align-items: baseline; gap: 10px; margin-bottom: 10px; }
.cd-step figcaption b { font-family: var(--serif); font-size: 19px; color: var(--teal); }
.cd-step figcaption span { font-size: 12.5px; color: var(--ink-muted); }
.cd-step img { width: 100%; height: auto; display: block; border-radius: 16px; background: #111; box-shadow: 0 14px 30px -22px rgba(0,0,0,.6); }
.cd-steps--2 .cd-step + .cd-step::before, .cd-steps--3 .cd-step + .cd-step::before {
  content: "→"; position: absolute; left: -26px; top: 52%; transform: translateY(-50%); font-size: 20px; color: var(--gold); font-weight: 700; }
@media (max-width: 899px) {
  .cd-steps--2, .cd-steps--3, .cd-steps--4 { grid-template-columns: 1fr; gap: 40px; }
  .cd-steps--2 .cd-step + .cd-step::before, .cd-steps--3 .cd-step + .cd-step::before { content: "↓"; left: 50%; top: -32px; transform: translateX(-50%); }
}
/* 時系列は画面幅にかかわらず縦に大きく並べる（横並びだと1枚が小さくなるため） */
.cd-timeline { max-width: 960px; }
.cd-steps--2, .cd-steps--3, .cd-steps--4 { grid-template-columns: 1fr; gap: 48px; max-width: 900px; margin: 0 auto; }
.cd-steps--2 .cd-step + .cd-step::before, .cd-steps--3 .cd-step + .cd-step::before, .cd-steps--4 .cd-step + .cd-step::before {
  content: "↓"; left: 50%; top: -40px; transform: translateX(-50%); font-size: 22px; }
.cd-step figcaption b { font-size: 21px; }
.cd-cost-sub { display: block; font-size: 12.5px; color: var(--ink-muted); line-height: 1.7; margin-top: 4px; }
.cd-cost-main { font-size: 1.25em; color: var(--teal); }
.cd-cost-tax { font-size: .92em; color: var(--ink-soft); margin-left: 4px; }
/* 金額は強調しない。税込だけ小さく控えめに(2026-10-26) */
.cd-cost-main { font-size: inherit; font-weight: inherit; color: inherit; }
.cd-cost-tax { font-size: .85em; color: var(--ink-muted); margin-left: 2px; }

/* 正面＋笑顔の2段（2026-10-26） */
.cd-pair + .cd-pair { margin-top: 24px; }

/* ガイドに合わせた導線（2026-10-27）：ボタン下の返信の目安・フッターの院長名・FAQの最後 */
.cta-reply { font-size: 13px; line-height: 1.6; color: inherit; opacity: .8; margin: 12px auto 0; max-width: 36em; }
.hero .cta-reply { text-align: left; margin: 10px 0 0; }
.final-cta .cta-reply { color: #34443A; opacity: 1; }
.footer-director { display: inline-block; margin-top: 6px; opacity: .9; }
.faq-more { text-align: center; }
.faq-more p { max-width: 40em; margin: 0 auto 14px; }

/* ===== 分割払い（2026-10-29）：トップの帯・料金ページの支払い方法 ===== */
.pay-band { max-width: 980px; margin: 48px auto 0; display: grid; grid-template-columns: auto 1fr auto; gap: 20px 28px; align-items: center;
  background: var(--base); border: 1px solid var(--greige-dark); border-radius: 16px; padding: 24px 28px; }
.pay-band img { width: 72px; height: 72px; }
.pay-band-body { min-width: 0; }
.pay-band-title { font-family: var(--serif); font-size: 19px; font-weight: 600; color: var(--teal); margin: 0 0 6px; text-align: left; }
.pay-band-body p:not(.pay-band-title) { font-size: 14px; line-height: 1.85; color: var(--ink-soft); margin: 0; text-align: left; }
.pay-band-link { white-space: nowrap; font-weight: 600; color: var(--teal); text-decoration: none; border: 1px solid var(--teal); border-radius: 999px; padding: 10px 18px; }
.pay-band-link:hover { background: var(--teal); color: var(--base); }
.pay-band-link:focus-visible { outline: 2px solid var(--gold-deep); outline-offset: 2px; }
@media (max-width: 767px) {
  .pay-band { grid-template-columns: 1fr; text-align: left; padding: 20px; margin-top: 36px; }
  .pay-band img { width: 56px; height: 56px; }
  .pay-band-link { justify-self: start; }
}
.pay-ways { max-width: 900px; margin: 28px auto 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; scroll-margin-top: 96px; }
.pay-way { background: var(--base); border: 1px solid var(--greige-dark); border-radius: 12px; padding: 20px 22px; min-width: 0; }
.pay-way h3 { font-size: 16px; color: var(--teal); margin: 0 0 8px; }
.pay-way p { font-size: 13.5px; line-height: 1.85; color: var(--ink-muted); margin: 0; text-align: left; }
.pay-example { max-width: 900px; margin: 20px auto 28px; background: var(--greige); border-radius: 12px; padding: 20px 24px; }
.pay-example-title { font-weight: 700; color: var(--teal); margin: 0 0 8px; text-align: left; font-size: 15px; }
.pay-example ol { margin: 0; padding-left: 1.4em; font-size: 14px; line-height: 1.9; color: var(--ink-soft); }
.pay-example-note { font-size: 12.5px; color: var(--ink-muted); margin: 8px 0 0; text-align: left; }
@media (max-width: 767px) { .pay-ways { grid-template-columns: 1fr; } }

/* 2026-10-30: スマホ下部バーにInstagramを追加（アクセス｜Instagram｜LINE） */
@media (max-width: 767px) {
  .mobile-bar { grid-template-columns: 1fr 1fr 1.6fr; }
  .mobile-bar .mobile-bar-insta { display: flex; align-items: center; justify-content: center; gap: 5px; }
  .mobile-bar .mobile-bar-insta::before { content: ""; width: 15px; height: 15px; flex: none; border-radius: 4px; background: linear-gradient(135deg, #f9ce34 0%, #ee2a7b 45%, #6228d7 100%);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 2h10a5 5 0 0 1 5 5v10a5 5 0 0 1-5 5H7a5 5 0 0 1-5-5V7a5 5 0 0 1 5-5zm0 2a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3H7zm5 3.5a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9zm0 2a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM17.5 5.5a1 1 0 1 1 0 2 1 1 0 0 1 0-2z'/%3E%3C/svg%3E") center / contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 2h10a5 5 0 0 1 5 5v10a5 5 0 0 1-5 5H7a5 5 0 0 1-5-5V7a5 5 0 0 1 5-5zm0 2a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3H7zm5 3.5a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9zm0 2a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM17.5 5.5a1 1 0 1 1 0 2 1 1 0 0 1 0-2z'/%3E%3C/svg%3E") center / contain no-repeat; }
}

/* 2026-10-30: 理念ページのヒーロー。スマホでは顔が右端で切れていたので、写真を上・文章を下に分ける */
@media (max-width: 767px) {
  .al-hero--stack { flex-direction: column; align-items: stretch; }
  .al-hero--stack .al-hero-bg { position: relative; inset: auto; height: 260px; object-position: 72% 30%; }
  .al-hero--stack::after { display: none; }
  .al-hero--stack .al-hero-inner { padding-top: 28px; }
}

/* ============================================================
   2026-10-30: LINEの相談ボタンを「LINEだと一目で分かる」緑＋アイコンに
   （年内はLINE友だち登録が主目的のため。PC・スマホとも）
   元に戻すときは、このブロックを丸ごと削除する
   ============================================================ */
:root {
  --line-green: #05843C;        /* LINEの緑を締めて白文字を読みやすく（2026-11-06 #06A54B→#05843C、白文字とのコントラスト4.8:1） */
  --line-green-hover: #047A37;
  --line-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M12 2.6C6.2 2.6 1.6 6.4 1.6 11.1c0 4.2 3.7 7.7 8.7 8.4.3.1.8.2.9.5.1.3.1.7 0 1l-.1.9c0 .3-.2 1 .9.6 1.1-.5 6-3.5 8.2-6.1 1.5-1.6 2.2-3.3 2.2-5.3 0-4.7-4.6-8.5-10.4-8.5z'/%3E%3Ctext x='12' y='13.4' text-anchor='middle' font-family='Arial,Helvetica,sans-serif' font-size='5.6' font-weight='900' fill='%2305843C'%3ELINE%3C/text%3E%3C/svg%3E");
}
a.btn-primary[data-cta="consult"], .mobile-bar .mobile-bar-cta, .side-rail .side-rail-cta {
  background: var(--line-green) !important; color: #fff !important;
}
a.btn-primary[data-cta="consult"] { box-shadow: 0 8px 22px -12px rgba(6,120,60,.55); display: inline-flex; align-items: center; justify-content: center; gap: .5em; }
a.btn-primary[data-cta="consult"]:hover, .mobile-bar .mobile-bar-cta:active, .side-rail .side-rail-cta:hover { background: var(--line-green-hover) !important; }
a.btn-primary[data-cta="consult"]::before, .mobile-bar .mobile-bar-cta::before, .side-rail .side-rail-cta::before {
  content: ""; flex: none; width: 1.55em; height: 1.55em; background: var(--line-icon) center / contain no-repeat;
}
.mobile-bar .mobile-bar-cta { display: flex; align-items: center; justify-content: center; gap: 6px; font-size: 14px; }
.side-rail .side-rail-cta svg { display: none; }
.side-rail .side-rail-cta::before { width: 30px; height: 30px; }

/* ============================================================
   2026-10-30: 矯正の種類まわりの見直し（動画レビュー）
   ============================================================ */
/* 見出しの最後の1〜2文字だけが次の行に落ちないように */
h1, h2, h3, .section-title { text-wrap: balance; }
/* 装置カードは、写真や見出しを押してもページへ進めるように（カード全体をリンクに） */
.menu-card { position: relative; }
.menu-card-body a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
/* 装置名の横の小さな写真（矯正の種類・装置の比較） */
.dev-h { display: flex; align-items: center; gap: 12px; }
.dev-h img { width: 52px; height: 52px; flex: none; border-radius: 50%; object-fit: cover; border: 2px solid #E6EFD8; }
.cmp-table a.cmp-dev { display: inline-flex; align-items: center; gap: 10px; color: inherit; }
.cmp-table a.cmp-dev img { width: 44px; height: 44px; flex: none; border-radius: 50%; object-fit: cover; border: 2px solid rgba(255,255,255,.7); }
@media (max-width: 767px) { .cmp-table a.cmp-dev img { width: 40px; height: 40px; } }

/* 2026-10-30: 料金ページ（ページ内ジャンプ・医療費控除の早見表） */
.price-jump { max-width: 1000px; margin: 8px auto 0; padding: 0 20px; display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.price-jump a { padding: 8px 14px; border: 1px solid var(--teal); border-radius: 999px; background: #fff; color: var(--teal); font-weight: 700; font-size: 13.5px; }
.price-jump a:hover { background: var(--teal); color: var(--base); }
.ded-table-wrap { margin: 18px 0; }
.ded-table-title { font-weight: 700; color: var(--teal); margin: 0 0 8px; }
.ded-table { width: 100%; border-collapse: collapse; background: #fff; font-size: 13px; }
.ded-table th, .ded-table td { border: 1px solid var(--greige); padding: 8px 6px; text-align: center; }
.ded-table thead th { background: #E6EFD8; color: var(--teal); font-weight: 700; line-height: 1.4; }
.ded-table thead th small { display: block; font-weight: 500; color: var(--ink-soft); font-size: 11px; }
.ded-table tbody th { background: var(--offwhite); white-space: nowrap; }
.ded-table-note { font-size: 12px; color: var(--ink-muted); margin: 8px 0 0; line-height: 1.7; }
@media (max-width: 767px) {
  .price-jump { padding: 0 16px; gap: 6px; }
  .price-jump a { font-size: 12.5px; padding: 7px 12px; }
  .ded-table { font-size: 11.5px; }
  .ded-table th, .ded-table td { padding: 6px 3px; }
}
@media (max-width: 767px) {   /* 料金表（ワイヤー）の右端が5pxはみ出していたため */
  .price-full-table { table-layout: fixed; max-width: 100%; }
  .price-full-table th, .price-full-table td { overflow-wrap: anywhere; }
}
.ded-table-cap { font-size: 12px; color: var(--ink-soft); margin: 0 0 6px; }
.ded-table td { white-space: nowrap; }
.menu-combo-note { max-width: 760px; margin: 28px auto 0; padding: 14px 18px; background: #F3F7EA; border-radius: 14px; font-size: 14px; line-height: 1.8; text-align: center; }
@media (max-width: 767px) { .menu-combo-note { margin: 22px 16px 0; font-size: 13.5px; text-align: left; } }

/* 2026-10-30: 大人の矯正（装置の写真）・治療期間の例（治療後の写真） */
.wl-devs { display: inline-flex; gap: 4px; vertical-align: middle; margin-right: 8px; }
.wl-dev { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; border: 2px solid #E6EFD8; }
.period-cases { list-style: none; padding: 0; display: grid; gap: 12px; }
.period-cases li.period-case { display: flex; align-items: center; gap: 14px; background: #fff; border-radius: 14px; padding: 10px 14px 10px 10px; }
.period-cases li.period-case::before { display: none; }
.period-case-img { flex: none; }
.period-case-img img { display: block; width: 96px; height: 72px; object-fit: cover; border-radius: 10px; }
@media (max-width: 767px) { .period-case-img img { width: 84px; height: 63px; } .period-cases li.period-case { font-size: 13.5px; } }
.wl-ans { display: block; text-align: left; }
.wl-devs, .wl-dev { flex: none; }
.wl-devs { display: flex; margin: 0 0 6px; }
@media (max-width: 767px) { .cmp-table td .wl-ans { flex: 1; text-align: right; } .wl-devs { justify-content: flex-end; } }
.period-case-img { position: relative; }
.period-case-badge { position: absolute; left: 6px; top: 6px; background: rgba(0,0,0,.55); color: #fff; font-size: 10.5px; font-weight: 700; padding: 2px 7px; border-radius: 999px; line-height: 1.5; }
.child-dev-more { max-width: 900px; margin: 22px auto 0; padding: 16px 20px; background: #fff; border-radius: 14px; list-style: none; display: grid; gap: 8px; font-size: 14px; line-height: 1.8; }
.child-dev-more b { color: var(--teal); }

/* 2026-10-30: 初診相談（院長のひとこと・スキャナーの写真） */
.cns-doctor-wrap { padding-top: 40px; padding-bottom: 8px; }
.cns-doctor { max-width: 760px; margin: 0 auto; display: flex; align-items: center; gap: 20px; background: #fff; border-radius: 18px; padding: 18px 22px; box-shadow: 0 10px 28px -20px rgba(31,95,91,.35); }
.cns-doctor img { width: 96px; height: 96px; flex: none; border-radius: 50%; object-fit: cover; }
.cns-doctor p { margin: 0; font-size: 14.5px; line-height: 1.85; }
.cns-doctor .cns-doctor-lead { font-family: var(--serif); font-weight: 700; color: var(--teal); font-size: 18px; margin-bottom: 4px; }
.cns-fig { margin: 12px 0 0; }
.cns-fig img { width: 100%; max-width: 420px; height: auto; border-radius: 12px; display: block; }
.cns-fig figcaption { font-size: 12px; color: var(--ink-muted); margin-top: 6px; }
@media (max-width: 767px) { .cns-doctor { margin: 0 16px; gap: 14px; padding: 14px 16px; } .cns-doctor img { width: 72px; height: 72px; } .cns-doctor .cns-doctor-lead { font-size: 16px; } }

/* 2026-10-30: コラム一覧。スマホで3列のまま縦に細長くなっていたので、1列の横長カードに */
@media (max-width: 900px) { .blog-grid { grid-template-columns: repeat(2, 1fr); gap: 18px; } }
@media (max-width: 600px) {
  .blog-grid { grid-template-columns: 1fr; gap: 12px; padding: 0 4px; }
  .blog-card { flex-direction: row; align-items: stretch; }
  .blog-card img.blog-thumb { width: 112px; aspect-ratio: 1 / 1; height: auto; border-radius: 0; }
  .blog-card-body { padding: 12px 14px; gap: 4px; min-width: 0; }
  .blog-card-body h3 { font-size: 14.5px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
  .blog-card-body p { font-size: 12.5px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
}
/* 2026-10-30: 症例ブログの途中経過の写真 */
.blog-fig { margin: 8px 0 24px; }
.blog-fig img { width: 100%; height: auto; border-radius: 10px; display: block; background: #111; }
.blog-fig figcaption { font-size: 12.5px; color: var(--ink-muted); text-align: center; margin-top: 6px; }

/* 2026-10-30: 症例ブログのカード。最初は治療前、カーソルを合わせると治療後に切り替わる（スマホは自動で切り替え） */
.blog-ba-thumb { position: relative; display: block; aspect-ratio: 16 / 10; overflow: hidden; background: #111; flex-shrink: 0; }
.blog-ba-thumb img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.blog-ba-thumb .ba-after { opacity: 0; transition: opacity .5s ease; }
.blog-ba-thumb .ba-tag { position: absolute; left: 8px; top: 8px; font-style: normal; font-size: 11px; font-weight: 700; color: #fff; background: rgba(0,0,0,.55); padding: 2px 8px; border-radius: 999px; transition: opacity .5s ease; }
.blog-ba-thumb .ba-tag--after { opacity: 0; background: var(--teal); }
.blog-card--ba:hover .ba-after, .blog-card--ba:focus-visible .ba-after, .blog-card--ba.is-after .ba-after,
.blog-card--ba:hover .ba-tag--after, .blog-card--ba:focus-visible .ba-tag--after, .blog-card--ba.is-after .ba-tag--after { opacity: 1; }
.blog-card--ba:hover .ba-tag--before, .blog-card--ba:focus-visible .ba-tag--before, .blog-card--ba.is-after .ba-tag--before { opacity: 0; }
@media (max-width: 600px) { .blog-ba-thumb { width: 112px; aspect-ratio: 1 / 1; } .blog-ba-thumb .ba-tag { font-size: 10px; left: 5px; top: 5px; padding: 1px 6px; } }
@media (prefers-reduced-motion: reduce) { .blog-ba-thumb .ba-after, .blog-ba-thumb .ba-tag { transition: none; } }
/* 症例ブログのカードは、スマホでも写真を大きく（写真が上・文章が下） */
@media (max-width: 600px) {
  .blog-card.blog-card--ba { flex-direction: column; }
  .blog-card--ba .blog-ba-thumb { width: 100%; aspect-ratio: 4 / 3; }
  .blog-card--ba .blog-ba-thumb .ba-tag { font-size: 11.5px; left: 10px; top: 10px; padding: 2px 9px; }
  .blog-card--ba .blog-card-body { padding: 14px 16px 16px; }
}

/* 2026-10-30: ヘッダーのロゴ。文字だけ1.2倍にした logo_header.png（絵の大きさは前と同じになる高さ） */
.header-logo img { height: 65px; }
@media (max-width: 1100px) { .header-logo img { height: 43px; } }
@media (min-width: 1101px) and (max-width: 1359px) { .header-logo img { height: 56px; } }  /* メニュー8項目＋LINEボタンが1行に収まる大きさ */

/* 2026-10-30: オープニングの枠(svg)が文字からずれることがあった。
   複製の<svg>だけ position が指定されておらず、文字の位置しだいで左上に寄っていたため、画像と同じく絶対配置にする */
.intro-stage svg.badge-frame { position: absolute; display: block; margin: 0; max-width: none; }
/* スマホ：症例の切り替えを写真のすぐ下に */
.cf-tabs.is-under { margin-top: 12px; margin-bottom: 4px; }
@media (max-width: 767px) { .cf-tabs.is-under .cf-tab { width: 104px; } .cf-tabs.is-under .cf-tab span { font-size: 11.5px; line-height: 1.45; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } }

/* 2026-10-30: LINE登録の案内（下から小さく出る） */
.line-nudge { position: fixed; z-index: 1300; left: 16px; bottom: 16px; width: 340px; max-width: calc(100vw - 32px); background: #fff; border-radius: 18px; padding: 16px 18px 18px; box-shadow: 0 16px 40px -14px rgba(18,48,40,.35); border: 1px solid #E6EFD8;
  transform: translateY(24px); opacity: 0; transition: transform .35s cubic-bezier(.2,.8,.2,1), opacity .35s; pointer-events: none; }
.line-nudge.is-open { transform: none; opacity: 1; pointer-events: auto; }
.line-nudge-close { position: absolute; top: 6px; right: 8px; width: 36px; height: 36px; border: 0; background: none; font-size: 20px; line-height: 1; color: var(--ink-muted); cursor: pointer; }
.line-nudge-title { display: flex; align-items: center; gap: 8px; margin: 0 28px 6px 0; font-weight: 700; color: var(--line-green); font-size: 15.5px; }
.line-nudge-icon { width: 26px; height: 26px; border-radius: 7px; background: var(--line-green) var(--line-icon) center / 78% no-repeat; flex: none; }
.line-nudge-text { margin: 0 0 12px; font-size: 13.5px; line-height: 1.75; color: var(--ink); }
.line-nudge-btn { display: block; text-align: center; background: var(--line-green); color: #fff !important; font-weight: 700; border-radius: 999px; padding: 11px 16px; font-size: 14.5px; }
.line-nudge-btn:hover { background: var(--line-green-hover); }
@media (max-width: 767px) {
  .line-nudge { left: 12px; right: 12px; width: auto; max-width: none; bottom: calc(58px + env(safe-area-inset-bottom, 0px)); padding: 14px 16px 16px; }
}
@media (prefers-reduced-motion: reduce) { .line-nudge { transition: none; } }

/* ============================================================
   2026-10-30: スマホの読みやすさ（資料「スマホ向け統合設計論」の基準に合わせる）
   ★スマホ(767px以下)だけに効く。PCの見た目は変わらない
   元に戻すときは、このブロックを丸ごと削除する
   ============================================================ */
@media (max-width: 767px) {
  /* 1) 本文は16px・行間1.8。 main:is(main,#_) は、部品ごとの指定より優先させるための書き方（#_ は存在しないID） */
  main:is(main, #_) :is(p, li, dd, summary):not(.section-eyebrow, .price-note, .cns-note, .blog-todo, .al-hero-note, .cf-note,
      .case-page-note, .reason-note, .ba-note, .cta-reply, .ded-table-note, .ded-table-cap, .related-links-note, .cd-photo-note,
      .pre-open-note, .blog-note, .cmp-note, .stats-note, .hero-note, .notice-verify, .cmp-legend, .cf-tag, .phase-label, .aud-badge,
      .page-head-lead, .ded-table-title, .cf-risk):not(.cf-tabs *, .cmp-table *, .ded-table *, .flow-grid *, .blog-card *, .side-nav *, .breadcrumb *,
      .cx-filter *, .cx-tile *, .mini-cta *, .symptom-links *, .trust-bar *, .stats *, .price-jump *, .menu-card *, .footer *,
      .cd-steps *, .author-box *, .case-meta *, .case-disclosure *, .cal *, .hours *, .badge-stack *, .hero-h1-write *) {
    font-size: 16px; line-height: 1.8;
  }
  main:is(main, #_) .page-head-lead { font-size: 16px; line-height: 1.85; }
  /* カードの中の説明文は、2列でも読める大きさに */
  main:is(main, #_) :is(.menu-card-body p, .blog-card-body p, .author-box-text, .case-meta li, .case-disclosure p) { font-size: 14.5px; line-height: 1.75; }
  /* 表は少しだけ大きく */
  main:is(main, #_) .price-full-table :is(th, td) { font-size: 15px; }
  main:is(main, #_) .cmp-table td { font-size: 14.5px; }
  /* 注記は13px未満にしない */
  main:is(main, #_) :is(.price-note, .cns-note, .blog-todo, .al-hero-note, .cf-note, .case-page-note, .reason-note, .ba-note,
      .cta-reply, .ded-table-note, .related-links-note, .cd-photo-note, .pre-open-note, .blog-note, .cmp-note, .hero-note) { font-size: 13.5px; line-height: 1.75; }
  main:is(main, #_) .section-eyebrow { font-size: 12.5px; }
  main:is(main, #_) .cf-tab span { font-size: 12.5px; }

  /* 3) 押す場所は高さ44px以上 */
  .breadcrumb a { display: inline-block; padding: 13px 2px; }
  .side-nav a, .footer-sitemap-grid a { display: flex; align-items: center; min-height: 44px; }
  main:is(main, #_) details > summary { padding-top: 12px; padding-bottom: 12px; }
  .cx-chip, .price-jump a, .symptom-more a { min-height: 44px; display: inline-flex; align-items: center; }
  .reason-link, .cf-more, .hero-cta .link-underline { display: inline-flex; align-items: center; min-height: 44px; }
  .cmp-table a.cmp-dev { min-height: 44px; }
}
.scroll-cue { position: fixed; left: 50%; bottom: calc(66px + env(safe-area-inset-bottom, 0px)); transform: translateX(-50%); z-index: 50; display: flex; flex-direction: column; align-items: center; gap: 2px;
  color: var(--teal); font-size: 11px; font-weight: 700; letter-spacing: .12em; opacity: 0; transition: opacity .4s; pointer-events: none; }
.scroll-cue.is-on { opacity: .85; }
.scroll-cue i { width: 12px; height: 12px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); animation: cueBob 1.6s ease-in-out infinite; }
@keyframes cueBob { 0%, 100% { translate: 0 -2px; } 50% { translate: 0 4px; } }
@media (prefers-reduced-motion: reduce) { .scroll-cue i { animation: none; } }
/* 見出しを文節で折り返す（対応しているブラウザだけ。「矯／正」のような切れ方を防ぐ） */
h1, h2, h3, .section-title { word-break: auto-phrase; }
.scroll-cue { background: rgba(250,248,244,.94); padding: 5px 14px 7px; border-radius: 999px; box-shadow: 0 4px 14px -6px rgba(31,95,91,.35); }
.scroll-cue.is-on { opacity: 1; }
/* 言葉の切れ目(<wbr>)でだけ折り返す。1つの言葉が長すぎるときだけ途中で折り返す */
.bx .bxp { display: inline-block; }   /* かたまりの間でだけ折り返す（長すぎるかたまりは中で折り返す） */

/* ============================================================
   2026-10-30: スマホのトップの並び替え・メニュー6項目
   ★並びは index.html の順番そのもの（PC・スマホ共通）。「選ばれる理由」を3つに縮めるのは767px以下だけ。メニューは縦に開く1100px以下だけ
   元に戻すときは、このブロックを丸ごと削除する
   ============================================================ */
@media (max-width: 767px) {
  /* 選ばれる理由：最初の3つだけ見せる（残りはボタンで開く。文章はページの中に残る） */
  #reason .reason-grid.is-short .reason-item:nth-child(n+4) { display: none; }
  .reason-toggle { display: block; margin: 18px auto 0; min-height: 44px; padding: 0 22px; border: 1px solid var(--teal); border-radius: 999px; background: #fff; color: var(--teal); font-weight: 700; font-size: 14.5px; }
}
.reason-toggle { display: none; }

/* メニュー（スマホ・タブレット）：6項目＋いちばん上にLINE */
.nav-sp-line, .nav-sp-only { display: none; }
@media (max-width: 1100px) {
  .header-nav.is-open .nav-sp-line { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 8px 16px 10px; min-height: 48px; border: 0 !important; border-radius: 999px;
    background: var(--line-green); color: #fff !important; font-weight: 700; font-size: 15.5px; order: 0; }
  .header-nav.is-open .nav-sp-line::before { content: ""; width: 1.5em; height: 1.5em; background: var(--line-icon) center / contain no-repeat; }
  .header-nav.is-open .nav-sp-only { display: block; }
  .header-nav.is-open [data-nav="adult"], .header-nav.is-open [data-nav="child"] { display: none; }
  .header-nav.is-open [data-nav="menu"] { order: 1; }
  .header-nav.is-open [data-nav="case"] { order: 2; }
  .header-nav.is-open [data-nav="price"] { order: 3; }
  .header-nav.is-open [data-nav="first"] { order: 4; }
  .header-nav.is-open [data-nav="about"] { order: 5; }
  .header-nav.is-open [data-nav="blog"] { order: 6; }
}

/* 2026-10-30: トップの並びを PC・スマホ共通で変えた（index.html の順番そのもの）。背景はベージュ／クリームの交互に
   ・相談カード(cns-banner)は写真帯に重なる演出なので、写真帯はすぐ下
   ・シミュレーションは上下に波(ベージュ)があるので、クリームの段(院長・治療の流れ)の間に置く
   ・費用・よくある不安・よくある質問は後半（価値を見てもらってから）、その後にアクセス */
:root { --sp-cream: #FCFAF6; --sp-beige: #F3EFE8; }
.home main#main > :is(#case, #reason, #simulation, #treatment, #worry, #access, #blog-teaser) { background-color: var(--sp-beige); }
.home main#main > :is(.audience-split, #doctor, #flow, #symptoms, #price, #faq, #area, #instagram) { background-color: var(--sp-cream); }
/* オープニング：文字＋枠をまとめて複製した箱。中の重なりはページと同じ(.badge-stack の指定)のまま */
.intro-stage .badge-stack { position: absolute; margin: 0; max-width: none; aspect-ratio: auto; }
.intro-stage .badge-stack .badge-text { position: static; width: 100%; height: 100%; }
@media (max-width: 767px) { #reason .reason-toggle { display: block; } }   /* PC用の非表示指定より後ろ・強めにして、スマホで必ず出す */
/* 2026-10-30: トップの症例は短く（装置・期間・費用＋主なリスク）。くわしくは症例ページ */
.cf-summary { margin: 14px 0 6px; font-size: 15.5px; font-weight: 700; color: var(--ink); line-height: 1.7; }
.cf-summary .sep { color: var(--ink-muted); margin: 0 2px; font-weight: 400; }
.cf-risk { margin: 0 0 16px; font-size: 13px; line-height: 1.75; color: var(--ink-muted); }
@media (max-width: 767px) { main:is(main, #_) .cf-risk { font-size: 13.5px; line-height: 1.75; } }
.cf-risk-gap { display: inline-block; width: 1em; }
/* 2026-10-30: トップの料金の表。スマホは装置名と金額を上下に（装置名が細かく折り返していたため） */
@media (max-width: 767px) {
  .price-table > div { grid-template-columns: 1fr; gap: 2px; }
  .price-table dd { font-size: 17px; }
}
/* 10/30 装置カードは写真を含めカード全体を押せるように（下の「〜を見る」リンクを全面に広げる。※注記リンクは前面に残す） */
.menu-card { position: relative; }
.menu-card-body > a:last-child::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.menu-card .notice-mark { position: relative; z-index: 2; }
/* 10/30 治療の流れの各ステップのページ（精密検査・診断・保定）：前後のステップへの案内 */
.flow-pager { max-width: 880px; margin: 0 auto; padding-top: 24px; }
.flow-pager-head { text-align: center; font-family: var(--serif); color: var(--teal); font-weight: 700; font-size: 18px; margin: 0 0 14px; }
.flow-pager-steps { list-style: none; display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; margin: 0 0 18px; padding: 0; counter-reset: none; }
.flow-pager-steps a { display: flex; flex-direction: column; align-items: center; gap: 2px; min-height: 44px; padding: 10px 4px; border-radius: 12px; background: #fff; border: 1px solid var(--greige); color: var(--teal); font-family: var(--serif); font-weight: 700; font-size: 14px; text-align: center; text-decoration: none; }
.flow-pager-steps a span { font-family: var(--sans, inherit); font-size: 12px; line-height: 1.35; color: var(--ink-soft); font-weight: 700; }
.flow-pager-steps [aria-current] a { background: var(--teal); border-color: var(--teal); color: #fff; }
.flow-pager-steps [aria-current] a span { color: #fff; }
.flow-pager-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.flow-pager-nav a { display: flex; flex-direction: column; gap: 2px; min-height: 44px; padding: 14px 18px; border-radius: 14px; background: #fff; border: 1px solid var(--greige); color: var(--teal); text-decoration: none; }
.flow-pager-nav a b { font-size: 15.5px; }
.flow-pager-lab { font-size: 12.5px; color: var(--gold-ink, #8a6a3e); font-weight: 700; }
.flow-pager-next { text-align: right; align-items: flex-end; }
@media (max-width: 767px) {
  .flow-pager-steps { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 4px; }
  .flow-pager-steps a { padding: 8px 2px; font-size: 13px; }
  .flow-pager-steps a span { font-size: 10.5px; }
}
.flow-pager-steps li { display: flex; } .flow-pager-steps li > a { flex: 1; }
/* 10/30 本文中のリンクが見えなかったので、文章の中のリンクだけ色と下線をつける（ボタン・カードなどクラス付きのリンクは対象外） */
:where(main) :where(p:not([class]), li:not([class]), td, dd) > a:where(:not([class])),
:where(main) :where(p:not([class]), li:not([class]), td, dd) > b > a:where(:not([class])) { color: var(--teal); font-weight: 700; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; text-decoration-color: rgba(31, 95, 91, .45); }
:where(main) :where(p:not([class]), li:not([class]), td, dd) > a:where(:not([class])):hover { text-decoration-color: currentColor; }
/* 10/30 トップの費用：幅で表示。いちばん安い金額が何の料金かを小さく添える */
.price-table dt .price-sub { display: block; margin-top: 2px; font-size: 12.5px; color: var(--ink-muted); line-height: 1.5; }
.price-table > div { align-items: center; }
@media (max-width: 767px) { .price-table dd { font-size: 16px; line-height: 1.5; } .price-table dt .price-sub { font-size: 13px; } }
.price-table dd > span { display: inline-block; }
/* 10/30 スマホのオープニング：幕なし・定位置で手書きが書き上がる。速さはPCの演出と同じ（約5.4秒）。
   <head>のJSが .fv-write-inplace（書く前の状態で待機）を付け、画像がそろったら .fv-go で書き始める */
.fv-write-inplace .hero-badge-img .badge-text, .fv-write-inplace .hero-h1-write .h1-l1, .fv-write-inplace .hero-h1-write .h1-l2 {
  -webkit-mask-image: linear-gradient(to right, #000 0%, #000 42%, rgba(0,0,0,.35) 52%, transparent 62%, transparent 100%);
          mask-image: linear-gradient(to right, #000 0%, #000 42%, rgba(0,0,0,.35) 52%, transparent 62%, transparent 100%);
  -webkit-mask-size: 240% 100%; mask-size: 240% 100%;
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
  -webkit-mask-position: 115% 0; mask-position: 115% 0;
}
.fv-write-inplace .hero-badge-img .badge-frame path { stroke-dasharray: 1 2; stroke-dashoffset: 1.02; }
/* 10/30 夕：約3.2秒に。小さな「千里丘・摂津市の矯正歯科」は書いている間は隠し、最後にふわっと出す */
.fv-go .hero-badge-img .badge-text { animation: writeInM 1.3s cubic-bezier(.55,.02,.42,1) .1s forwards; }
.fv-go .hero-h1-write .h1-l1 { animation: writeInM 1s cubic-bezier(.45,.05,.35,1) 1.15s forwards; }
.fv-go .hero-h1-write .h1-l2 { animation: writeInM 1s cubic-bezier(.45,.05,.35,1) 1.8s forwards; }
.fv-go .hero-badge-img .badge-frame path { animation: drawFrame .9s cubic-bezier(.4,.06,.35,1) 2.35s forwards; }
.fv-write-inplace .hero-h1-write .h1-kw { opacity: 0; }
.fv-go .hero-h1-write .h1-kw { animation: fvFadeIn .6s ease 2.6s forwards; }
@keyframes fvFadeIn { from { opacity: 0; } to { opacity: 1; } }
/* 書き始める前に左端がうっすら見えないよう、少し外側(115%)から始める */
@keyframes writeInM {
  from { -webkit-mask-position: 115% 0; mask-position: 115% 0; }
  to   { -webkit-mask-position: 0 0;    mask-position: 0 0; }
}
/* 10/30 PC：演出の幕をJSが出すまでのあいだ、同じ色の仮の幕で中身を隠す（2.5秒で必ず外れる） */
html.fv-intro-pending body::after { content: ""; position: fixed; inset: 0; background: var(--base); z-index: 9997; }
/* 10/30 医療機器の注記：見出しと最初の一文だけ見せ、詳細は折りたたむ（※から飛んできたときは自動で開く） */
.notice-more { margin-top: 14px; }
.notice-more > summary { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; cursor: pointer; list-style: none; color: var(--teal); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.notice-more > summary::-webkit-details-marker { display: none; }
.notice-more > summary::after { content: "＋"; font-weight: 700; text-decoration: none; }
.notice-more[open] > summary::after { content: "－"; }

/* ---------- 9. 診療カレンダー：スマホは1か月ずつ（タブで切替） ---------- */
.cal-tabs { display: none; }
@media (max-width: 767px) {
  [data-cal-tabs] + .cal-tabs, .cal-tabs { display: flex; justify-content: center; gap: 8px; margin: 0 0 12px; }
  .cal-tabs button { min-height: 44px; min-width: 120px; padding: 0 16px; border-radius: 999px; border: 1px solid var(--greige); background: #fff; color: #2E5847; font: inherit; font-weight: 700; font-size: 15px; cursor: pointer; }
  .cal-tabs button[aria-selected="true"] { background: #2E5847; border-color: #2E5847; color: #fff; }
  [data-cal-tabs].is-tabbed > :not(.is-shown) { display: none; }
}


/* 10/30 スマホ・タブレットのメニュー：若葉色の半透明（うしろが少し透ける）＋中央ぞろえ＋英字の小見出し */
@media (max-width: 1100px) {
  /* ヘッダーにぼかしがあるため fixed の基準がヘッダーになる。bottom:0 は使わず高さで指定する */
  .header-nav.is-open { height: calc(100vh - 64px); height: calc(100dvh - 64px); max-height: none !important; padding: 10px 0 calc(88px + env(safe-area-inset-bottom, 0px));
    background: rgba(86, 130, 98, .86); -webkit-backdrop-filter: blur(14px) saturate(1.15); backdrop-filter: blur(14px) saturate(1.15);
    border-bottom: 0; color: #fff; }
  .header-nav.is-open a { color: #fff; border-bottom: 1px solid rgba(255, 255, 255, .22); }
  .header-nav.is-open .nav-drop > a { position: relative; flex-direction: column; justify-content: center; align-items: center; text-align: center;
    min-height: 66px; padding: 10px 52px; font-size: 17px; font-weight: 700; letter-spacing: .06em; }
  .header-nav.is-open .nav-drop > a::before { order: 2; content: ""; margin-top: 2px; font-size: 11.5px; font-weight: 500; letter-spacing: .14em; color: rgba(255, 255, 255, .78); }
  .header-nav.is-open .nav-drop[data-nav="about"] > a::before { content: "ABOUT"; }
  .header-nav.is-open .nav-drop[data-nav="menu"] > a::before { content: "TREATMENT"; }
  .header-nav.is-open .nav-drop[data-nav="case"] > a::before { content: "CASE"; }
  .header-nav.is-open .nav-drop[data-nav="price"] > a::before { content: "PRICE"; }
  .header-nav.is-open .nav-drop[data-nav="adult"] > a::before { content: "ADULT"; }
  .header-nav.is-open .nav-drop[data-nav="child"] > a::before { content: "KIDS"; }
  .header-nav.is-open .nav-drop[data-nav="first"] > a::before { content: "FIRST VISIT"; }
  .header-nav.is-open .nav-drop[data-nav="blog"] > a::before { content: "COLUMN"; }
  .header-nav.is-open .nav-drop > a::after { position: absolute; right: 22px; top: 50%; transform: translateY(-50%); margin: 0; padding: 0; color: #fff; font-size: 18px; }
  .header-nav.is-open .nav-drop-menu { background: rgba(255, 255, 255, .10) !important; }
  .header-nav.is-open .nav-drop-menu a { color: rgba(255, 255, 255, .92) !important; text-align: center; padding-left: 24px !important; padding-right: 24px; font-size: 15px; border-bottom-color: rgba(255, 255, 255, .14); }
  .header-nav.is-open .nav-sp-line { margin: 10px 20px 14px; box-shadow: 0 0 0 2px rgba(255, 255, 255, .55); }
}
@media (min-width: 768px) and (max-width: 1100px) { .header-nav.is-open { height: calc(100vh - 84px); height: calc(100dvh - 84px); } }
/* メニューを開いている間：ヘッダー自身のぼかしを外す（入れ子のぼかしは効かないため）。AIチャットとスクロール案内も隠す */
@media (max-width: 1100px) {
  .site-header:has(.header-nav.is-open) { -webkit-backdrop-filter: none; backdrop-filter: none; }
  body:has(.header-nav.is-open) :is(.dchat-launch, .scroll-cue, .line-nudge) { opacity: 0; visibility: hidden; pointer-events: none; }
}
/* 10/30 メニューの動き：パッと切り替えず、短い時間(0.2〜0.3秒)ですっと出す */
@media (max-width: 1100px) {
  .header-nav.is-open { animation: navIn .22s ease-out both; }
  .header-nav.is-open .nav-drop.is-expanded > .nav-drop-menu { animation: navSubIn .28s cubic-bezier(.2,.7,.3,1) both; transform-origin: top; }
  .header-nav.is-open .nav-drop > a::after { transition: transform .25s ease; }
  .header-nav.is-open .nav-drop.is-expanded > a::after { transform: translateY(-50%) rotate(180deg); }
}
@keyframes navIn { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }
@keyframes navSubIn { from { opacity: 0; clip-path: inset(0 0 100% 0); transform: translateY(-6px); } to { opacity: 1; clip-path: inset(0 0 0 0); transform: none; } }
@media (prefers-reduced-motion: reduce) { .header-nav.is-open, .header-nav.is-open .nav-drop.is-expanded > .nav-drop-menu { animation: none; } }
/* 閉じるときの動き（JSが .is-closing / .is-collapsing を付けて0.2秒後に閉じる） */
@media (max-width: 1100px) {
  .header-nav.is-open.is-closing { animation: navOut .2s ease-in both; }
  .header-nav.is-open .nav-drop.is-expanded.is-collapsing > .nav-drop-menu { animation: navSubOut .18s ease-in both; }
  .header-nav.is-open .nav-drop.is-expanded.is-collapsing > a::after { transform: translateY(-50%) rotate(0deg); }
}
@keyframes navOut { from { opacity: 1; transform: none; } to { opacity: 0; transform: translateY(-8px); } }
@keyframes navSubOut { from { opacity: 1; clip-path: inset(0 0 0 0); } to { opacity: 0; clip-path: inset(0 0 100% 0); transform: translateY(-4px); } }
/* 10/30 症例一覧のカード：最初は治療前、マウスを乗せると治療後（コラムのカードと同じ向き） */
.cx-before { opacity: 1; }
.cx-tile:hover .cx-before, .cx-tile:focus-visible .cx-before { opacity: 0; }
.cx-flag { background: rgba(0,0,0,.55); }
.cx-flag::after { content: "治療前"; }
.cx-tile:hover .cx-flag, .cx-tile:focus-visible .cx-flag { background: rgba(46,88,71,.88); }
.cx-tile:hover .cx-flag::after, .cx-tile:focus-visible .cx-flag::after { content: "治療後"; }

/* 2026-10-31 症例スライダー：写真全体で指を追う（JS）。見えない入力欄はキーボード操作用だけに残す */
.ba-slider { cursor: ew-resize; -webkit-touch-callout: none; }
.ba-slider .ba-range { pointer-events: none; }
/* 端(治療前100%/治療後0%)でも、つまみの丸が半分欠けないように内側へ寄せる */
.ba-slider .ba-handle span { transform: translate(calc(-50% - (var(--p, 50) - 50) * .48px), -50%); }

/* 2026-10-31 iPhone SE で見切れていたところ */
@media (max-width: 767px) {
  /* 料金表：見出しが1行のまま右にはみ出し、説明(small)が切れていた */
  .cmp-table tbody th[scope="row"] { white-space: normal; }
  .cmp-table tbody th[scope="row"] small { display: block; margin-top: 4px; font-family: var(--sans, inherit); font-weight: 400; font-size: 13px; line-height: 1.6; opacity: .92; }
  /* ヘッダー：幅320pxで「≡」が押しつぶされて画面の外へ出ていた */
  .nav-toggle { flex-shrink: 0; }
}
@media (max-width: 374px) {
  /* 幅320px(初代iPhone SE)：ロゴを少し縮めて「≡」と並べる */
  .site-header { padding: 0 12px; gap: 8px; }
  .header-brand { flex-shrink: 1; min-width: 0; }
  .header-brand img { max-width: 100%; height: auto; }
}
@media (max-width: 900px) {
  /* トップの写真：「横16:縦10」と「高さ260px以上」が両立せず、幅416pxより狭いスマホで写真が右にはみ出し、
     「夜8時まで」のバッジが切れていた。幅は画面に合わせ、高さだけ260pxを守る */
  .hero-split .hero-photo { width: 100%; min-width: 0; aspect-ratio: auto; height: max(260px, 62.5vw); }
}

/* 2026-10-31 症例スライダー：「この症例をくわしく見る」の横に、症例一覧へのリンク */
.cf-links { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 22px; margin-top: 18px; }
.cf-links .cf-more { margin-top: 0; }
.cf-all { display: inline-flex; align-items: center; min-height: 44px; font-weight: 700; color: var(--teal); text-decoration: underline; text-underline-offset: 4px; text-decoration-color: rgba(46,88,71,.35); }
.cf-all:hover { text-decoration-color: currentColor; }

/* ===== 子どもの矯正で使う装置（child/devices/）2026-10-31 ===== */
.dv-lead { max-width: 760px; margin: 0 auto 26px; text-align: center; }
.dv-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 22px; max-width: 1080px; margin: 0 auto; }
.dv-card { background: #fff; border: 1px solid var(--greige); border-radius: 22px; overflow: hidden; display: flex; flex-direction: column; }
.dv-card > img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.dv-body { padding: 18px 20px 20px; display: flex; flex-direction: column; gap: 10px; }
.dv-name { margin: 0; font-family: var(--serif); font-size: 19px; color: var(--teal); line-height: 1.4; }
.dv-name span { display: block; font-family: inherit; font-size: 13px; font-weight: 700; color: var(--ink-muted); margin-top: 2px; }
.dv-card--noimg .dv-name { padding-top: 4px; border-top: 4px solid #EAF1DC; }
.dv-role { margin: 0; font-size: 15px; line-height: 1.8; }
.dv-meta { margin: 0; display: grid; gap: 6px; background: #F7F4EE; border-radius: 14px; padding: 12px 14px; }
.dv-meta div { display: grid; grid-template-columns: 6.5em 1fr; gap: 8px; font-size: 14px; line-height: 1.65; }
.dv-meta dt { font-weight: 700; color: var(--teal); }
.dv-meta dd { margin: 0; }
.dv-cases-h { margin: 4px 0 4px; font-size: 13px; font-weight: 700; color: #8A6A3E; }
.dv-cases ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.dv-cases a { display: inline-flex; align-items: center; min-height: 36px; font-size: 14.5px; font-weight: 700; color: var(--teal); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(46,88,71,.35); }
.dv-flows { list-style: none; margin: 0 auto; padding: 0; max-width: 900px; display: grid; gap: 14px; }
.dv-flow { background: #fff; border: 1px solid var(--greige); border-radius: 18px; padding: 16px 20px; }
.dv-flow-h { margin: 0 0 8px; font-weight: 700; color: var(--teal); }
.dv-flow ol { list-style: none; margin: 0 0 6px; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.dv-flow ol li { background: #EAF1DC; border-radius: 999px; padding: 4px 12px; font-size: 14px; font-weight: 700; color: #2E5847; }
.dv-flow ol li + li::before { content: "→"; margin: 0 8px 0 -2px; color: #8A6A3E; }
.dv-flow > a { display: inline-flex; align-items: center; min-height: 40px; font-size: 14.5px; font-weight: 700; color: var(--teal); }
.dv-price { width: 100%; max-width: 820px; margin: 0 auto; border-collapse: collapse; background: #fff; border-radius: 16px; overflow: hidden; }
.dv-price th, .dv-price td { padding: 14px 16px; border-bottom: 1px solid var(--greige); text-align: left; vertical-align: middle; }
.dv-price th { font-weight: 700; color: var(--teal); }
.dv-price small { display: block; font-size: 13px; font-weight: 400; color: var(--ink-muted); margin-top: 2px; }
.dv-price td { white-space: nowrap; font-weight: 700; }
@media (max-width: 600px) {
  .dv-grid { grid-template-columns: 1fr; }
  .dv-price td { white-space: normal; }
  .dv-meta div { grid-template-columns: 1fr; gap: 0; }
}
.section-more { text-align: center; margin: 18px 0 0; }
.section-more a { display: inline-block; padding: 10px 0; font-weight: 700; }

/* 2026-11-01 症例の切り替えタブ：ふだんは治療前、カーソルを合わせると治療後 */
.cf-tab .cf-thumb { position: relative; display: block; margin-top: 0; }
.cf-tab img.cf-th-a { position: absolute; inset: 0; height: 100%; opacity: 0; transition: opacity .3s ease; }
.cf-tab:hover img.cf-th-a, .cf-tab:focus-visible img.cf-th-a { opacity: 1; }
@media (prefers-reduced-motion: reduce) { .cf-tab img.cf-th-a { transition: none; } }
/* 2026-11-05 大人の矯正ページ：症例のすぐ後に「歯並びから・装置から選ぶ」（スマホだけ。PCは左のメニューに同じリンクがある） */
.adult-pick { display: none; }
.adult-pick .section-title { font-size: 19px; margin-bottom: 14px; }
.ap-tiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.ap-tile { display: flex; flex-direction: column; align-items: center; gap: 4px; background: #fff; border: 1px solid #DCE7C6; border-radius: 18px 14px 20px 14px; padding: 8px 4px 10px; color: var(--teal); font-weight: 700; font-size: 13px; text-align: center; text-decoration: none; }
.ap-tile img { width: 100%; aspect-ratio: 4 / 3; object-fit: contain; }
.ap-tile span { white-space: nowrap; font-size: 12.5px; letter-spacing: -.02em; }
.ap-more { margin: 12px 0 0; font-size: 13px; color: var(--ink-muted); line-height: 2.2; }
.ap-more a { display: inline-block; margin: 0 6px 0 0; padding: 2px 12px; background: #EEF4E2; border-radius: 999px; color: var(--teal); font-weight: 700; text-decoration: none; }
.dev-pick { margin-top: 30px; }
.dev-pick ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.dev-pick li a { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 14px 8px 16px; background: #EEF4E2; border-radius: 26px 22px 28px 20px; text-decoration: none; color: var(--ink); height: 100%; box-sizing: border-box; }
.dev-pick img { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; background: #fff; }
.dev-pick .dp-name { font-weight: 700; font-size: 14.5px; color: var(--teal); margin-top: 4px; }
.dev-pick .dp-sub { font-size: 12px; color: var(--ink-muted); text-align: center; line-height: 1.5; }
.dev-pick-more { text-align: center; margin: 14px 0 0; font-size: 14px; font-weight: 700; }
.dev-pick-more a { color: var(--gold-ink); }
@media (max-width: 767px) { .adult-pick { display: block; } }
/* 費用のすぐ後の小さなLINE案内 */
.mid-cta { margin: 22px 0 0; text-align: center; }
.mid-cta .cta-reply { font-size: 12.5px; color: var(--ink-muted); margin: 8px 0 0; }
/* 年代別のご相談は、押すと開く */
.age-acc { margin: 0 0 14px; }
.age-acc > summary { cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: 8px; padding: 10px 18px; background: #EEF4E2; border-radius: 999px; color: var(--teal); font-weight: 700; font-size: 14px; }
.age-acc > summary::-webkit-details-marker { display: none; }
.age-acc > summary::after { content: "＋"; font-weight: 700; }
.age-acc[open] > summary::after { content: "－"; }
.age-acc[open] > .age-cards { margin-top: 16px; }
.lead-box.one-doctor { margin-top: 22px; }
/* 2026-11-05 スマホでページが長すぎる（装置のページで30画面）→ 余白と写真を詰める */
@media (max-width: 767px) {
  .section { padding-top: 48px; padding-bottom: 48px; }
  .al-benefits { gap: 12px; }
  .al-benefit { display: grid; grid-template-columns: 104px 1fr; align-items: stretch; }
  .al-benefit img { height: 100%; min-height: 110px; aspect-ratio: auto; }
  .al-benefit-body { padding: 12px 14px; }
  .al-benefit-body h3 { font-size: 15px; margin-bottom: 4px; }
  .al-benefit-body p { font-size: 13px; line-height: 1.7; }
  .al-figure img, .al-neutral > img { max-height: 210px; object-fit: cover; }
}
/* 2026-11-05 長い説明は「くわしく読む」「ほかの質問を見る」で畳む */
details.more { margin: 18px 0 0; }
details.more > summary { cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: 8px; padding: 9px 18px; background: #EEF4E2; border-radius: 999px; color: var(--teal); font-weight: 700; font-size: 14px; }
details.more > summary::-webkit-details-marker { display: none; }
details.more > summary::after { content: "＋"; }
details.more[open] > summary::after { content: "－"; }
details.more[open] > summary { margin-bottom: 8px; }
.faq-inner details.more { border: 0; background: none; padding: 0; }
.faq-inner details.more > summary { margin: 6px auto 0; }
/* 2026-11-05 子どもの矯正ページの装置一覧（スマホ2列・PC3列） */
.child-dev-pick { margin-top: 0; }
@media (min-width: 768px) { .child-dev-pick ul { grid-template-columns: repeat(3, 1fr); max-width: 900px; margin: 0 auto; } }

/* 2026-11-05 土曜の診療時間（9:00〜18:00）：表の▲ */
.hours td.sat { vertical-align: middle; }

/* ============================================================
   2026-11-06 症例：治療前と治療後を「並べて」見せる（スライダーをやめる）
   トップ・歯並び/装置ページの症例欄・症例ページの最初の写真・症例一覧のタイル
   ============================================================ */
.ba-pair { position: relative; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.ba-side { position: relative; margin: 0; aspect-ratio: 4 / 3; border-radius: 20px 20px 22px 18px / 18px 22px 20px 20px; overflow: hidden; background: #111; }
.ba-side:last-of-type { box-shadow: 12px 14px 0 var(--blob-sage); }
.ba-pair .ba-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; display: block; }
.ba-pair .ba-after { clip-path: none; }
.ba-pair .ba-label { top: 10px; left: 10px; right: auto; font-size: 12px; padding: 3px 11px; }
.ba-pair .ba-label--before { background: rgba(0,0,0,.5); }
.ba-arrow { position: absolute; z-index: 2; top: 50%; left: 50%; width: 38px; height: 38px; transform: translate(-50%, -50%); border-radius: 52% 48% 45% 55% / 55% 45% 55% 45%; background: #fff; box-shadow: 0 4px 14px rgba(0,0,0,.25); pointer-events: none; }
.ba-arrow::after { content: ""; position: absolute; top: 50%; left: 52%; width: 9px; height: 9px; border-top: 2.5px solid var(--teal); border-right: 2.5px solid var(--teal); transform: translate(-65%, -50%) rotate(45deg); }
@media (max-width: 767px) {
  .ba-pair { gap: 6px; }
  .ba-side { border-radius: 12px 12px 14px 11px / 11px 14px 12px 12px; }
  .ba-side:last-of-type { box-shadow: 6px 8px 0 var(--blob-sage); }
  .ba-pair .ba-label { top: 6px; left: 6px; font-size: 10.5px; padding: 2px 8px; letter-spacing: .04em; }
  .ba-arrow { width: 28px; height: 28px; }
  .ba-arrow::after { width: 7px; height: 7px; border-width: 2px; }
  /* 症例ページの最初の写真は、スマホでは上下に大きく（上：治療前／下：治療後） */
  .case-feature--detail .ba-pair { grid-template-columns: 1fr; gap: 10px; }
  .case-feature--detail .ba-arrow::after { transform: translate(-50%, -75%) rotate(135deg); left: 50%; }
  .case-feature--detail .ba-pair .ba-label { top: 10px; left: 10px; font-size: 12px; padding: 3px 11px; }
}
/* 症例一覧のタイル：左に治療前・右に治療後（マウスを乗せなくても分かるように） */
.cx-grid { grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); }
.cx-grid--3 { grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); }
.cx-img { aspect-ratio: 8 / 3; }
.cx-img img { width: calc(50% - 2px); transition: none; }
.cx-img .cx-before, .cx-tile:hover .cx-before, .cx-tile:focus-visible .cx-before { left: 0; right: auto; opacity: 1; }
.cx-img .cx-after { left: auto; right: 0; opacity: 1; }
.cx-img { background: #fff; }
.cx-img img { background: #111; }
.cx-flag, .cx-tile:hover .cx-flag, .cx-tile:focus-visible .cx-flag { background: rgba(0,0,0,.5); }
.cx-flag::after, .cx-tile:hover .cx-flag::after, .cx-tile:focus-visible .cx-flag::after { content: "治療前"; }
.cx-img::after { content: "治療後"; position: absolute; top: 10px; left: calc(50% + 10px); font-size: 11.5px; font-weight: 700; color: #fff; background: rgba(46,88,71,.88); padding: 3px 10px; border-radius: 999px; }
@media (max-width: 767px) {
  .cx-grid, .cx-grid--3 { grid-template-columns: 1fr; gap: 20px; }
}

/* 2026-11-06 初診相談の予約完了ページ（/counseling/thanks/） */
.bk-thanks { text-align: center; }
.bk-info { max-width: 1040px; margin: 0 auto; padding-top: 8px; }
.bk-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.bk-card { background: #EEF4DF; padding: 26px 24px; border-radius: 30px 24px 34px 22px / 24px 32px 22px 30px; }
.bk-card h2 { font-family: var(--serif); font-size: 18px; color: var(--teal); margin: 0 0 12px; }
.bk-card ol { margin: 0; padding-left: 1.3em; font-size: 14.5px; line-height: 1.8; }
.bk-card p { font-size: 14.5px; line-height: 1.8; margin: 0 0 8px; }
.bk-note { font-size: 13px !important; color: var(--ink-muted); margin-top: 10px !important; }
.bk-btns { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin: 32px 0 0; }
@media (max-width: 899px) { .bk-cards { grid-template-columns: 1fr; gap: 14px; } .bk-card { padding: 22px 20px; } }

/* 2026-11-06 スマホの固定表示の整理（他AIのレビュー）
   下のバー：［料金］［アクセス］［LINE友だち追加］。AIチャットは右下に浮かせず、メニューの中から開く */
@media (max-width: 767px) {
  .dchat-launch { display: none !important; }
  .mobile-bar .mobile-bar-price { font-weight: 700; }
}
.nav-sp-chat { display: none; }
@media (max-width: 1100px) {
  .header-nav.is-open .nav-sp-chat { display: block; margin: 0 16px 12px; padding: 12px 14px; min-height: 44px; width: calc(100% - 32px); border: 1px solid rgba(255,255,255,.5); border-radius: 999px; background: transparent; color: inherit; font: inherit; font-size: 14px; font-weight: 700; cursor: pointer; }
}
/* メニューはスマホもPCと同じ8項目・同じ順（大人→歯並び→方法→料金→症例→子ども→医院→相談） */
@media (max-width: 1100px) {
  .header-nav.is-open .nav-drop[data-nav="adult"], .header-nav.is-open .nav-drop[data-nav="child"] { display: flex; }
  .header-nav.is-open [data-nav] { order: 0; }
  .header-nav.is-open .nav-drop[data-nav="symptoms"] > a::before { content: "SYMPTOMS"; }
  .header-nav.is-open .nav-drop[data-nav="about"] > a::before { content: "CLINIC"; }
  .header-nav.is-open .nav-drop[data-nav="first"] > a::before { content: "FIRST VISIT / ACCESS"; }
}

/* 2026-11-06 トップの料金：税込を主に・総額の例 */
.price-table--v2 dd span:first-child { display: block; }
.price-table--v2 dd span:last-child { display: block; font-family: var(--sans); font-size: 12px; font-weight: 500; color: var(--ink-muted); }
.price-total-ex { margin: 18px 0 0; padding: 20px 24px; background: #EEF4DF; border-radius: 28px 22px 30px 20px / 22px 30px 20px 28px; text-align: left; }
.price-total-ex p { margin: 0 0 10px; font-size: 14.5px; line-height: 1.7; color: var(--ink); }
.price-total-ex b { color: var(--teal); }
.price-total-ex small { font-size: 12.5px; color: var(--ink-muted); }
.price-total-ex .pte-head { font-family: var(--serif); font-weight: 700; color: var(--teal); font-size: 16px; }
.price-total-ex .pte-note { font-size: 12.5px; color: var(--ink-muted); margin: 0; }
@media (max-width: 767px) { .price-total-ex { padding: 16px 18px; } .price-total-ex p { font-size: 14px; } }
/* 2026-11-06 ファーストビュー：当院の約束3つ */
.hero-points { list-style: none; margin: 14px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.hero-points li { font-size: 13px; line-height: 1.5; padding: 6px 12px; background: #EEF4DF; color: var(--ink); border-radius: 999px; }
.hero-points b { color: var(--teal); }
@media (max-width: 767px) { .hero-points { gap: 6px; margin-top: 10px; } .hero-points li { font-size: 12.5px; padding: 5px 11px; } }

/* 2026-11-06 初診相談：冒頭の5つのポイント */
.cns-facts { list-style: none; margin: 18px auto 0; padding: 0; display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; max-width: 760px; }
.cns-facts li { background: #EEF4DF; border-radius: 22px 18px 24px 16px / 18px 24px 16px 22px; padding: 12px 8px; text-align: center; }
.cns-facts b { display: block; color: var(--teal); font-size: 15px; line-height: 1.4; }
.cns-facts span { display: block; font-size: 11.5px; color: var(--ink-muted); margin-top: 2px; }
@media (max-width: 767px) { .cns-facts { grid-template-columns: repeat(2, 1fr); } .cns-facts li:last-child { grid-column: 1 / -1; } .cns-facts b { font-size: 14px; } }

/* 2026-11-06 長い導入文は左揃え（中央揃えは見出しと短い紹介だけ）。JSで60字を超える段落に .is-long を付ける */
.page-head-lead.is-long, .section > p.is-long { text-align: left; }

/* 2026-11-06 症例ページ：概要のすぐ下に「この治療方法・料金・初診相談」 */
.cd-next { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 20px 0 0; }
.cd-next a { display: block; padding: 14px 16px; background: #EEF4DF; border-radius: 22px 18px 24px 16px / 18px 24px 16px 22px; color: var(--teal); text-decoration: none; }
.cd-next span { display: block; font-size: 11.5px; color: var(--ink-muted); }
.cd-next b { display: block; font-size: 14.5px; line-height: 1.5; }
.cd-next a:hover b { text-decoration: underline; }
@media (max-width: 767px) { .cd-next { grid-template-columns: 1fr; gap: 8px; } }

/* 2026-11-06 症例の絞り込み（スマホ）：横に続きがあることを、右端のぼかしで示す */
@media (max-width: 767px) {
  .cx-chips { -webkit-mask-image: linear-gradient(90deg, #000 85%, transparent); mask-image: linear-gradient(90deg, #000 85%, transparent); padding-right: 28px; }
}

/* 2026-11-06 PCヘッダー：メニュー名が長くなった（治療方法を比べる・初診相談・アクセス）分、間隔と文字を詰めて1行に収める */
@media (min-width: 1101px) {
  .header-nav { gap: clamp(10px, 1vw, 20px); font-size: clamp(12.5px, .93vw, 14px); }
  .header-cta a.btn { padding: 10px 16px; font-size: 13.5px; white-space: nowrap; }
}
@media (min-width: 1101px) and (max-width: 1299px) {
  .site-header { padding: 0 16px; gap: 10px; }
  .site-header .logo img, .site-header > a:first-child img { max-width: 200px; height: auto; }
}

/* 2026-11-06 トップの症例：説明は最低限に・自分に近い症例を探す入口 */
.cf-info--compact .cf-tag { display: none; }
.cf-info--compact .cf-title { font-size: clamp(19px, 1.9vw, 24px); margin-bottom: 8px; }
.cf-info--compact .cf-summary { margin: 0 0 6px; }
.cf-info--compact .cf-risk { font-size: 12px; line-height: 1.7; color: var(--ink-muted); }
.cf-find { margin: 22px 0 0; }
.cf-find-head { font-weight: 700; color: var(--teal); font-size: 14.5px; margin: 0 0 10px; }
.cf-find-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.cf-find-chips a { display: inline-flex; align-items: center; min-height: 40px; padding: 0 16px; background: #EEF4DF; color: var(--teal); font-size: 13.5px; font-weight: 700; border-radius: 999px; text-decoration: none; }
.cf-find-chips a:hover { background: #E2ECCB; }
.cf-find-chips .cf-find-all { background: transparent; border: 1px solid var(--teal); }
@media (max-width: 767px) { .cf-find-chips { gap: 6px; } .cf-find-chips a { min-height: 38px; padding: 0 13px; font-size: 13px; } }
