/* ============================================================
   TDC Design System (Claude Design 引渡し 2026-06-10 実装)
   採用: カード B「料金ファースト」/ E 行 / editorial sec-head /
         詳細 hero 減彩 / フィルタ F1 / empty E1
   規約: tdc- プレフィックス完結。コンポーネント root に .tdc-ds を
         付与し、SWELL/swell_child のグローバル装飾をスコープ内で打ち消す。
   ============================================================ */
:root {
  --tdc-bg: #fafaf5;
  --tdc-card: #ffffff;
  --tdc-line: #ece6e0;
  --tdc-pink: #c9a8a4;
  --tdc-rose: #a8847f;
  --tdc-terra: #d4a574;
  --tdc-text: #3a3a3a;
  --tdc-sub: #8a8581;
  --tdc-pink-bg: #fdf6f4;
  --tdc-chip-bg: #f8efeb;
  --tdc-line-soft: #f3eeea;
  --tdc-serif: "Noto Serif JP", "Yu Mincho", serif;
  --tdc-sans: "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;
  --tdc-grad-cta: linear-gradient(135deg, #cfa472 0%, #b18a7f 60%, #a8847f 100%);
  --tdc-shadow-card: 0 12px 30px -12px rgba(168, 132, 127, .22);
  --tdc-shadow-cta: 0 8px 18px -8px rgba(168, 132, 127, .45);
}

/* ── .tdc-ds スコープ: テーマグローバル打ち消し ── */
.tdc-ds {
  /* SWELL の游ゴシック/weight500/letter-spacing/可変rem を遮断し設計のタイポベースに固定 */
  font-family: var(--tdc-sans);
  font-size: 14px;
  font-weight: 400;
  letter-spacing: normal;
  line-height: 1.6;
  color: var(--tdc-text);
}
.tdc-ds, .tdc-ds *, .tdc-ds *::before, .tdc-ds *::after { box-sizing: border-box; }
.tdc-ds a { color: inherit; text-decoration: none !important; }
.tdc-ds ul, .tdc-ds ol { list-style: none; margin: 0; padding: 0; }
.tdc-ds p, .tdc-ds dl, .tdc-ds dd, .tdc-ds figure, .tdc-ds table { margin: 0; padding: 0; }
/* swell_child のタグ直当てフォント (ul/li/span 等) をスコープ内で遮断 */
.tdc-ds :is(ul, ol, li, p, span, a, small, b, i, dt, dd, td, button, input, div) {
  font-family: inherit;
}
.post_content .tdc-ds :is(h1, h2, h3, h4),
.tdc-ds :is(h1, h2, h3, h4) {
  margin: 0 !important;
  padding: 0 !important;
  border: none !important;
  background: none !important;
  font-size: 1em !important;
  line-height: 1.5 !important;
  text-align: inherit !important;
  height: auto !important;
}

/* ── 星評価 ── */
.tdc-stars { display: inline-flex; align-items: center; gap: 1px; font-size: 1em; line-height: 1; letter-spacing: 1px; }
.tdc-stars .is-on { color: var(--tdc-terra); }
.tdc-stars .is-half {
  background: linear-gradient(90deg, var(--tdc-terra) 50%, var(--tdc-line) 50%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.tdc-stars .is-off { color: var(--tdc-line); }
.tdc-rating-val { font-weight: 700; color: var(--tdc-rose); font-variant-numeric: tabular-nums; }
.tdc-rating-count { color: var(--tdc-sub); font-size: .86em; white-space: nowrap; }

/* ── チップ ── */
.tdc-ds .tdc-chip,
.tdc-chip {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 10px; border-radius: 999px;
  background: var(--tdc-chip-bg); color: var(--tdc-rose);
  font-size: 12.48px; line-height: 1.5; white-space: nowrap; border: 0;
  /* チップは .tdc-ds スコープ外 (例: front hero) でも使われるため、
     swell の a{text-decoration:underline!important} を基底で打ち消す */
  text-decoration: none !important;
}
.tdc-chip--line { background: #fff; border: 1px solid var(--tdc-line); color: #6a5f5a; }
.tdc-chip--ghost { background: rgba(255,255,255,.85); border: 1px solid rgba(168,132,127,.22); color: #6a4a44; }

/* ── pill ボタン ── */
.tdc-ds .tdc-btn,
.tdc-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  padding: 12px 18px; border-radius: 999px; border: 0;
  font-family: inherit; font-weight: 600; font-size: 14.72px; letter-spacing: .05em;
  line-height: 1.2; cursor: pointer; transition: transform .18s, box-shadow .18s, background .18s;
  text-align: center; white-space: nowrap;
  /* a.tdc-btn が .tdc-ds 外で使われた場合の swell 下線を打ち消す */
  text-decoration: none !important;
}
.tdc-ds .tdc-btn--primary,
.tdc-btn--primary { background: var(--tdc-grad-cta); color: #fff !important; box-shadow: var(--tdc-shadow-cta); }
.tdc-btn--primary:hover { transform: translateY(-1px); color: #fff; }
.tdc-btn:active { transform: scale(.98); }
.tdc-ds .tdc-btn--outline,
.tdc-btn--outline { background: #fff; color: var(--tdc-rose) !important; border: 1.5px solid var(--tdc-pink); }
.tdc-btn--outline:hover { background: var(--tdc-pink-bg); }
.tdc-btn--text { background: none; color: var(--tdc-rose) !important; padding: 8px 4px; font-weight: 600; }
.tdc-btn--sm { padding: 8px 14px; font-size: 13.12px; }

/* ── PR 表記 ── */
.tdc-pr { color: #b0aaa6; font-size: 10.88px; letter-spacing: .04em; white-space: nowrap; }

/* ── editorial セクション見出し (中央寄せ・対称) ──
 * eyebrow + タイトルを中央寄せ、タイトル左右に短いヘアラインを置く対称構成。
 * 中央寄せレイアウトの /menulist/ (.post_content 文脈) でも崩れない。 */
.tdc-sec-head { margin: 0 0 20px; text-align: center; }
.tdc-ds .tdc-sec-head__en,
.tdc-sec-head__en {
  display: block; color: var(--tdc-pink); font-size: 10.24px;
  letter-spacing: .32em; text-transform: uppercase; margin-bottom: 5px;
  font-family: Georgia, "Times New Roman", serif;
}
.tdc-ds .tdc-sec-head__ja,
.post_content .tdc-ds h2.tdc-sec-head__ja {
  font-family: var(--tdc-serif); font-weight: 600; font-size: 18.88px !important;
  letter-spacing: .06em; color: #2f2a27; line-height: 1.4 !important;
  display: flex; align-items: center; justify-content: center; gap: 14px;
}
/* タイトル左右の短いヘアライン (対称) */
.tdc-sec-head__ja::before,
.tdc-sec-head__ja::after {
  content: ""; flex: 0 0 auto; width: 44px; height: 1px; background: var(--tdc-line);
}

/* ── 価格・駅徒歩 ── */
.tdc-price { display: inline-flex; align-items: baseline; gap: 2px; color: var(--tdc-rose); font-variant-numeric: tabular-nums; white-space: nowrap; }
.tdc-price__num { font-weight: 700; font-size: 1.45em; letter-spacing: .01em; line-height: 1; }
.tdc-price__unit { font-weight: 600; font-size: .85em; }
.tdc-price__from { font-weight: 500; font-size: .8em; color: var(--tdc-sub); margin-left: 2px; }
.tdc-station { display: inline-flex; align-items: center; gap: 6px; font-size: 13.6px; color: var(--tdc-text); white-space: nowrap; }
.tdc-station__name { font-weight: 600; }
.tdc-station__walk { color: var(--tdc-rose); font-weight: 600; }

/* ════ プレースホルダ P1: タイポ + ヘアライン ════ */
.tdc-ph { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; text-align: center; position: relative; overflow: hidden; }
.tdc-ph--typo {
  background:
    repeating-linear-gradient(-45deg, rgba(255,255,255,.22) 0 1px, transparent 1px 10px),
    linear-gradient(135deg, #f0e0d8 0%, #e9d6d1 55%, #f5e9e4 100%);
  color: #9a7a72;
}
.tdc-ph--typo .tdc-ph__brand {
  font-family: var(--tdc-serif); font-weight: 600; font-size: 16px;
  letter-spacing: .14em; line-height: 1.5; padding: 0 14px;
}
.tdc-ph--typo .tdc-ph__brand::before, .tdc-ph--typo .tdc-ph__brand::after {
  content: ""; display: block; width: 28px; height: 1px;
  background: rgba(154,122,114,.45); margin: 7px auto;
}
.tdc-ph__branch { font-size: 10.88px; letter-spacing: .26em; color: #b39b94; }

/* ════ Case B: 料金ファースト (単一 DOM / SP→PC グリッド切替) ════ */
.tdc-card-b {
  background: var(--tdc-card); border: 1px solid var(--tdc-line); border-radius: 14px;
  padding: 16px 18px 14px; display: flex; flex-direction: column; gap: 10px;
  transition: border-color .25s, box-shadow .25s;
}
.tdc-card-b:hover { border-color: var(--tdc-pink); box-shadow: var(--tdc-shadow-card); }
.tdc-card-b__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; order: 1; }
/* 院名の左に置くブランドアバター。実写真=cover / ロゴ=contain(白地) / 無し=セリフ頭文字 */
.tdc-card-b__id { display: flex; align-items: center; gap: 11px; flex: 1 1 auto; min-width: 0; }
.tdc-card-b__avatar {
  flex: 0 0 auto; width: 72px; height: 72px; border-radius: 12px; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  background: var(--tdc-pink-bg); border: 1px solid var(--tdc-line-soft);
  box-shadow: 0 1px 2px rgba(120,90,80,.05);
}
.tdc-card-b__avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tdc-card-b__avatar.is-logo { background: #fff; }
.tdc-card-b__avatar.is-logo img { object-fit: contain; padding: 9px; }
.tdc-card-b__avatar-initial {
  font-family: var(--tdc-serif, Georgia, serif); font-size: 1.45rem; font-weight: 600;
  color: var(--tdc-rose); letter-spacing: .02em;
}
.tdc-ds .tdc-card-b__name,
.post_content .tdc-ds h3.tdc-card-b__name {
  font-family: var(--tdc-serif); font-size: 16.96px !important; font-weight: 600;
  line-height: 1.5 !important; letter-spacing: .02em; flex: 1 1 auto; min-width: 0; color: #2f2a27;
}
.tdc-card-b__name a:hover { color: var(--tdc-rose); }
.tdc-card-b__branch { display: block; font-family: var(--tdc-sans); color: var(--tdc-sub); font-size: 12.16px; letter-spacing: .08em; font-weight: 400; }
.tdc-card-b__rating-chip {
  flex: 0 0 auto; display: inline-flex; align-items: center; gap: 5px;
  background: var(--tdc-pink-bg); border-radius: 999px; padding: 5px 12px; font-size: 13.6px;
}
.tdc-card-b__rating-chip .tdc-card-b__star { color: var(--tdc-terra); }
.tdc-card-b__price-block {
  background: linear-gradient(135deg, #fdf6f4 0%, #faf1ea 100%);
  border-radius: 10px; padding: 12px 14px 10px;
  display: flex; flex-direction: column; gap: 7px; order: 2;
}
/* 価格未取得: 要問い合わせ（控えめなトーン） */
.tdc-card-b__price-block.is-inquiry { background: #f6f3ef; }
.tdc-price__inquiry { font-family: var(--tdc-sans); font-size: 15.2px; font-weight: 600; color: var(--tdc-sub); letter-spacing: .04em; }
.tdc-card-b__price-row { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.tdc-card-b__price-label { font-size: 10.88px; color: var(--tdc-rose); font-weight: 600; letter-spacing: .14em; }
.tdc-card-b__price-menu { font-size: 12.16px; color: var(--tdc-sub); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 60%; }
.tdc-card-b__price-block .tdc-price__num { font-size: 1.7em; }
.tdc-card-b__band { display: flex; gap: 3px; }
.tdc-card-b__band-seg { flex: 1; height: 4px; border-radius: 2px; background: #eedfd8; }
.tdc-card-b__band-seg.is-on { background: linear-gradient(90deg, var(--tdc-terra), var(--tdc-pink)); }
.tdc-card-b__band-cap { text-align: right; font-size: 10.56px; color: #b09a92; letter-spacing: .06em; margin-top: 4px; white-space: nowrap; }
/* ブランド規模バッジ（全国N院） */
.tdc-card-b__scale {
  display: inline-block; margin-left: 8px; vertical-align: 2px;
  font-size: 10px; font-weight: 700; letter-spacing: .04em; white-space: nowrap;
  color: #7a6a5f; background: #f4ede7; border: 1px solid #e8dcd2; border-radius: 999px; padding: 2px 8px;
}

/* 相場コンテキストバッジ（DB実データとの突き合わせ） */
.tdc-card-b__ctx {
  display: inline-block; width: fit-content; margin-top: 2px;
  font-size: 10.5px; font-weight: 700; letter-spacing: .03em; white-space: nowrap;
  border-radius: 6px; padding: 3px 9px; cursor: help;
}
.tdc-card-b__ctx.is-low  { color: #4e6e4e; background: #eaf2e6; border: 1px solid #d8e6d0; }
.tdc-card-b__ctx.is-mid  { color: #7a6a5f; background: #f4ede7; border: 1px solid #e8dcd2; }
.tdc-card-b__ctx.is-high { color: #8a6a52; background: #f6ede2; border: 1px solid #ecdcc8; }

/* 診療時間 + 本日診療中バッジ */
.tdc-card-b__hours { display: inline-flex; align-items: center; gap: 7px; min-width: 0; }
.tdc-card-b__hours-text { font-size: 12px; color: var(--tdc-sub); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tdc-card-b__holiday { color: #b09a92; }
.tdc-open-badge {
  flex: 0 0 auto; font-size: 10px; font-weight: 700; letter-spacing: .03em;
  border-radius: 999px; padding: 2px 8px; white-space: nowrap;
}
.tdc-open-badge.is-open   { color: #3e6e50; background: #e5f2e9; border: 1px solid #cfe6d6; }
.tdc-open-badge.is-closed { color: #9a6a62; background: #f7e7e2; border: 1px solid #eed6cf; }

/* 一覧コントロール（術式フィルタ / 並び替え）— セグメントコントロール型 */
.tdc-lc { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 26px; margin: 2px 2px 18px; }
.tdc-lc__seg { display: flex; align-items: center; gap: 9px; min-width: 0; }
.tdc-lc__seg-label {
  flex: 0 0 auto; font-size: 10.5px; font-weight: 600; color: #a3958c;
  letter-spacing: .14em;
}
.tdc-lc__track {
  display: inline-flex; align-items: center; gap: 2px;
  background: #f1eae4; border-radius: 999px; padding: 3px;
  overflow-x: auto; scrollbar-width: none; max-width: 100%;
}
.tdc-lc__track::-webkit-scrollbar { display: none; }
.tdc-lc__opt {
  /* swell style2 の a{width:100%;display:inline-block} グローバルに勝つため width 明示 */
  width: auto !important; flex: 0 0 auto;
  display: inline-flex; align-items: center; gap: 4px;
  padding: 7px 15px; border-radius: 999px; border: 0; background: transparent;
  color: #857468; font-size: 12.5px; font-weight: 600; letter-spacing: .02em; line-height: 1;
  text-decoration: none !important; cursor: pointer; font-family: inherit;
  white-space: nowrap; transition: color .15s, background .18s, box-shadow .18s;
}
.tdc-lc__opt:hover { color: var(--tdc-rose); }
.tdc-lc__opt.is-active {
  background: #fff; color: var(--tdc-rose);
  box-shadow: 0 1px 4px rgba(58, 42, 38, .14), 0 0 0 1px rgba(236, 230, 224, .7);
}
.tdc-lc__opt--btn:disabled { opacity: .6; cursor: wait; }
.tdc-lc__pin { width: 11px; height: 11px; opacity: .7; flex: 0 0 auto; }

/* スティッキーフィルタバー（一覧コントロールが画面外→上部に追従） */
.tdc-lc-sticky {
  position: fixed; left: 0; right: 0; top: 60px; z-index: 40;
  background: rgba(255, 255, 255, .95);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(236, 230, 224, .9);
  box-shadow: 0 6px 18px -12px rgba(58, 42, 38, .18);
  visibility: hidden; opacity: 0; transform: translateY(-10px);
  transition: opacity .22s ease, transform .22s ease, visibility 0s .22s;
  pointer-events: none;
}
.tdc-lc-sticky.is-visible {
  visibility: visible; opacity: 1; transform: translateY(0); pointer-events: auto;
  transition: opacity .22s ease, transform .22s ease;
}
.tdc-lc-sticky__inner {
  max-width: 1120px; margin: 0 auto; padding: 8px 16px;
  display: flex; align-items: center; gap: 14px;
  overflow-x: auto; scrollbar-width: none;
}
.tdc-lc-sticky__inner::-webkit-scrollbar { display: none; }
.tdc-lc-sticky__jump {
  flex: 0 0 auto; display: inline-flex; align-items: center; gap: 4px;
  border: 1px solid var(--tdc-line); background: #fff; border-radius: 999px;
  padding: 7px 14px; font-size: 12px; font-weight: 600; color: #857468;
  cursor: pointer; font-family: inherit; white-space: nowrap;
  transition: color .15s, border-color .15s;
}
.tdc-lc-sticky__jump:hover { color: var(--tdc-rose); border-color: var(--tdc-rose); }
.tdc-lc-sticky__jump::before { content: "⌃"; font-size: 10px; transform: translateY(1px); }
.tdc-lc--compact { margin: 0 !important; flex-wrap: nowrap; gap: 8px 18px; }
.tdc-lc--compact .tdc-lc__seg-label { display: none; }
.tdc-lc--compact .tdc-lc__opt { padding: 6px 12px; font-size: 12px; }
@media (max-width: 720px) {
  .tdc-lc-sticky { top: 0; }
  .tdc-lc-sticky__inner { padding: 8px 12px; }
}

/* 曜日別診療グリッド（HotPepper型のミニ診療時間表） */
.tdc-hgrid {
  /* swell .post_content table { width:100% } に勝ってコンパクトに保つ */
  width: auto !important; max-width: 100%;
  border-collapse: collapse; flex: 0 0 auto; margin: 2px 0 0 !important;
  border: 1px solid var(--tdc-line); border-radius: 8px; overflow: hidden;
}
.tdc-hgrid th, .tdc-hgrid td {
  width: 24px; text-align: center; padding: 0; border-left: 1px solid #f0e8e2;
  font-weight: 500; background: #fff;
}
.tdc-hgrid th:first-child, .tdc-hgrid td:first-child { border-left: 0; }
.tdc-hgrid__days th { font-size: 9.5px; color: #8a7d73; padding: 3px 0 1px; background: #faf6f2; letter-spacing: 0; }
.tdc-hgrid__days th.is-closed { color: #c4b6ac; }
.tdc-hgrid__days th.is-partial { color: #a3906f; }
.tdc-hgrid__marks td { font-size: 8px; color: var(--tdc-terra); padding: 2px 0 4px; line-height: 1; }
.tdc-hgrid__marks td.is-closed { color: #cfc2b8; font-size: 9px; }
.tdc-hgrid__marks td.is-partial { color: #c7a56e; font-size: 8.5px; }
.tdc-hgrid-wrap { display: inline-flex; flex-direction: column; gap: 3px; flex: 0 0 auto; min-width: 0; }
.tdc-hgrid__note { font-size: 9.5px; color: #b09a92; letter-spacing: .02em; }

/* メニュー説明（details 展開・JS不要） */
.tdc-card-b__menu-details { width: 100%; }
.tdc-card-b__menu-details summary { list-style: none; cursor: pointer; }
.tdc-card-b__menu-details summary::-webkit-details-marker { display: none; }
.tdc-card-b__menu-row { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; min-width: 0; }
.tdc-card-b__menu-row.is-expandable .tdc-card-b__menu-name::after {
  content: "▾"; font-size: 9px; color: #c2b2ab; margin-left: 4px; flex: 0 0 auto;
}
.tdc-card-b__menu-details[open] .tdc-card-b__menu-row.is-expandable .tdc-card-b__menu-name::after { content: "▴"; }
.tdc-card-b__menu-desc {
  margin: 6px 0 2px; padding: 8px 10px; background: #faf6f2; border-radius: 8px;
  font-size: 11.5px; line-height: 1.75; color: #6a5f58;
}

/* 料金出典・データ時点（正直表記） */
.tdc-card-b__src { margin: 6px 0 0; font-size: 10px; color: #b3a69e; letter-spacing: .02em; }

/* カード密度化: 価格ブロック内の複数メニュー行（.post_content ul の padding/marker 残留に防衛） */
.tdc-card-b__menus {
  list-style: none !important; margin: 2px 0 0 !important; padding: 8px 0 0 !important;
  border-top: 1px dashed #eddfd7; display: flex; flex-direction: column; gap: 6px;
}
.tdc-card-b__menu { display: block; font-size: 12.16px; }
.tdc-card-b__menu::marker { content: "" !important; }
.tdc-card-b__menu-name {
  flex: 1 1 auto; display: inline-flex; align-items: center; gap: 6px; min-width: 0; color: #5f554f;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.tdc-card-b__menu-tag {
  flex: 0 0 auto; font-size: 9.6px; font-weight: 700; letter-spacing: .04em;
  padding: 1px 6px; border-radius: 4px;
}
/* 術式タグ配色（施術非依存の3スロット・helpers の c=1..3 に対応） */
.tdc-card-b__menu-tag--m1 { color: #8a6f3f; background: #f5e9d4; }
.tdc-card-b__menu-tag--m2 { color: #8a5148; background: #f6ddd6; }
.tdc-card-b__menu-tag--m3 { color: #5f6a4e; background: #e7efdd; }
.tdc-card-b__menu-price {
  flex: 0 0 auto; font-weight: 700; color: var(--tdc-rose);
  font-variant-numeric: tabular-nums; white-space: nowrap;
}
.tdc-card-b__access { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: 13.6px; order: 3; }
.tdc-card-b__tags { display: flex; flex-wrap: wrap; gap: 5px; order: 4; }
.tdc-card-b__quote { display: flex; flex-direction: column; gap: 2px; padding: 9px 12px; background: #faf7f2; border-radius: 9px; order: 5; }
.tdc-card-b__quote-text { font-size: 12.8px; color: #5f554f; line-height: 1.65; }
.tdc-card-b__quote-meta { font-size: 10.56px; color: #b09a92; letter-spacing: .05em; white-space: nowrap; }
.tdc-card-b__bottom { order: 6; display: flex; flex-direction: column; gap: 4px; }
.tdc-card-b__cta-wrap { display: grid; grid-template-columns: 1fr 1.2fr; gap: 8px; margin-top: 2px; }
.tdc-card-b__pr { text-align: right; }

@media (min-width: 721px) {
  .tdc-card-b {
    display: grid;
    grid-template-columns: minmax(210px, 1.25fr) minmax(0, 1fr) 168px;
    grid-template-areas:
      "head  price cta"
      "access price cta"
      "tags  price cta"
      "quote quote quote";
    gap: 8px 14px;
    align-items: start;
    align-content: start;
    padding: 16px 18px;
  }
  .tdc-card-b__head { grid-area: head; }
  .tdc-card-b__price-block { grid-area: price; align-self: stretch; }
  .tdc-card-b__access { grid-area: access; }
  .tdc-card-b__tags { grid-area: tags; align-self: end; }
  .tdc-card-b__quote { grid-area: quote; flex-direction: row; align-items: baseline; justify-content: space-between; gap: 14px; margin-top: 2px; }
  .tdc-card-b__quote-text { flex: 1; min-width: 0; }
  .tdc-card-b__bottom { grid-area: cta; align-self: center; }
  .tdc-card-b__cta-wrap { grid-template-columns: 1fr; }
  .tdc-card-b__cta-wrap .tdc-btn { padding: 9px 14px; font-size: 13.44px; }
  .tdc-card-b__cta-wrap .tdc-btn--primary { order: -1; }
  .tdc-card-b__pr { text-align: center; }
}

/* ════ Case E: 高密度リスト行 (ランキング等) ════ */
.tdc-card-e {
  background: var(--tdc-card); border: 1px solid var(--tdc-line); border-radius: 12px;
  padding: 12px 14px; display: grid; grid-template-columns: 40px 1fr auto; gap: 4px 11px;
  align-items: center; transition: border-color .25s, box-shadow .25s;
}
.tdc-card-e:hover { border-color: var(--tdc-pink); box-shadow: var(--tdc-shadow-card); }
.tdc-ds .tdc-card-e__avatar,
.tdc-card-e__avatar {
  grid-row: 1 / 3; width: 40px; height: 40px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--tdc-serif); font-weight: 600; font-size: 16.8px; color: #9a7a72;
  background: linear-gradient(135deg, #f0e0d8, #f5e9e4);
}
.tdc-ds .tdc-card-e__name,
.post_content .tdc-ds h3.tdc-card-e__name { font-size: 14.72px !important; font-weight: 600; line-height: 1.35 !important; }
.tdc-card-e__branch { color: var(--tdc-sub); font-size: 12.16px; font-weight: 400; margin-left: 3px; }
.tdc-card-e__sub { grid-column: 2; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-size: 12.16px; color: var(--tdc-sub); }
.tdc-card-e__sub > span { white-space: nowrap; }
.tdc-card-e__sub .tdc-rating-val { font-size: 13.12px; }
.tdc-card-e__sub .tdc-card-e__star { color: var(--tdc-terra); }
.tdc-card-e__right { grid-row: 1 / 3; grid-column: 3; text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 1px; }
.tdc-card-e__right .tdc-price__num { font-size: 1.18em; }
.tdc-card-e__minilabel { font-size: 9.6px; color: #b8a59e; letter-spacing: .08em; }

/* ════ クリニック詳細 (03) editorial ════ */
.tdc-d-hero {
  position: relative; overflow: hidden; text-align: center;
  padding: 34px 20px 26px;
  background:
    radial-gradient(circle at 82% 12%, rgba(255,255,255,.7) 0%, transparent 36%),
    linear-gradient(115deg, #fdf5ef 0%, #f8e6da 45%, #efd3c4 100%);
}
.tdc-d-hero__arc {
  position: absolute !important; left: 50%; bottom: -120px; transform: translateX(-50%);
  width: 420px; height: 180px; border-radius: 50% 50% 0 0;
  background: rgba(255,255,255,.35); pointer-events: none;
}
.tdc-d-hero > * { position: relative; }
.tdc-ds .tdc-d-hero__brand,
.tdc-d-hero__brand {
  display: inline-block; padding: 4px 16px; margin-bottom: 10px;
  background: rgba(255,255,255,.72); color: var(--tdc-rose);
  font-family: var(--tdc-sans); font-size: 11.52px !important; font-weight: 500;
  letter-spacing: .22em; border-radius: 999px;
  box-shadow: 0 4px 12px -6px rgba(168,132,127,.35);
  text-shadow: none;
}
.tdc-ds .tdc-d-hero__name,
.post_content .tdc-ds h1.tdc-d-hero__name {
  font-family: var(--tdc-serif); font-weight: 600; font-size: 27.2px !important;
  letter-spacing: .04em; color: #2d1f1c; line-height: 1.25 !important; margin-bottom: 12px !important;
  text-shadow: 0 2px 14px rgba(255,255,255,.6);
}
.tdc-d-hero__name .tdc-d-hero__brand { display: inline-block; }
.tdc-d-hero__branch { display: block; margin-top: 2px; }
.tdc-d-hero__rating {
  display: inline-flex; align-items: center; gap: 9px; margin-bottom: 12px;
  padding: 7px 16px; background: rgba(255,255,255,.78); border-radius: 999px;
  box-shadow: 0 6px 18px -8px rgba(168,132,127,.4); font-size: 14.4px;
}
.tdc-d-hero__badges { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin-bottom: 16px; }
.tdc-d-hero__cta-col { display: flex; flex-direction: column; align-items: center; gap: 5px; }
.tdc-d-hero__cta-row { display: flex; gap: 9px; }

.tdc-d-section { padding: 22px 16px 4px; max-width: 880px; margin: 0 auto; }
.tdc-d-card { background: #fff; border: 1px solid var(--tdc-line); border-radius: 12px; overflow: hidden; }

.tdc-d-info { display: grid; grid-template-columns: 92px 1fr; }
.tdc-d-info dt, .tdc-d-info dd { padding: 11px 14px; border-top: 1px solid var(--tdc-line-soft); font-size: 13.6px; margin: 0; }
.tdc-d-info dt:first-of-type, .tdc-d-info dd:first-of-type { border-top: 0; }
.tdc-d-info dt { background: var(--tdc-pink-bg); color: var(--tdc-rose); font-weight: 600; font-size: 12.48px; }
@media (min-width: 721px) { .tdc-d-info { grid-template-columns: 140px 1fr; } }

.tdc-d-access { padding: 14px; display: flex; flex-direction: column; gap: 10px; }
.tdc-d-access__stations { display: flex; flex-wrap: wrap; gap: 6px; }
.tdc-d-access__stations b { color: var(--tdc-rose); }
.tdc-d-access__addr { font-size: 13.6px; color: #4a4540; line-height: 1.7; }
.tdc-d-access__map { color: var(--tdc-rose) !important; font-size: 12.8px; font-weight: 600; margin-left: 6px; }

.tdc-d-menu { overflow-x: auto; }
.tdc-d-menu__filters { display: flex; gap: 6px; padding: 12px 14px 0; flex-wrap: wrap; }
.tdc-d-menu__seg {
  padding: 5px 13px; border-radius: 999px; font-size: 12.16px; cursor: pointer;
  border: 1px solid var(--tdc-line); color: #6a5f5a; background: #fff; white-space: nowrap; font-family: inherit;
}
.tdc-d-menu__seg.is-active { background: var(--tdc-pink); border-color: var(--tdc-pink); color: #fff; }
.tdc-d-menu__table { width: 100%; border-collapse: collapse; font-size: 13.44px; }
.tdc-d-menu__table th {
  text-align: left; padding: 10px 14px; background: var(--tdc-pink-bg);
  color: var(--tdc-rose); font-size: 11.52px; letter-spacing: .08em; font-weight: 600;
  border-bottom: 1px solid var(--tdc-line); border-top: 0;
}
.tdc-d-menu__table th.is-num { text-align: right; }
.tdc-d-menu__table td { padding: 12px 14px; border-bottom: 1px solid var(--tdc-line-soft); vertical-align: middle; border-top: 0; }
.tdc-d-menu__table td.is-num { text-align: right; }
.tdc-d-menu__table tr:last-child td { border-bottom: 0; }
.tdc-d-menu__treat { font-weight: 600; color: var(--tdc-text); }
.tdc-d-menu__course { display: block; font-size: 12.16px; color: var(--tdc-sub); margin-top: 1px; }

.tdc-d-doctor {
  padding: 18px 16px; display: flex; align-items: center; gap: 14px;
  background: linear-gradient(135deg, #fdf6f4, #fff);
}
.tdc-ds .tdc-d-doctor__avatar,
.tdc-d-doctor__avatar {
  flex: 0 0 52px; width: 52px; height: 52px; border-radius: 50%;
  border: 1px dashed var(--tdc-pink);
  display: flex; align-items: center; justify-content: center;
  color: var(--tdc-pink); font-family: var(--tdc-serif); font-size: 19.2px;
  background: #fff;
}
.tdc-d-doctor__note { font-size: 13.12px; color: #6a5f5a; line-height: 1.7; }
.tdc-d-doctor__note a { color: var(--tdc-rose) !important; font-weight: 600; }

.tdc-d-review-sum { display: grid; grid-template-columns: 96px 1fr; gap: 14px; padding: 16px 14px; align-items: center; }
.tdc-d-review-sum__score { text-align: center; }
.tdc-ds .tdc-d-review-sum__num,
.tdc-d-review-sum__num { font-family: Georgia, serif; font-size: 33.6px; color: var(--tdc-rose); line-height: 1; }
.tdc-d-review-sum__bars { display: flex; flex-direction: column; gap: 5px; }
.tdc-d-review-sum__bar-row { display: grid; grid-template-columns: 22px 1fr 18px; gap: 8px; align-items: center; font-size: 10.88px; color: var(--tdc-sub); }
.tdc-d-review-sum__bar { height: 6px; border-radius: 3px; background: var(--tdc-line-soft); overflow: hidden; }
.tdc-d-review-sum__bar i { display: block; height: 100%; border-radius: 3px; background: linear-gradient(90deg, var(--tdc-terra), var(--tdc-pink)); }
.tdc-d-review-item { padding: 13px 14px; border-top: 1px solid var(--tdc-line-soft); }
.tdc-d-review-item__head { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; font-size: 11.52px; color: var(--tdc-sub); margin-bottom: 5px; }
.tdc-d-review-item__head b { color: var(--tdc-text); }
.tdc-d-review-item__title { font-weight: 600; font-size: 14.08px; margin-bottom: 3px; color: var(--tdc-text); }
.tdc-d-review-item__body { font-size: 12.8px; color: #5a514c; line-height: 1.7; }
.tdc-d-review-more { text-align: center; padding: 10px 0 14px; border-top: 1px solid var(--tdc-line-soft); }

.tdc-d-sticky {
  position: sticky; bottom: 0; z-index: 40;
  display: grid; grid-template-columns: 1fr 1.3fr; gap: 8px;
  padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
  background: rgba(255,255,255,.92); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  border-top: 1px solid var(--tdc-line);
}
.tdc-d-sticky__col { display: flex; flex-direction: column; gap: 1px; }
.tdc-d-sticky__col .tdc-pr { text-align: center; }
@media (min-width: 721px) {
  .tdc-d-sticky { max-width: 560px; margin: 0 auto; border: 1px solid var(--tdc-line); border-radius: 16px 16px 0 0; }
}

/* ════ トップ (01) ════ */
.tdc-t-hero {
  position: relative; overflow: hidden; text-align: center; padding: 38px 22px 30px;
  background: linear-gradient(165deg, #fdf6f4 0%, #fafaf5 55%, #f7ece6 100%);
}
.tdc-t-hero__blob { position: absolute !important; border-radius: 50%; filter: blur(2px); pointer-events: none; }
.tdc-t-hero__blob--1 { width: 190px; height: 190px; right: -70px; top: -60px; background: radial-gradient(circle, rgba(212,165,116,.18), transparent 70%); }
.tdc-t-hero__blob--2 { width: 230px; height: 230px; left: -90px; bottom: -120px; background: radial-gradient(circle, rgba(201,168,164,.22), transparent 70%); }
.tdc-t-hero > * { position: relative; }
.tdc-t-hero__eyebrow {
  font-family: Georgia, serif; font-size: 9.6px; letter-spacing: .34em;
  color: var(--tdc-pink); margin-bottom: 10px; text-transform: uppercase;
}
.tdc-ds .tdc-t-hero__title,
.post_content .tdc-ds h1.tdc-t-hero__title {
  font-family: var(--tdc-serif); font-weight: 600; font-size: 24px !important;
  line-height: 1.55 !important; letter-spacing: .03em; margin-bottom: 8px !important;
}
.tdc-t-hero__title em { font-style: normal; color: var(--tdc-rose); position: relative; padding: 0 .1em; z-index: 0; }
.tdc-t-hero__title em::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 2px; height: 7px;
  background: linear-gradient(90deg, rgba(212,165,116,.32), rgba(201,168,164,.32));
  z-index: -1; border-radius: 3px;
}
.tdc-t-hero__lead { color: var(--tdc-sub); font-size: 12.48px; margin-bottom: 18px; letter-spacing: .04em; }
.tdc-t-search {
  background: rgba(255,255,255,.88); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  border: 1px solid var(--tdc-line); border-radius: 16px;
  box-shadow: 0 18px 40px -22px rgba(168,132,127,.4);
  padding: 6px 16px 16px; text-align: left; margin: 0 auto 18px; max-width: 560px;
}
.tdc-t-search__tabs { display: flex; border-bottom: 1px solid var(--tdc-line); }
.tdc-t-search__tab {
  flex: 1; text-align: center; padding: 11px 4px 9px; font-size: 13.12px; font-weight: 600;
  color: var(--tdc-sub); position: relative; cursor: pointer; background: none; border: 0; font-family: inherit;
}
.tdc-t-search__tab.is-active { color: var(--tdc-rose); }
.tdc-t-search__tab.is-active::after {
  content: ""; position: absolute; left: 18%; right: 18%; bottom: -1px; height: 2px;
  border-radius: 2px; background: var(--tdc-grad-cta);
}
.tdc-t-search__chips { display: flex; flex-wrap: wrap; gap: 6px; padding-top: 12px; }
.tdc-t-search__panel[hidden] { display: none; }
.tdc-t-search__more { display: block; text-align: center; padding-top: 10px; font-size: 12.16px; color: var(--tdc-rose) !important; font-weight: 600; }
.tdc-t-trust { display: flex; justify-content: center; gap: 26px; }
.tdc-t-trust__num { font-family: Georgia, serif; font-size: 21.6px; color: var(--tdc-rose); line-height: 1.1; }
.tdc-t-trust__num small { font-size: .6em; margin-left: 1px; }
.tdc-t-trust__lbl { font-size: 9.92px; color: var(--tdc-sub); letter-spacing: .1em; }

.tdc-t-section { padding: 24px 16px 8px; max-width: 1080px; margin: 0 auto; }
.tdc-t-section--tint { background: linear-gradient(180deg, #fdf6f4 0%, #fafaf5 100%); margin-top: 16px; padding-top: 26px; max-width: none; }
.tdc-t-section--tint > .tdc-t-section__inner { max-width: 1080px; margin: 0 auto; }
.tdc-t-pickup { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
@media (min-width: 721px) { .tdc-t-pickup { grid-template-columns: repeat(4, 1fr); } }
.tdc-t-pickup__item {
  background: #fff; border: 1px solid var(--tdc-line); border-radius: 12px;
  padding: 12px 12px 10px; display: flex; flex-direction: column; gap: 3px;
  transition: border-color .2s, box-shadow .2s;
}
.tdc-t-pickup__item:hover { border-color: var(--tdc-pink); box-shadow: var(--tdc-shadow-card); }
.tdc-ds .tdc-t-pickup__icon,
.tdc-t-pickup__icon {
  width: 30px; height: 30px; border-radius: 8px; margin-bottom: 4px;
  background: linear-gradient(135deg, #f0e0d8, #f5e9e4);
  display: flex; align-items: center; justify-content: center;
  color: #9a7a72; font-family: var(--tdc-serif); font-size: 13.6px;
}
.tdc-t-pickup__name { font-weight: 600; font-size: 13.6px; color: var(--tdc-text); }
.tdc-t-pickup__sub { font-size: 10.88px; color: var(--tdc-sub); }

.tdc-t-rankrow { display: flex; align-items: center; gap: 10px; }
.tdc-t-rankrow + .tdc-t-rankrow { margin-top: 9px; }
.tdc-t-rankrow__card { flex: 1; min-width: 0; }
.tdc-ds .tdc-t-rank-no,
.tdc-t-rank-no {
  flex: 0 0 40px; width: 40px; height: 40px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-family: Georgia, serif; font-size: 17.6px; color: #fff;
  background: var(--tdc-grad-cta); box-shadow: 0 6px 14px -6px rgba(168,132,127,.5);
}
.tdc-t-rank-no--2 { background: linear-gradient(135deg, #cbb9b3, #b5a39d); }
.tdc-t-rank-no--3 { background: linear-gradient(135deg, #d9c2a8, #c2a584); }

/* ════ フィルタ F1: サマリーバー + 展開パネル ════ */
.tdc-f1-bar {
  display: flex; align-items: center; gap: 8px; padding: 10px 12px;
  background: #fff; border: 1px solid var(--tdc-line); border-radius: 999px;
  box-shadow: 0 8px 20px -14px rgba(168,132,127,.35);
}
.tdc-f1-bar__chips { flex: 1; display: flex; gap: 5px; overflow: hidden; }
.tdc-f1-bar__edit {
  flex: 0 0 auto; font-size: 12.16px; font-weight: 600; color: var(--tdc-rose) !important;
  display: inline-flex; align-items: center; gap: 4px; white-space: nowrap;
  background: none; border: 0; cursor: pointer; font-family: inherit;
}
.tdc-f1-panel { background: #fff; border: 1px solid var(--tdc-line); border-radius: 16px; padding: 4px 16px 16px; margin-top: 10px; }
.tdc-f1-panel[hidden] { display: none; }
.tdc-f1-group { padding: 12px 0 10px; border-bottom: 1px dashed var(--tdc-line-soft); }
.tdc-f1-group:last-of-type { border-bottom: 0; }
.tdc-f1-group__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.tdc-f1-group__label { font-size: 12.48px; font-weight: 600; color: var(--tdc-rose); letter-spacing: .06em; }
.tdc-f1-group__count { font-size: 10.56px; color: var(--tdc-sub); white-space: nowrap; }
.tdc-f1-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.tdc-f-chip {
  display: inline-flex; align-items: center; gap: 4px; padding: 6px 13px;
  border-radius: 999px; border: 1px solid var(--tdc-line); background: #fff;
  font-size: 12.48px; color: #4a3530; cursor: pointer; transition: all .15s; font-family: inherit; white-space: nowrap;
}
.tdc-f-chip:hover { border-color: var(--tdc-pink); color: var(--tdc-rose); }
.tdc-f-chip.is-active { background: var(--tdc-pink); border-color: var(--tdc-pink); color: #fff; }
.tdc-f-chip input { position: absolute; opacity: 0; pointer-events: none; width: 0; height: 0; }
.tdc-f1-apply {
  position: sticky; bottom: 0; display: flex; align-items: center; gap: 12px;
  padding: 10px 0 2px; background: linear-gradient(180deg, transparent, #fff 30%);
}
.tdc-f1-apply .tdc-btn { flex: 1; }
.tdc-f1-apply .tdc-btn small { font-weight: 400; font-size: .82em; opacity: .9; }
.tdc-f1-clear { font-size: 12.16px; color: var(--tdc-sub) !important; text-decoration: underline !important; white-space: nowrap; }

/* 一覧: 件数 + 並び替え行 */
.tdc-p-countrow { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin: 16px 2px 12px; }
.tdc-p-count { font-size: 13.12px; color: var(--tdc-sub); }
.tdc-p-count b { color: var(--tdc-rose); font-size: 1.25em; }
.tdc-p-sort { font-size: 12.16px; color: var(--tdc-sub); white-space: nowrap; display: none; }
@media (min-width: 721px) { .tdc-p-sort { display: inline; } }
.tdc-p-cards { display: flex; flex-direction: column; gap: 14px; }

/* ════ PC 一覧 2 カラム + サイドバー ════ */
.tdc-p-pcgrid { margin-top: 2px; }
.tdc-p-pcmain { min-width: 0; }
.tdc-p-side { display: none; }
@media (min-width: 981px) {
  .tdc-p-pcgrid { display: grid; grid-template-columns: 1fr 272px; gap: 24px; align-items: start; }
  .tdc-p-side { display: flex; flex-direction: column; gap: 16px; position: sticky; top: 16px; margin-top: 14px; }
}
.tdc-p-side__card { background: #fff; border: 1px solid var(--tdc-line); border-radius: 12px; padding: 15px 16px 10px; }
.tdc-p-side__title {
  font-size: 12.16px; font-weight: 700; color: var(--tdc-rose); letter-spacing: .1em;
  display: flex; align-items: center; gap: 10px; margin-bottom: 6px;
}
.tdc-p-side__title::after { content: ""; flex: 1; height: 1px; background: var(--tdc-line-soft); }
.tdc-p-side__links { display: flex; flex-direction: column; }
.tdc-p-side__link {
  display: flex; justify-content: space-between; align-items: center; gap: 8px;
  padding: 9px 2px; font-size: 12.8px; color: #4a423d; cursor: pointer;
  border-bottom: 1px dashed var(--tdc-line-soft); transition: color .12s;
}
.tdc-p-side__link:last-child { border-bottom: 0; }
.tdc-p-side__link:hover { color: var(--tdc-rose); }
.tdc-p-side__cnt { font-size: 11.52px; color: var(--tdc-rose); white-space: nowrap; }
/* 地域ラダー: 施術(全国) → 都道府県(全体) の縦導線。市区町村リストの上に置く */
.tdc-p-side__ladder { display: flex; flex-direction: column; gap: 6px; margin-bottom: 4px; }
.tdc-p-side__up {
  display: flex; align-items: center; gap: 8px; padding: 8px 10px;
  font-size: 12.8px; color: #4a423d; text-decoration: none;
  background: var(--tdc-pink-bg, #fdf6f4); border: 1px solid var(--tdc-line-soft);
  border-radius: 8px; transition: background .12s, color .12s;
}
.tdc-p-side__up:hover { background: #f7ebe7; color: var(--tdc-rose); }
.tdc-p-side__up-lv {
  flex: none; font-size: 10px; font-weight: 700; letter-spacing: .06em;
  color: #fff; background: var(--tdc-rose, #a8847f); border-radius: 4px; padding: 2px 6px;
}
.tdc-p-side__up.is-current { background: #fff; color: #2b2320; font-weight: 600; cursor: default; }
.tdc-p-side__up.is-current:hover { background: #fff; color: #2b2320; }
.tdc-p-side__sub {
  font-size: 11.52px; font-weight: 700; color: #8a7d76;
  margin: 12px 0 2px; letter-spacing: .04em;
}
.tdc-p-side__link.is-current {
  color: #2b2320; font-weight: 700; cursor: default;
}
.tdc-p-side__link.is-current:hover { color: #2b2320; }
.tdc-p-side__link.is-current .tdc-p-side__cnt {
  color: #fff; background: var(--tdc-rose, #a8847f);
  border-radius: 999px; padding: 1px 8px; font-weight: 600;
}
/* DBページ下部の監修者ブロック余白 (記事系より下げた配置) */
.tdc-region-page .tdc-supervisor-section { margin: 28px 0 8px; }
/* PC ではサイドバーに市区町村があるため下部の重複セクションを隠す */
@media (min-width: 981px) {
  .tdc-region-page .tdc-child-regions { display: none; }
}

/* ════ 0件 empty state (06) ════ */
.tdc-e-card {
  background: #fff; border: 1px solid var(--tdc-line); border-radius: 16px;
  padding: 26px 20px 22px; text-align: center; position: relative; overflow: hidden;
}
.tdc-e-card__deco {
  position: absolute !important; top: -40px; left: 50%; transform: translateX(-50%);
  width: 200px; height: 80px; border-radius: 50%;
  background: radial-gradient(ellipse, rgba(201,168,164,.14), transparent 70%);
}
.tdc-e-card > * { position: relative; }
.tdc-e-card__mark {
  width: 54px; height: 54px; margin: 0 auto 12px; border-radius: 50%;
  border: 1px dashed var(--tdc-pink); display: flex; align-items: center; justify-content: center;
  font-family: var(--tdc-serif); color: var(--tdc-rose); font-size: 20.8px; background: var(--tdc-pink-bg);
}
.tdc-ds .tdc-e-card__title,
.post_content .tdc-ds h2.tdc-e-card__title {
  font-family: var(--tdc-serif); font-weight: 600; font-size: 16.8px !important;
  margin-bottom: 6px !important; letter-spacing: .04em;
}
.tdc-e-card__lead { font-size: 12.8px; color: var(--tdc-sub); line-height: 1.8; margin-bottom: 4px; }
.tdc-e-alt { margin-top: 14px; display: flex; flex-direction: column; gap: 8px; }
.tdc-e-alt__item {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  background: #fff; border: 1px solid var(--tdc-line); border-radius: 12px; padding: 12px 14px;
  transition: border-color .2s;
}
.tdc-e-alt__item:hover { border-color: var(--tdc-pink); }
.tdc-e-alt__name { font-weight: 600; font-size: 14.08px; color: var(--tdc-text); }
.tdc-e-alt__name small { display: block; font-weight: 400; font-size: 11.52px; color: var(--tdc-sub); }
.tdc-e-alt__count { font-size: 11.84px; color: var(--tdc-rose); font-weight: 600; white-space: nowrap; }
.tdc-e-alt__count::after { content: " ›"; color: var(--tdc-pink); }
.tdc-e-alt__chev { color: var(--tdc-pink); }

/* ── TOP hero: 既存マークアップ (tdc-hero__*) を t-hero 意匠にオーバーライド ── */
/* 写真ヒーロー化に伴い旧グラデ背景は撤去。background ショートハンドが
   background-position を 0% 0% にリセットして tdc-front の指定を潰すため、
   背景色のみを longhand で残す（位置はリセットしない）。 */
.tdc-front-page .tdc-hero { background-color: var(--tdc-bg, #fafaf5); }
.tdc-front-page .tdc-hero__eyebrow {
  font-family: Georgia, serif; font-size: 9.6px; letter-spacing: .34em;
  color: var(--tdc-pink); text-transform: uppercase;
}
.tdc-front-page .tdc-hero__title em::after {
  background: linear-gradient(90deg, rgba(212,165,116,.32), rgba(201,168,164,.32));
  height: 7px; border-radius: 3px;
}
.tdc-front-page .tdc-hero__search {
  background: rgba(255,255,255,.88);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  border: 1px solid var(--tdc-line); border-radius: 16px;
  box-shadow: 0 18px 40px -22px rgba(168,132,127,.4);
}
.tdc-front-page .tdc-hero__tab { background: none; border: 0; color: var(--tdc-sub); position: relative; }
.tdc-front-page .tdc-hero__tab.is-active { color: var(--tdc-rose); background: none; }
.tdc-front-page .tdc-hero__tab.is-active::after {
  content: ""; position: absolute; left: 18%; right: 18%; bottom: -1px; height: 2px;
  border-radius: 2px; background: var(--tdc-grad-cta);
}
.tdc-front-page .tdc-hero__chips .tdc-chip {
  background: #fff; border: 1px solid var(--tdc-line); color: #4a3530;
  padding: 6px 13px; font-size: 12.48px;
}
.tdc-front-page .tdc-hero__chips .tdc-chip:hover { border-color: var(--tdc-pink); color: var(--tdc-rose); }
.tdc-front-page .tdc-hero__trust-num { font-family: Georgia, serif; color: var(--tdc-rose); }

/* ランキング 4 位以降のバッジ */
.tdc-t-rank-no--n { background: #fff; border: 1px solid var(--tdc-line); color: var(--tdc-rose); box-shadow: none; }

/* 一覧ページ先頭の空 page_title セクション (SWELL 構造維持用) の余白を除去 */
.tdc-region-page .main-fv.page_title { display: none; }

/* ── 比較トレイ X1 ── */
.tdc-x1-add {
  align-self: flex-end;
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 36px; padding: 6px 14px; margin-bottom: 2px;
  border-radius: 999px; border: 1px solid var(--tdc-pink);
  background: #fff; color: var(--tdc-rose);
  font-size: 12.16px; font-family: inherit; cursor: pointer;
  transition: all .15s; white-space: nowrap;
}
.tdc-x1-add:hover { background: var(--tdc-pink-bg); }
.tdc-x1-add.is-on { background: var(--tdc-rose); border-color: var(--tdc-rose); color: #fff; }
@media (min-width: 721px) {
  .tdc-card-b__bottom .tdc-x1-add { align-self: stretch; }
}
/* [hidden] は属性詳細度(0,1,0)で .tdc-x1-tray(0,1,0) と同点→後勝ちの display:flex に
   負けて常時表示されるバグ。(0,2,0) で明示的に打ち消す（比較トレイ/シート両方）。 */
.tdc-x1-tray[hidden], .tdc-x1-sheet[hidden] { display: none !important; }
.tdc-x1-tray {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 50;
  width: 100%; max-width: 720px; margin: 0 auto;
  background: rgba(45,31,28,.94);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  border-radius: 16px 16px 0 0; padding: 12px 14px calc(12px + env(safe-area-inset-bottom));
  box-shadow: 0 -8px 30px -12px rgba(45,31,28,.5);
  display: flex; align-items: center; gap: 10px; color: #fff;
}
.tdc-x1-tray__slots { flex: 1; display: flex; gap: 7px; min-width: 0; }
.tdc-x1-tray__slot {
  flex: 1; height: 44px; border-radius: 9px; border: 1px dashed rgba(255,255,255,.25);
  display: flex; align-items: center; justify-content: center; text-align: center;
  font-size: 9.92px; color: rgba(255,255,255,.45); line-height: 1.3; padding: 2px 4px;
  overflow: hidden;
}
.tdc-x1-tray__slot.is-filled {
  border: 0; background: rgba(255,255,255,.12); color: #fff; font-size: 10.56px; font-weight: 600;
}
.tdc-x1-tray .tdc-btn[disabled] { opacity: .45; cursor: not-allowed; transform: none; }
.tdc-x1-sheet { position: fixed; inset: 0; z-index: 60; background: rgba(45,31,28,.45); display: flex; align-items: flex-end; }
.tdc-x1-sheet[hidden] { display: none; }
.tdc-x1-sheet__panel {
  width: 100%; max-height: 76vh; overflow-y: auto;
  background: #fff; border-radius: 18px 18px 0 0; padding: 14px 16px calc(18px + env(safe-area-inset-bottom));
  box-shadow: 0 -16px 36px -22px rgba(45,31,28,.6);
}
@media (min-width: 721px) {
  .tdc-x1-sheet { align-items: center; justify-content: center; }
  .tdc-x1-sheet__panel { max-width: 720px; border-radius: 18px; }
}
.tdc-x1-sheet__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.tdc-ds .tdc-x1-sheet__title,
.tdc-x1-sheet__title { font-family: var(--tdc-serif); font-weight: 600; font-size: 16.32px; color: #2f2a27; }
.tdc-x1-sheet__close {
  width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--tdc-line);
  background: #fff; color: var(--tdc-sub); cursor: pointer; font-size: 14.4px;
}
.tdc-x1-table { width: 100%; border-collapse: collapse; font-size: 12.16px; }
.tdc-x1-table th, .tdc-x1-table td { padding: 9px 8px; border-bottom: 1px solid var(--tdc-line-soft); text-align: center; }
.tdc-x1-table th:first-child, .tdc-x1-table td:first-child { text-align: left; color: var(--tdc-sub); font-weight: 500; font-size: 11.2px; width: 64px; }
.tdc-x1-table thead th { font-family: var(--tdc-serif); font-size: 12.8px; color: var(--tdc-text); border-bottom: 1px solid var(--tdc-line); }
.tdc-x1-table .is-best { color: var(--tdc-rose); font-weight: 700; }

/* ══ 比較表 v2（tdc-x1t）: 30-40代女性ペルソナ向けの要点比較 ══ */
.tdc-x1t-scroll { overflow-x: auto; margin: 0 -4px; padding: 0 4px; }
.tdc-x1t { min-width: 100%; table-layout: fixed; }
/* swell .post_content th の暗色背景/白文字がシートを侵食するため全面リセット */
.tdc-x1t th, .tdc-x1t td {
  vertical-align: middle;
  background: #fff !important; color: inherit !important;
  border: 0 !important; border-bottom: 1px solid var(--tdc-line-soft) !important;
}
.tdc-x1t thead th { border-bottom: 1px solid var(--tdc-line) !important; padding: 4px 6px 12px; }
.tdc-x1t td.is-best { background: #fdf4f1 !important; }
.tdc-x1t__cta-row th, .tdc-x1t__cta-row td { border-bottom: 0 !important; }
.tdc-x1t__corner { width: 74px !important; }
.tdc-x1t tbody th[scope="row"] {
  width: 74px; font-size: 10.5px; color: #a3958c; letter-spacing: .04em;
  font-weight: 600; line-height: 1.5; white-space: nowrap;
}
.tdc-x1t tbody td { min-width: 88px; }
/* 院ヘッダ: 写真 + 名前（リンク） */
.tdc-x1t__clinic {
  width: auto !important; display: flex; flex-direction: column; align-items: center; gap: 7px;
  text-decoration: none !important; color: inherit;
}
.tdc-x1t__avatar {
  width: 52px; height: 52px; border-radius: 14px; overflow: hidden; flex: 0 0 auto;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #f0e0d8, #f5e9e4);
  box-shadow: 0 3px 10px -4px rgba(168,132,127,.4);
}
.tdc-x1t__avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tdc-x1t__avatar.is-logo { background: #fff; box-shadow: inset 0 0 0 1px var(--tdc-line); }
.tdc-x1t__avatar.is-logo img { object-fit: contain; padding: 6px; }
.tdc-x1t__avatar.is-empty { font-family: var(--tdc-serif); font-size: 20px; font-weight: 600; color: #b79a92; }
.tdc-x1t__name {
  font-size: 12px; font-weight: 700; color: #2f2a27; line-height: 1.4;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.tdc-x1t__branch { display: block; font-size: 10px; font-weight: 500; color: var(--tdc-sub); margin-top: 1px; }
/* 価格セル */
.tdc-x1t__price { font-family: Georgia, "Times New Roman", serif; font-size: 14.5px; font-weight: 700; color: #2f2a27; white-space: nowrap; }
.tdc-x1t__price i { font-style: normal; font-size: .68em; color: var(--tdc-sub); margin-left: 1px; }
.tdc-x1t td.is-best { background: #fdf4f1; }
.tdc-x1t td.is-best .tdc-x1t__price { color: var(--tdc-rose); }
.tdc-x1t__best {
  display: block; margin-top: 2px; font-size: 8.5px; font-weight: 700; letter-spacing: .18em;
  color: var(--tdc-rose);
}
.tdc-x1t td.is-na { color: #cfc2b8; }
/* 術式タグ（行ラベル内） */
.tdc-x1t__tag { display: inline-block; font-size: 9px; font-weight: 700; border-radius: 4px; padding: 1px 5px; margin-right: 3px; letter-spacing: .02em; }
.tdc-x1t__tag--m1 { color: #8a6f3f; background: #f5e9d4; }
.tdc-x1t__tag--m2 { color: #8a5148; background: #f6ddd6; }
.tdc-x1t__tag--m3 { color: #5f6a4e; background: #e7efdd; }
/* 相場・評価・アクセス */
.tdc-x1t__ctx { display: inline-block; font-size: 10px; font-weight: 700; border-radius: 6px; padding: 3px 8px; white-space: nowrap; }
.tdc-x1t__ctx.is-low  { color: #4e6e4e; background: #eaf2e6; }
.tdc-x1t__ctx.is-mid  { color: #7a6a5f; background: #f4ede7; }
.tdc-x1t__ctx.is-high { color: #8a6a52; background: #f6ede2; }
.tdc-x1t__star { color: var(--tdc-terra); font-size: 11px; margin-right: 2px; }
.tdc-x1t__cnt { font-size: 10px; color: var(--tdc-sub); margin-left: 2px; }
.tdc-x1t__sta { display: block; font-size: 11px; color: #4a423d; font-weight: 600; }
.tdc-x1t__walk { display: block; font-size: 10.5px; color: var(--tdc-sub); margin-top: 1px; }
.tdc-x1t__walk.is-best-inline { color: var(--tdc-rose); font-weight: 700; }
/* CTA 行 */
.tdc-x1t__cta-row th, .tdc-x1t__cta-row td { border-bottom: 0; padding-top: 12px; }
.tdc-x1t__cta-row .tdc-btn { width: 100%; display: block; padding: 9px 6px; font-size: 11.5px; white-space: nowrap; }
.tdc-x1t__detail {
  display: block; margin-top: 7px; font-size: 10.5px; color: var(--tdc-sub);
  text-decoration: none !important; border-bottom: 0;
}
.tdc-x1t__detail:hover { color: var(--tdc-rose); }
.tdc-x1t__note { margin: 10px 2px 0; font-size: 10px; color: #b3a69e; }
@media (min-width: 721px) {
  .tdc-x1-sheet__panel { max-width: 760px; padding: 20px 26px 24px; }
  .tdc-x1t__corner, .tdc-x1t tbody th[scope="row"] { width: 96px !important; }
  .tdc-x1t__avatar { width: 62px; height: 62px; }
  .tdc-x1t__name { font-size: 13px; }
  .tdc-x1t__price { font-size: 16px; }
}
@media (max-width: 720px) {
  /* SP: 相場バッジは折返し許可（右端で切れるより2行が美しい） */
  .tdc-x1t__ctx { white-space: normal; line-height: 1.45; }
}

/* ── 地域×施術 関連記事（同一地域を名指しする記事への強い内部リンク） 2026-08-04 ──
   リッチカード版: アイキャッチ + 地域×施術バッジ + 執筆者/更新月 + CTA */
.tdc-region-related { padding: 24px 16px 8px; max-width: 1080px; margin: 0 auto; }
.tdc-region-related__lead { font-size: 13.5px; color: var(--tdc-sub, #7a7068); margin: -6px 0 20px; text-align: center; }
.tdc-region-related__list { list-style: none !important; margin: 0; padding: 0 !important; display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 18px; }
.tdc-region-related__list li { margin: 0; padding: 0; }
.post_content .tdc-region-related__card, .tdc-region-related__card {
    display: flex; flex-direction: column; width: auto !important; height: 100%;
    background: #fff; border: 1px solid var(--tdc-line, #ece6e0); border-radius: 18px; overflow: hidden;
    text-decoration: none !important; transition: border-color .25s, box-shadow .25s, transform .25s;
    box-shadow: 0 8px 24px -18px rgba(168, 132, 127, .25);
}
.tdc-region-related__card:hover { border-color: var(--tdc-pink, #c9a8a4); box-shadow: 0 18px 36px -18px rgba(168, 132, 127, .4); transform: translateY(-3px); }
.tdc-region-related__media { position: relative; display: block; aspect-ratio: 16 / 9; overflow: hidden; background: linear-gradient(135deg, #fdf7f5 0%, #f5e9e2 100%); }
.tdc-region-related__media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .45s ease; }
.tdc-region-related__card:hover .tdc-region-related__media img { transform: scale(1.045); }
.tdc-region-related__media-ph {
    position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
    font-family: var(--tdc-serif, "Noto Serif JP", serif); font-size: 44px; color: var(--tdc-pink, #c9a8a4);
}
.tdc-region-related__badge {
    position: absolute; left: 12px; bottom: 12px; display: inline-block;
    background: rgba(255, 255, 255, .94); color: var(--tdc-rose, #a8847f);
    font-size: 11px; font-weight: 700; letter-spacing: .04em;
    padding: 5px 12px; border-radius: 999px; box-shadow: 0 2px 8px -2px rgba(0, 0, 0, .18);
}
.tdc-region-related__body { display: flex; flex-direction: column; gap: 10px; padding: 16px 18px 18px; flex: 1; }
.tdc-region-related__ttl { font-size: 14.5px; font-weight: 600; color: var(--tdc-ink, #2d2520); line-height: 1.65; }
.tdc-region-related__meta { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 11.5px; color: var(--tdc-sub, #9a8f86); }
.tdc-region-related__cta { margin-top: auto; padding-top: 4px; font-size: 12.5px; font-weight: 700; color: var(--tdc-rose, #a8847f); }
.tdc-region-related__cta span { transition: transform .2s; display: inline-block; }
.tdc-region-related__card:hover .tdc-region-related__cta span { transform: translateX(3px); }
@media (max-width: 600px) {
    .tdc-region-related__list { grid-template-columns: 1fr; gap: 14px; }
}
