@charset "UTF-8";
/*
    Template: swell
    Theme Name: SWELL CHILD
    Theme URI: https://swell-theme.com/
    Description: SWELLの子テーマ
    Version: 1.0.0
    Author: LOOS WEB STUDIO
    Author URI: https://loos-web-studio.com/

    License: GNU General Public License
    License URI: http://www.gnu.org/licenses/gpl.html
*/

/* ========================================
   共通：フォント設定
======================================== */

/* 本文 */
body {
  font-family: "Zen Maru Gothic", sans-serif;
}

/* ボタン */
.swell-block-button > a,
.wp-block-button__link {
  font-family: "Shippori Mincho", serif;
}

/* 投稿記事内のボタンは本文の字体を使用 */
.single .post_content .swell-block-button > a,
.single .post_content .wp-block-button__link {
  font-family: inherit;
}

/* 見出し */
h1, h2, h3, h4, h5, h6 {
  font-family: "Shippori Mincho", serif;
}

/* ========================================
   共通：パンくず
======================================== */
#breadcrumb.p-breadcrumb {
  background-color: #fff8f2;
}

/* ========================================
   共通：ヘッダー
======================================== */
/* PC：現行サイトに合わせたロゴと予約ボタン */
@media (min-width: 960px) {
  #header.l-header {
    background: #fff;
    color: #58494d;
    box-shadow: 0 1px 4px rgba(181, 143, 112, .16);
  }

  #header .l-header__barInner {
    max-width: none;
    padding-inline: 30px;
  }

  #header .l-header__inner {
    max-width: none;
    min-height: 80px;
    padding: 0 30px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
  }

  #header .l-header__logo {
    flex-shrink: 0;
    padding: 0;
  }

  #header .c-headLogo__img {
    width: 330px;
    max-width: 100%;
    height: auto;
  }

  #header .c-gnav {
    align-items: center;
    gap: 6px;
  }

  #header .c-gnav > li > a {
    min-height: 0;
    padding: 9px 18px;
    border-radius: 5px;
    color: #fff;
    font-family: "Shippori Mincho", serif;
    font-size: 15px;
    font-weight: 400;
    line-height: 1;
    white-space: nowrap;
    transition: opacity .2s;
  }

  #header .c-gnav > .menu-item-118 > a {
    background: #f2c1c7;
  }

  #header .c-gnav > .menu-item-119 > a {
    background: #cac6e7;
  }

  #header .c-gnav > .menu-item-120 > a {
    background: #b3d8b4;
  }

  #header .c-gnav > li > a:hover {
    opacity: .75;
  }

  #header .c-gnav > li > a::after {
    display: none;
  }
}

/* PC：予約ボタンの右にSWELLの開閉メニューを表示 */
@media (min-width: 960px) {
  #header .l-header__gnav {
    margin-left: auto;
  }

  #header .l-header__menuBtn.sp_ {
    display: block !important;
 /* SWELLのPC向け非表示指定を解除 */
    position: static;
    flex: 0 0 64px;
    width: 64px;
    height: 64px;
    margin: 0;
    color: #b58f70;
  }

  #header .l-header__menuBtn .c-iconBtn {
    border: 1px solid #e6d4c4;
    border-radius: 50%;
    background: #fff;
  }

  #header .l-header__menuBtn .c-iconBtn__icon {
    font-size: 28px;
  }

  #header .l-header__menuBtn .c-iconBtn__label {
    font-family: "Shippori Mincho", serif;
    font-weight: 400;
    font-size: 10px;
  }

  #header .l-header__menuBtn .c-iconBtn:hover {
    background: #fffaf7;
  }

  #sp_menu.p-spMenu {
    display: block;
  }

  #sp_menu .p-spMenu__inner {
    width: 420px;
    max-width: 88vw;
    padding-top: 80px;
  }

  #sp_menu .p-spMenu__body {
    padding: 0 30px 40px;
  }

  #sp_menu .p-spMenu__closeBtn {
    width: 64px;
    height: 64px;
  }
}

/* 小さめのPCでもロゴ・予約ボタン・メニューが収まる余白 */
@media (min-width: 960px) and (max-width: 1199px) {
  #header .l-header__barInner {
    padding-inline: 20px;
  }

  #header .l-header__inner {
    padding-inline: 20px;
    gap: 16px;
  }

  #header .c-headLogo__img {
    width: 280px;
  }

  #header .c-gnav > li > a {
    padding-inline: 12px;
    font-size: 14px;
  }
}

/* ========================================
   共通：開いたメニュー（PC）
======================================== */
@media (min-width: 960px) {
  #sp_menu .p-spMenu__inner {
    width: 100%;
    max-width: none;
    padding-top: 90px;
    background: #fff;
  }

  #sp_menu .p-spMenu__inner::before {
    background: #fff;
    opacity: 1;
  }

  #sp_menu .p-spMenu__body {
    padding: 0 100px 60px;
    color: #dabba0;
    font-family: "Shippori Mincho", serif;
    font-weight: 400;
  }

  #sp_menu .c-widget__title.-spmenu {
    display: none;
  }

  #sp_menu .p-spMenu__nav {
    max-width: 1420px;
    margin: 0 auto;
    padding: 40px 36px;
    border: 2px solid #e7bea1;
    border-radius: 20px;
  }

  #sp_menu .c-spnav {
    display: grid;
    grid-template-columns: repeat(10, minmax(0, 1fr));
    gap: 0;
  }

  #sp_menu .c-spnav li {
    margin: 0;
    border: 0;
    min-width: 0;
  }

  #sp_menu .c-spnav a {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px 12px;
    min-height: 72px;
    border: 0;
    font-size: clamp(16px, 1.35vw, 24px);
    font-weight: 400;
    line-height: 1.6;
    letter-spacing: .15em;
    text-align: center;
    color: inherit;
    background: transparent;
  }

  #sp_menu .c-spnav a::before,
  #sp_menu .c-spnav a::after {
    display: none;
  }

  #sp_menu .c-spnav a:hover {
    background: #fff8f2;
  }

  #sp_menu .c-spnav > .menu-item-92 {
    grid-column: 1 / 6;
    grid-row: 1 / 3;
    padding-right: 28px;
    border-right: 1px solid #dabba0;
  }

  #sp_menu .c-spnav > .menu-item-103 {
    grid-column: 6 / 11;
    grid-row: 1;
    padding-left: 28px;
  }

  #sp_menu .c-spnav > :is(.menu-item-92, .menu-item-103) > a {
    display: inline-flex;
    min-height: 0;
    margin-bottom: 18px;
    padding: 8px 24px;
    border-radius: 6px;
    background: #dabba0;
    color: #fff;
    font-size: 20px;
  }

  #sp_menu .c-spnav .sub-menu {
    display: grid !important;
 /* PCでは子項目を常時展開 */
    margin: 0;
    padding: 0;
    border-top: 2px solid #dabba0;
    list-style: none;
  }

  #sp_menu .menu-item-92 > .sub-menu {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }

  #sp_menu .menu-item-92 > .sub-menu > li {
    grid-column: span 2;
    border-bottom: 1px solid #e7cdb9;
    border-right: 1px solid #e7cdb9;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(-n+5) {
    grid-column: span 3;
  }

  /* 全項目の行・列を固定し、空きマスへの回り込みを防ぐ */
  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(1) {
    grid-area: 1 / 1 / 2 / 4;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(2) {
    grid-area: 1 / 4 / 2 / 7;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(3) {
    grid-area: 2 / 1 / 3 / 4;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(4) {
    grid-area: 2 / 4 / 3 / 7;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(5) {
    grid-area: 3 / 1 / 4 / 4;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(6) {
    grid-area: 4 / 1 / 5 / 3;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(7) {
    grid-area: 4 / 3 / 5 / 5;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(8) {
    grid-area: 4 / 5 / 5 / 7;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(9) {
    grid-area: 5 / 1 / 6 / 3;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(10) {
    grid-area: 5 / 3 / 6 / 5;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(11) {
    grid-area: 5 / 5 / 6 / 7;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(n+6) > a {
    font-size: clamp(14px, 1.1vw, 20px);
    min-height: 84px;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:is(:nth-child(2), :nth-child(4), :nth-child(8), :nth-child(11)) {
    border-right: 0;
  }

  #sp_menu .menu-item-103 > .sub-menu {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #sp_menu .menu-item-103 > .sub-menu > li {
    border-bottom: 1px solid #e7cdb9;
  }

  #sp_menu .menu-item-103 > .sub-menu > li:nth-child(odd) {
    border-right: 1px solid #e7cdb9;
  }

  #sp_menu .c-spnav > .menu-item-110 {
    grid-column: 6 / 11;
    grid-row: 2;
    padding: 24px 0 0 28px;
  }

  #sp_menu .c-spnav > .menu-item-110::before {
    content: "施設と設備";
    display: inline-block;
    padding: 8px 24px;
    border-radius: 6px;
    background: #dabba0;
    color: #fff;
    font-size: 20px;
    letter-spacing: .15em;
  }

  #sp_menu .c-spnav > .menu-item-110 > a {
    margin-top: 18px;
    border-top: 2px solid #dabba0;
  }

  #sp_menu .c-spnav > :is(.menu-item-111, .menu-item-112, .menu-item-113, .menu-item-114, .menu-item-115) {
    grid-column: span 2;
    grid-row: 3;
    margin-top: 28px;
    border-top: 2px solid #dabba0;
  }

  #sp_menu .c-spnav > :is(.menu-item-111, .menu-item-112, .menu-item-113, .menu-item-114) > a {
    border-right: 1px solid #e7cdb9;
  }

  #sp_menu .c-spnav > li:nth-child(n+4) > a {
    min-height: 100px;
    font-size: clamp(14px, 1.1vw, 20px);
  }

  #sp_menu .p-spMenu__closeBtn {
    top: 12px;
    right: 24px;
    width: 72px;
    height: 72px;
    border: 1px solid #fff;
    outline: 4px solid #e4b996;
    border-radius: 50%;
    background: #e4b996;
    color: #fff;
  }

  #sp_menu .p-spMenu__closeBtn .c-iconBtn__icon {
    font-size: 36px;
  }
}

@media (min-width: 960px) and (max-width: 1199px) {
  #sp_menu .p-spMenu__body {
    padding-inline: 30px;
  }

  #sp_menu .p-spMenu__nav {
    padding: 28px 24px;
  }
}

/* ========================================
   共通：メニューの開閉アニメーション
======================================== */
/* 全幅パネルを最後まで画面外に移動してから非表示にする */
#sp_menu .p-spMenu__inner {
  transition: transform .45s ease-out;
}

[data-spmenu="closed"] #sp_menu.-right .p-spMenu__inner {
  transform: translateX(100%);
}

[data-spmenu="closed"] #sp_menu.-left .p-spMenu__inner {
  transform: translateX(-100%);
}

[data-spmenu="opened"] #sp_menu .p-spMenu__inner {
  transform: translateX(0);
}

[data-spmenu="closed"] #sp_menu {
  transition: opacity 0s .45s;
}

[data-spmenu="opened"] #sp_menu {
  transition: opacity 0s;
}

/* ========================================
   共通：追従ヘッダー
======================================== */
/* 通常ヘッダーを固定し、スクロール中も同じ予約・開閉ボタンを使う */
#header.l-header {
  box-shadow: 0 1px 4px rgba(181, 143, 112, .16);
  position: fixed;
  top: var(--clinic-admin-offset, 0px);
  left: 0;
  width: 100%;
  z-index: 100;
  background: #fff;
}

#fix_header.l-fixHeader {
  display: none !important;
}

#body_wrap {
  padding-top: var(--swl-headerH, 108px);
}

body:has(#wpadminbar) {
  --clinic-admin-offset: 32px;
}

/* ログイン時：SWELLの固定位置指定より管理バー分の余白を優先 */
body:has(#wpadminbar) #header.l-header {
  top: 32px !important;
}

@media (max-width: 782px) {
  body:has(#wpadminbar) #header.l-header {
    top: 46px !important;
  }
}

#sp_menu.p-spMenu {
  top: var(--clinic-admin-offset, 0px);
  height: calc(100% - var(--clinic-admin-offset, 0px));
}

@media (max-width: 782px) {
  body:has(#wpadminbar) {
    --clinic-admin-offset: 46px;
  }
}

@media (max-width: 600px) {
  /* WordPress管理バーも固定し、スクロール後の隙間を防ぐ */
  #wpadminbar {
    position: fixed;
  }
}

/* ========================================
   共通：スマホのヘッダー・予約ボタン
======================================== */
@media (max-width: 959px) {
  #body_wrap {
    padding-top: 60px;
  }

  #header .l-header__bar, #header .l-header__customBtn {
    display: none;
  }

  #header .l-header__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 60px;
    padding: 0 10px;
  }

  #header .l-header__logo {
    padding: 0;
    min-width: 0;
  }

  #header .c-headLogo__img {
    width: min(280px, calc(100vw - 90px));
    height: auto;
  }

  #header .l-header__menuBtn {
    position: static;
    flex: 0 0 50px;
    width: 50px;
    height: 50px;
    color: #fff;
  }

  #header .l-header__menuBtn .c-iconBtn {
    border: 1px dotted #fff;
    outline: 3px solid #e4b996;
    border-radius: 50%;
    background: #e4b996;
  }

  #header .l-header__menuBtn .c-iconBtn__label {
    font-size: 9px;
  }

  /* 現行サイトと同様、左端に縦書きの予約ボタンを固定 */
  #header .l-header__gnav {
    display: block !important;
    position: fixed;
    top: calc(90px + var(--clinic-admin-offset, 0px));
    left: 0;
    width: 30px;
    height: auto;
    margin: 0;
  }

  #header .c-gnav {
    display: flex;
    flex-direction: column;
    gap: 2px;
    height: auto;
  }

  #header .c-gnav > li {
    width: 30px;
    height: auto;
  }

  #header .c-gnav > li > a {
    display: block;
    height: auto;
    min-height: 0;
    padding: 9px 6px;
    border-radius: 0 5px 5px 0;
    color: #fff;
    font-family: "Shippori Mincho", serif;
    font-weight: 400;
    font-size: 13px;
    line-height: 1.4;
    writing-mode: vertical-rl;
  }

  #header .c-gnav > .menu-item-118 > a {
    background: #f2c1c7;
  }

  #header .c-gnav > .menu-item-119 > a {
    background: #cac6e7;
  }

  #header .c-gnav > .menu-item-120 > a {
    background: #b3d8b4;
  }

  #header .c-gnav > li > a::after {
    display: none;
  }
}

/* ========================================
   共通：開いたメニュー（スマホ）
======================================== */
@media (max-width: 959px) {
  #sp_menu .p-spMenu__inner {
    width: 100%;
    max-width: none;
    padding-top: 76px;
    background: #fff;
  }

  #sp_menu .p-spMenu__inner::before {
    background: #fff;
    opacity: 1;
  }

  #sp_menu .p-spMenu__body {
    padding: 0 16px 32px;
    color: #dabba0;
    font-family: "Shippori Mincho", serif;
  }

  #sp_menu .c-widget__title.-spmenu {
    display: none;
  }

  #sp_menu .p-spMenu__nav {
    margin: 0;
    padding: 20px 14px;
    border: 1px solid #e7bea1;
    border-radius: 14px;
  }

  #sp_menu .c-spnav, #sp_menu .c-spnav li {
    margin: 0;
    padding: 0;
    list-style: none;
  }

  #sp_menu .c-spnav li {
    border: 0;
    min-width: 0;
  }

  #sp_menu .c-spnav a {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 14px 6px;
    min-height: 54px;
    border: 0;
    color: inherit;
    font-size: 15px;
    font-weight: 400;
    line-height: 1.6;
    text-align: center;
    background: transparent;
  }

  #sp_menu .c-spnav a::before, #sp_menu .c-spnav a::after {
    display: none;
  }

  #sp_menu .c-spnav > :is(.menu-item-92, .menu-item-103) > a {
    display: inline-flex;
    min-height: 0;
    margin: 10px 0 12px;
    padding: 6px 20px;
    border-radius: 5px;
    color: #fff;
    background: #dabba0;
  }

  #sp_menu .c-spnav .sub-menu {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin: 0 0 22px;
    padding: 0;
    border-top: 1px solid #dabba0;
  }

  #sp_menu .c-spnav .sub-menu > li {
    border-bottom: 1px solid #e7cdb9;
  }

  #sp_menu .c-spnav .sub-menu > li:nth-child(odd) {
    border-right: 1px solid #e7cdb9;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(5) {
    grid-column: 1 / -1;
    border-right: 0;
  }

  #sp_menu .c-spnav > li:nth-child(n+3) {
    border-top: 1px solid #e7cdb9;
  }

  #sp_menu .p-spMenu__closeBtn {
    top: 10px;
    right: 12px;
    width: 50px;
    height: 50px;
    border: 1px dotted #fff;
    outline: 3px solid #e4b996;
    border-radius: 50%;
    background: #e4b996;
    color: #fff;
  }

  #sp_menu .p-spMenu__closeBtn .c-iconBtn__icon {
    font-size: 28px;
  }
}

/* ========================================
   共通：メニューの罫線・ホバー範囲
======================================== */
/* 行の高い項目に合わせ、リンクもセル全体に広げる */
#sp_menu .c-spnav .sub-menu > li {
  display: flex;
}

#sp_menu .c-spnav .sub-menu > li > a {
  width: 100%;
  align-self: stretch;
}

#sp_menu .c-spnav a:hover {
  background: #fff8f2;
}

@media (min-width: 960px) {
  /* お問い合わせ右側の空き枠にも区切り線をつなぐ */
  #sp_menu .menu-item-92 > .sub-menu::after {
    content: "";
    grid-area: 3 / 4 / 4 / 7;
    border-bottom: 1px solid #e7cdb9;
    pointer-events: none;
  }

  /* 施設リンクは見出しの下の残り領域全体を使う */
  #sp_menu .c-spnav > .menu-item-110 {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
  }

  #sp_menu .c-spnav > .menu-item-110::before {
    flex-shrink: 0;
  }

  #sp_menu .c-spnav > .menu-item-110 > a {
    width: 100%;
    flex: 1;
  }
}

/* ========================================
   共通：スマホメニューのコンパクト表示
======================================== */
@media (max-width: 959px) {
  #sp_menu .p-spMenu__inner {
    padding-top: 66px;
  }

  #sp_menu .p-spMenu__body {
    padding: 0 10px 16px;
  }

  #sp_menu .p-spMenu__nav {
    padding: 10px;
  }

  #sp_menu .c-spnav {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #sp_menu .c-spnav > :is(.menu-item-92, .menu-item-103) {
    grid-column: 1 / -1;
  }

  #sp_menu .c-spnav a {
    min-height: 38px;
    padding: 6px 4px;
    font-size: 13px;
    line-height: 1.35;
    overflow-wrap: anywhere;
  }

  #sp_menu .c-spnav > :is(.menu-item-92, .menu-item-103) > a {
    margin: 4px 0 8px;
    padding: 5px 16px;
    font-size: 14px;
  }

  #sp_menu .c-spnav .sub-menu {
    margin-bottom: 10px;
  }

  /* 産科の基本項目は2列、関連サービスは3列 */
  #sp_menu .menu-item-92 > .sub-menu {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }

  #sp_menu .menu-item-92 > .sub-menu > li {
    grid-column: span 2;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(-n+4) {
    grid-column: span 3;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(5) {
    grid-column: 1 / -1;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(n+6) {
    border-right: 1px solid #e7cdb9;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:is(:nth-child(8), :nth-child(11)) {
    border-right: 0;
  }

  #sp_menu .menu-item-92 > .sub-menu > li:nth-child(n+6) > a {
    font-size: 11px;
  }

  #sp_menu .c-spnav > li:nth-child(n+3) > a {
    height: 100%;
    min-height: 38px;
    font-size: 12px;
  }

  #sp_menu .c-spnav > li:is(:nth-child(3), :nth-child(5), :nth-child(7)) > a {
    border-right: 1px solid #e7cdb9;
  }

  #sp_menu .p-spMenu__closeBtn {
    width: 44px;
    height: 44px;
  }
}

/* 分類ボタン：ホバー・キーボード操作時も白文字を読みやすく保つ */
#sp_menu .c-spnav > :is(.menu-item-92, .menu-item-103) > a:is(:hover, :focus-visible) {
  background: #c9a588;
  color: #fff;
}

/* スマホ：共通リンクにも分類見出しを付け、診療科と同じ罫線で統一 */
@media (max-width: 959px) {
  #sp_menu .p-spMenu__nav {
    border: 1px solid #e7bea1;
    border-radius: 14px;
  }

  #sp_menu .menu-item-103 > .sub-menu {
    margin-bottom: 0;
  }

  #sp_menu .c-spnav::before {
    content: "その他のご案内";
    grid-column: 1 / -1;
    grid-row: 3;
    justify-self: start;
    margin: 14px 0 8px;
    padding: 5px 16px;
    border-radius: 5px;
    background: #dabba0;
    color: #fff;
    font-size: 14px;
    line-height: 1.35;
  }

  #sp_menu .c-spnav > li:nth-child(n+3) {
    margin: 0;
    padding: 0;
    border: 0;
    border-bottom: 1px solid #e7cdb9;
    border-radius: 0;
    background: transparent;
  }

  #sp_menu .c-spnav > :is(.menu-item-110, .menu-item-111) {
    border-top: 1px solid #dabba0;
  }

  #sp_menu .c-spnav > li:nth-child(n+3) > a {
    height: 100%;
    min-height: 40px;
    padding: 6px 4px;
    color: inherit;
    font-size: 12px;
    border-radius: 0;
  }

  #sp_menu .c-spnav > :is(.menu-item-110, .menu-item-112, .menu-item-114) > a {
    border-right: 1px solid #e7cdb9;
  }

  #sp_menu .c-spnav > li:nth-child(n+3) > a:hover {
    background: #fff8f2;
  }
}

/* ========================================
   共通：メニューの自動配置
======================================== */
/* 固定の項目番号を使わず、基本案内・関連サービス・共通案内で折り返す */
#sp_menu .clinic-menu {
  display: grid;
  grid-template-columns: 1fr 1fr;
  color: #dabba0;
}

#sp_menu .clinic-menu__left {
  padding-right: 28px;
  border-right: 1px solid #dabba0;
  min-width: 0;
}

#sp_menu .clinic-menu__right {
  display: flex;
  flex-direction: column;
  padding-left: 28px;
  min-width: 0;
}

#sp_menu .clinic-menu__right .clinic-menu__section + .clinic-menu__section {
  margin-top: 24px;
}

#sp_menu .clinic-menu__section {
  min-width: 0;
}

#sp_menu .clinic-menu__heading {
  display: table;
  margin: 0 0 18px;
  padding: 8px 24px;
  border: 0;
  border-radius: 6px;
  background: #dabba0;
  color: #fff;
  font-family: "Shippori Mincho", serif;
  font-size: 20px;
  font-weight: 400;
  line-height: 1.6;
  letter-spacing: .15em;
}

#sp_menu .clinic-menu__heading a {
  display: block;
  color: inherit;
  text-decoration: none;
}

#sp_menu .clinic-menu__heading:has(a:hover) {
  background: #c9a588;
}

#sp_menu .clinic-menu__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0;
  padding: 0;
  list-style: none;
  border-top: 2px solid #dabba0;
  background: linear-gradient(#e7cdb9, #e7cdb9) bottom / 100% 1px no-repeat;
}

#sp_menu .clinic-menu__grid > li {
  display: flex;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
  border-bottom: 1px solid #e7cdb9;
}

#sp_menu .clinic-menu__grid > li:nth-child(odd) {
  border-right: 1px solid #e7cdb9;
}

#sp_menu .clinic-menu__grid > li > a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 72px;
  padding: 20px 12px;
  border: 0;
  color: inherit;
  background: transparent;
  font-family: "Shippori Mincho", serif;
  font-size: clamp(16px, 1.35vw, 24px);
  font-weight: 400;
  line-height: 1.6;
  letter-spacing: .15em;
  text-align: center;
  text-decoration: none;
  overflow-wrap: anywhere;
  -webkit-tap-highlight-color: transparent;
}

#sp_menu .clinic-menu a::before, #sp_menu .clinic-menu a::after {
  display: none;
}

#sp_menu .clinic-menu__grid > li > a:is(:hover, :active) {
  background: #fff8f2;
}

#sp_menu .clinic-menu a:focus-visible {
  outline: 2px solid #b58f70;
  outline-offset: -3px;
}

#sp_menu .clinic-menu__grid--services {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-top: 0;
}

#sp_menu .clinic-menu__grid--services > li:nth-child(n) {
  border-right: 1px solid #e7cdb9;
}

#sp_menu .clinic-menu__grid--services > li:nth-child(3n) {
  border-right: 0;
}

#sp_menu .clinic-menu__grid--services > li > a {
  min-height: 84px;
  font-size: clamp(14px, 1.1vw, 20px);
}

#sp_menu .clinic-menu__grid--single {
  grid-template-columns: 1fr;
}

#sp_menu .clinic-menu__grid--single > li:nth-child(n) {
  border-right: 0;
}

#sp_menu .clinic-menu__common {
  grid-column: 1 / -1;
  margin-top: 28px;
}

#sp_menu .clinic-menu__commonHeading {
  display: none;
}

#sp_menu .clinic-menu__grid > .clinic-menu__facilityMobile {
  display: none;
}

#sp_menu .clinic-menu__common--mobileOnly {
  display: none;
}

#sp_menu .clinic-menu__grid--common {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

#sp_menu .clinic-menu__grid--common > li:nth-child(n) {
  border-right: 1px solid #e7cdb9;
}

#sp_menu .clinic-menu__grid--common > li:last-child {
  border-right: 0;
}

#sp_menu .clinic-menu__grid--common > li > a {
  min-height: 100px;
  font-size: clamp(14px, 1.1vw, 20px);
}

@media (max-width: 959px) {
  #sp_menu .clinic-menu {
    grid-template-columns: 1fr;
  }

  #sp_menu .clinic-menu__left, #sp_menu .clinic-menu__right {
    padding: 0;
    border: 0;
  }

  #sp_menu .clinic-menu__right {
    margin-top: 10px;
  }

  /* スマホでは施設の共通案内用リンクを表示 */
  /* 奇数個でも最後の項目を広げず、2列の幅を揃える */
  #sp_menu .clinic-menu__heading {
    margin: 4px 0 8px;
    padding: 5px 16px;
    font-size: 14px;
    line-height: 1.35;
  }

  #sp_menu .clinic-menu__grid {
    border-top-width: 1px;
  }

  #sp_menu .clinic-menu__grid > li > a {
    min-height: 38px;
    padding: 6px 4px;
    font-size: 13px;
    line-height: 1.35;
    letter-spacing: 0;
  }

  #sp_menu .clinic-menu__grid--services {
    border-top: 0;
  }

  #sp_menu .clinic-menu__grid--services > li > a {
    font-size: 11px;
  }

  #sp_menu .clinic-menu__grid--common {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #sp_menu .clinic-menu__grid--common > li:nth-child(even) {
    border-right: 0;
  }

  #sp_menu .clinic-menu__grid--common > li > a {
    min-height: 40px;
    font-size: 12px;
  }

  #sp_menu .clinic-menu__common {
    margin-top: 14px;
  }

  #sp_menu .clinic-menu__commonHeading {
    display: table;
  }

  #sp_menu .clinic-menu__facilityDesktop {
    display: none;
  }

  #sp_menu .clinic-menu__grid > .clinic-menu__facilityMobile {
    display: flex;
  }

  #sp_menu .clinic-menu__common--mobileOnly {
    display: block;
  }
}

/* 自動配置：空きセルまで区切り線を通し、旧メニューの装飾は適用しない */
#sp_menu .clinic-menu li::before,
#sp_menu .clinic-menu li::after {
  content: none;
  display: none;
}

#sp_menu .clinic-menu__grid {
  background:
  linear-gradient(#e7cdb9, #e7cdb9) 50% 0 / 1px 100% no-repeat,
  linear-gradient(#e7cdb9, #e7cdb9) bottom / 100% 1px no-repeat;
}

#sp_menu .clinic-menu__grid--services {
  background:
  linear-gradient(#e7cdb9, #e7cdb9) 33.333333% 0 / 1px 100% no-repeat,
  linear-gradient(#e7cdb9, #e7cdb9) 66.666667% 0 / 1px 100% no-repeat,
  linear-gradient(#e7cdb9, #e7cdb9) bottom / 100% 1px no-repeat;
}

#sp_menu .clinic-menu__grid--single {
  background: linear-gradient(#e7cdb9, #e7cdb9) bottom / 100% 1px no-repeat;
}

#sp_menu .clinic-menu__grid--common {
  background:
  linear-gradient(#e7cdb9, #e7cdb9) 20% 0 / 1px 100% no-repeat,
  linear-gradient(#e7cdb9, #e7cdb9) 40% 0 / 1px 100% no-repeat,
  linear-gradient(#e7cdb9, #e7cdb9) 60% 0 / 1px 100% no-repeat,
  linear-gradient(#e7cdb9, #e7cdb9) 80% 0 / 1px 100% no-repeat,
  linear-gradient(#e7cdb9, #e7cdb9) bottom / 100% 1px no-repeat;
}

#sp_menu .clinic-menu__grid > li:nth-child(n) {
  border-right: 0;
}

@media (max-width: 959px) {
  #sp_menu .clinic-menu__grid--common {
    background:
    linear-gradient(#e7cdb9, #e7cdb9) 50% 0 / 1px 100% no-repeat,
    linear-gradient(#e7cdb9, #e7cdb9) bottom / 100% 1px no-repeat;
  }
}

/* ========================================
   共通：ハンバーガーボタンのデザイン
======================================== */
#header .l-header__menuBtn .c-iconBtn {
  position: relative;
  border: 1px solid #dabba0;
  outline: none;
  border-radius: 50%;
  background: #fff;
  color: #b58f70;
}

#header .l-header__menuBtn .c-iconBtn::after {
  content: "";
  position: absolute;
  inset: 3px;
  border: 1px dotted #dabba0;
  border-radius: 50%;
  pointer-events: none;
}

#header .l-header__menuBtn .c-iconBtn:hover {
  background: #fff8f2;
}

#header .l-header__menuBtn .c-iconBtn:focus-visible {
  outline: 2px solid #a98162;
  outline-offset: 3px;
}

#header .l-header__menuBtn .c-iconBtn__label {
  color: #b58f70;
  font-family: "Shippori Mincho", serif;
  font-weight: 400;
}

/* ========================================
   共通：スマホの下部固定予約バー
======================================== */
@media (max-width: 959px) {
  #body_wrap {
    padding-bottom: calc(56px + env(safe-area-inset-bottom, 0px));
  }

  #header .l-header__gnav {
    position: fixed;
    top: auto;
    bottom: 0;
    left: 0;
    width: 100%;
    padding: 0 0 env(safe-area-inset-bottom, 0px);
    background: #fff;
    box-shadow: 0 -2px 8px rgb(88 73 77 / 8%);
    z-index: 100;
  }

  #header .c-gnav {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    flex-direction: row;
    gap: 0;
    width: 100%;
    margin: 0;
  }

  #header .c-gnav > li {
    width: auto;
    min-width: 0;
  }

  #header .c-gnav > li > a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 56px;
    padding: 8px 4px;
    border-radius: 0;
    writing-mode: horizontal-tb;
    font-size: 14px;
    line-height: 1.4;
    text-align: center;
    letter-spacing: .03em;
  }

  /* 管理画面のナビゲーションラベルをそのまま表示する */
  #header .c-gnav > li > a .ttl {
    white-space: normal;
    overflow-wrap: anywhere;
    font-size: 12px;
    line-height: 1.5;
  }

  /* 丸の中は三本線だけにして余白を確保 */
  #header .l-header__menuBtn .c-iconBtn__label {
    display: none;
  }

  #header .l-header__menuBtn .c-iconBtn__icon {
    font-size: 22px;
  }

  /* ページ上部へ戻るボタンも予約バーの上へ */
  .p-fixBtnWrap {
    bottom: calc(72px + env(safe-area-inset-bottom, 0px)) !important;
  }

  .p-fixBtnWrap #pagetop {
    position: static;
  }
}

/* スマホ予約バー：診療科カラーと白文字のボタン */
@media (max-width: 959px) {
  #header .l-header__gnav {
    padding: 4px 4px calc(4px + env(safe-area-inset-bottom, 0px));
    box-shadow: 0 -3px 12px rgb(88 73 77 / 14%);
  }

  #header .c-gnav {
    gap: 4px;
  }

  #header .c-gnav > li > a {
    height: 56px;
    border-radius: 7px;
    color: #fff;
    font-family: "Zen Maru Gothic", sans-serif;
    font-weight: 700;
    transition: filter .2s, transform .2s;
  }

  #header .c-gnav > li > a .ttl {
    font-size: 13px;
    line-height: 1.4;
    letter-spacing: 0;
    word-break: normal;
    overflow-wrap: normal;
  }

  #header .c-gnav > li > a:hover {
    filter: brightness(.96);
  }

  #header .c-gnav > li > a:active {
    transform: translateY(1px);
  }

  #header .c-gnav > li > a:focus-visible {
    outline: 2px solid #58494d;
    outline-offset: -3px;
  }

  #body_wrap {
    padding-bottom: calc(64px + env(safe-area-inset-bottom, 0px));
  }

  .p-fixBtnWrap {
    bottom: calc(80px + env(safe-area-inset-bottom, 0px)) !important;
  }
}

/* ========================================
   医師紹介：診療科・資格のラベル
======================================== */
.doctor-specialty {
  display: inline-block;
  min-width: 140px;
  max-width: 100%;
  margin-block: 0 24px;
  margin-inline-end: 8px;
  padding: 4px 24px;
  border-radius: 14px;
  background: var(--page-accent, var(--color-women));
  color: #fff;
  font-family: "Shippori Mincho", serif;
  text-align: center;
  line-height: 1.5;
}

.doctor-specialty.is-children {
  --page-accent: var(--color-children);
}

/* ========================================
   wovie：紹介文とバナー
======================================== */
.wovie-intro {
  max-width: 900px;
  margin-inline: auto;
}

.wovie-intro .wp-block-image {
  max-width: 600px;
  margin-inline: auto;
}

/* URL・受信設定の帯はカラム幅に合わせる */
.page-section.wovie-content h3.page-band-heading-h3.is-style-section_ttl {
  width: 100%;
}

/* PC：左右の見出し・説明文・URL・QRを同じ行に揃える */
@media (min-width: 960px) {
  .wovie-links > .swell-block-columns__inner {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: repeat(8, auto);
  }

  .wovie-links > .swell-block-columns__inner > .swell-block-column {
    display: grid;
    grid-template-rows: subgrid;
    grid-row: 1 / -1;
    align-items: start;
    width: auto;
  }
}

/* QRコード：他ページでも同じクラスで大きさを統一 */
.wp-block-image.page-qr {
  width: 180px;
  max-width: 100%;
  margin-inline: auto;
}

.wp-block-image.page-qr img {
  width: 100%;
  height: auto;
}

/* 内容に合わせて幅を抑える画像。ほかのページでも共用する */
.wp-block-image.page-image-sm,
.wp-block-image.page-image-md {
  width: 100%;
  margin-inline: auto;
}

.wp-block-image.page-image-sm {
  max-width: 320px;
}

.wp-block-image.page-image-md {
  max-width: 600px;
}

/* ========================================
   理念ページ：メッセージと開業当時の写真
======================================== */
:is(.belief-message, .belief-content, .belief-history) {
  font-family: "Shippori Mincho", serif;
  line-height: 2;
}

.belief-content .swell-block-dl.is-style-float {
  line-height: 2;
}

.belief-content .is-style-float > :is(dt, dd) {
  padding-block: 0.5em;
}

.belief-content .is-style-float > dt::after {
  top: calc(1.5em - 1px);
}

/* 理念の見出し：楕円と重なる小さな楕円 */
.is-style-bg_grid:has(.belief-message) > .wp-block-group__inner-container {
  position: relative;
}

.is-style-bg_grid:has(.belief-message) > .wp-block-group__inner-container::before {
  content: "";
  position: absolute;
  top: 75px;
  inset-inline: 0;
  border-top: 1px solid #ccc;
}

.is-style-bg_grid:has(.belief-message) h2.is-style-section_ttl {
  position: relative;
  z-index: 1;
  display: grid;
  place-content: center;
  box-sizing: border-box;
  width: 260px;
  max-width: 100%;
  min-height: 150px;
  margin: 0 auto 48px;
  padding: 24px;
  border: 0;
  border-radius: 50%;
  background: #f2c6a6;
  color: #fff;
  font-size: 22px;
  font-weight: 400;
  line-height: 1.4;
}

.is-style-bg_grid:has(.belief-message) h2.is-style-section_ttl::before {
  content: "";
  position: absolute;
  inset: 9px;
  border: 3px dotted #fff;
  border-radius: 50%;
  pointer-events: none;
}

.is-style-bg_grid:has(.belief-message) h2.is-style-section_ttl::after {
  content: "";
  position: absolute;
  inset: auto -4px -8px auto;
  width: 66px;
  height: 50px;
  margin: 0;
  border: 0;
  border-radius: 50%;
  background: rgb(242 198 166 / 75%);
  transform: none;
  pointer-events: none;
}

.is-style-bg_grid:has(.belief-message),
.belief-content.is-style-bg_grid {
  padding-block: clamp(32px, 5vw, 64px);
}

:is(.belief-message, .belief-content) > .wp-block-group__inner-container {
  max-width: 900px;
  margin-inline: auto;
}

.belief-history {
  clear: both;
  max-width: 900px;
  margin-inline: auto;
  padding-block: 32px;
}

.belief-history > .swell-block-columns__inner {
  display: grid;
  grid-template-columns: minmax(0, 420px) minmax(0, 1fr);
  align-items: center;
  gap: clamp(32px, 4vw, 48px);
  margin: 0;
}

.belief-history > .swell-block-columns__inner > .swell-block-column {
  width: auto;
  padding: 0;
}

.belief-history .wp-block-image {
  max-width: 420px;
  margin-inline: auto;
  transform: rotate(-3deg);
}

@media (max-width: 781px) {
  .belief-history > .swell-block-columns__inner {
    grid-template-columns: minmax(0, 1fr);
    gap: 32px;
  }

  .belief-history > .swell-block-columns__inner > .swell-block-column {
    margin-inline: 0;
  }

  .belief-history .wp-block-image {
    width: 100%;
    max-width: none;
  }
}

/* ========================================
   トップページ：メインビジュアルのブログパーツ
======================================== */
#main_visual .p-mainVisual__textLayer {
  align-items: flex-end;
  justify-content: flex-end;
  max-width: none;
  padding: 0 4% 12px;
  text-shadow: none;
}

#main_visual .p-mainVisual__textLayer > .p-blogParts {
  margin: 0;
}

#main_visual .mv-copy,
#main_visual .mv-copy > .wp-block-group__inner-container {
  display: flex;
  align-items: center;
  gap: 0;
}

#main_visual .mv-copy {
  width: fit-content;
  max-width: 100%;
  margin: 0;
  padding: 0;
}

/* 日本語：明朝体と輪郭に沿う白いシャドウ */
#main_visual .mv-copy__ja {
  display: flex;
  align-items: center;
  gap: 16px;
  margin: 0;
  font-family: "Shippori Mincho", serif;
  font-size: clamp(16px, 1.4vw, 22px);
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.12em;
  color: #574940;
  text-shadow:
    1px 0 1px #fff,
    -1px 0 1px #fff,
    0 1px 1px #fff,
    0 -1px 1px #fff,
    0 0 4px #fff,
    0 0 4px #fff,
    0 0 8px #fff,
    0 0 12px #fff;
}

/* PC：日本語の左側の横線 */
#main_visual .mv-copy__ja::before {
  content: "";
  flex: 0 0 clamp(40px, 6vw, 120px);
  border-top: 2px solid var(--color-common);
  box-shadow: 0 0 3px 1px #fff;
}

/* Storyの透過画像 */
#main_visual .mv-copy .wp-block-image {
  flex: 0 0 180px;
  width: 180px;
  margin: 0 0 0 -10px;
}

#main_visual .mv-copy .wp-block-image img {
  width: 100%;
  filter:
    drop-shadow(0 0 2px #fff)
    drop-shadow(0 0 4px #fff)
    drop-shadow(0 0 6px #fff);
}

/* スマートフォン：左下で縦並び、横線なし */
@media (max-width: 599px) {
  #main_visual .p-mainVisual__textLayer {
    align-items: flex-start;
    justify-content: flex-end;
    padding: 0 7% 24px;
  }

  #main_visual .mv-copy,
  #main_visual .mv-copy > .wp-block-group__inner-container {
    flex-direction: column;
    align-items: flex-start;
  }

  #main_visual .mv-copy__ja {
    display: block;
    width: 11em;
    max-width: 100%;
    font-size: clamp(16px, 4.3vw, 20px);
    line-height: 2;
    letter-spacing: 0.1em;
    text-align: left;
  }

  #main_visual .mv-copy__ja::before {
    content: none;
  }

  #main_visual .mv-copy .wp-block-image {
    flex: none;
    width: 150px;
    margin: 4px 0 0 24px;
  }
}

/* ========================================
   トップページ：理念セクション（home-belief）
======================================== */
/* 理念ボタン */
.home-belief .swell-block-button {
  position: relative;
  max-width: 400px;
}

/* 双葉は文字と分離した装飾として配置 */
.home-belief .belief-button::before,
.home-belief .belief-button::after {
  content: "";
  position: absolute;
  right: 12px;
  bottom: 100%;
  width: clamp(64px, 8vw, 90px);
  aspect-ratio: 110 / 66;
  background-position: center;
  background-size: contain;
  background-repeat: no-repeat;
  pointer-events: none;
}

/* 茎と葉を分け、成長する順番を変える */
.home-belief .belief-button::before {
  background-image: url("assets/images/sprout-stem.svg");
  transform-origin: 51% bottom;
}

.home-belief .belief-button::after {
  background-image: url("assets/images/sprout-leaves.svg");
  transform-origin: 51% 38%;
}

@media (hover: hover) and (pointer: fine) {
  .home-belief .belief-button::before {
    transform: scaleY(0);
    transition: transform 0.2s ease-in;
  }

  .home-belief .belief-button::after {
    transform: scale(0);
    transition: transform 0.15s ease-in;
  }

  .home-belief .belief-button:is(:hover, :focus-within)::before {
    transform: scaleY(1);
    transition: transform 0.4s ease-in;
  }

  .home-belief .belief-button:is(:hover, :focus-within)::after {
    transform: scale(1);
    transition: transform 0.45s cubic-bezier(0.55, 0, 0.85, 0.5) 0.8s;
  }
}

@media (prefers-reduced-motion: reduce) {
  .home-belief .belief-button::before,
  .home-belief .belief-button::after {
    transition: none !important;
  }
}

.home-belief .swell-block-button > a {
  position: relative;
  font-weight: 400;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 98px;
  border-radius: 10px;
  padding: 20px 24px;
  box-shadow: none;
  transition: opacity .2s;
}

/* ボタン内の太字指定も通常の太さに統一 */
.home-belief .swell-block-button > a :is(strong, b) {
  font-weight: 400;
}

.home-belief .swell-block-button > a:hover {
  opacity: .75;
  box-shadow: none;
}

.home-belief .swell-block-button > a::before {
  content: "";
  position: absolute;
  inset: 7px;
  border: 2px dotted #fff;
  border-radius: 7px;
  pointer-events: none;
}

/* 理念ボタン下の区切り線 */
.post_content .home-belief hr.wp-block-separator.belief-divider {
  max-width: none;
  border-bottom: 4px dotted currentColor;
  background-color: transparent !important;
 /* ブロックの背景色を解除 */
}

/* ========================================
   トップページ：メインボタン共通（産科・婦人科／小児科／施設と設備／アクセス）
======================================== */
/* メインボタンと産科サービスカードの共通枠 */
.post_content :is(.womens-main-button, .children-main-button, .facility-main-button, .access-main-button, .womens-card) > a {
  border-width: 3px;
  border-radius: 10px;
}

/* ホバー時も各ブロックで設定した色を維持 */
.post_content :is(.womens-main-button, .children-main-button, .facility-main-button, .access-main-button, .womens-card) > a:hover {
  background: transparent;
  color: var(--the-btn-color) !important;
 /* SWELLの白文字指定を上書き */
  border-color: currentColor;
}

/* メインボタンの余白・左矢印 */
.post_content :is(.womens-main-button, .children-main-button, .facility-main-button, .access-main-button) > a {
  padding: 30px 60px;
}

.post_content :is(.womens-main-button, .children-main-button, .facility-main-button, .access-main-button) > a::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 30px;
  width: 14px;
  height: 14px;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  transform: translateY(-50%) rotate(45deg);
  transition: translate .5s;
  pointer-events: none;
}

.post_content :is(.womens-main-button, .children-main-button, .facility-main-button, .access-main-button) > a:hover::before {
  translate: 10px 0;
}

@media (max-width: 640px) {
  .post_content :is(.womens-main-button, .children-main-button, .facility-main-button, .access-main-button) > a {
    padding-inline: 44px;
  }

  .post_content :is(.womens-main-button, .children-main-button, .facility-main-button, .access-main-button) > a::before {
    left: 20px;
    width: 10px;
    height: 10px;
  }
}

/* ========================================
   トップページ：産科・婦人科セクション（home-womens）
======================================== */
/* 診療・サービスカード（無痛分娩／TREATMENT／ホテル） */
.home-womens .womens-card > a {
  height: 296px;
  padding: 30px 20px 160px;
}

.home-womens .womens-card > a::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--womens-icon) no-repeat center 62% / min(100%, 250px) auto;
  pointer-events: none;
}

.home-womens .womens-card--birth {
  --womens-icon: url("assets/images/women-1.png");
}

.home-womens .womens-card--treatment {
  --womens-icon: url("assets/images/women-2.png");
}

.home-womens .womens-card--hotel {
  --womens-icon: url("assets/images/women-3.png");
}

.home-womens .womens-card > a::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 40px;
  width: 14px;
  height: 14px;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  transform: translateX(-50%) rotate(45deg);
  transition: translate .5s;
  pointer-events: none;
}

.home-womens .womens-card > a:hover::after {
  translate: 10px 0;
}

@media (max-width: 781px) {
  .home-womens .womens-card > a {
    height: 186px;
    padding: 20px 44px 90px;
  }

  .home-womens .womens-card > a::before {
    background-position: center 85%;
    background-size: 200px auto;
  }

  .home-womens .womens-card > a::after {
    top: 50%;
    right: 24px;
    bottom: auto;
    left: auto;
    width: 10px;
    height: 10px;
    transform: translateY(-50%) rotate(45deg);
  }
}

/* ========================================
   トップページ：お知らせセクション（home-news）
======================================== */
/* 背景の丸。ほかのセクションでは bg-circles を付けて共用可能 */
:is(.home-news, .home-access, .bg-circles, .service-item) {
  background-image:
    radial-gradient(circle closest-side, color-mix(in srgb, var(--color-common) 12%, transparent) 99%, transparent 100%),
    radial-gradient(circle closest-side, color-mix(in srgb, var(--color-common) 7%, transparent) 99%, transparent 100%);
  background-size:
    clamp(460px, 38vw, 760px) clamp(460px, 38vw, 760px),
    clamp(320px, 28vw, 540px) clamp(320px, 28vw, 540px);
  background-position: left 3vw top, left -100px bottom;
  background-repeat: no-repeat;
}

.home-access {
  background-position: right 3vw bottom 60px, right -100px bottom;
}

@media (max-width: 781px) {
  :is(.home-news, .home-access, .bg-circles, .service-item) {
    background-size: 360px 360px, 240px 240px;
    background-position: left -160px top, left -100px bottom;
  }

  .home-access {
    background-position: right -160px bottom 40px, right -100px bottom;
  }
}

/* サービス：丸は見出しの後ろ、右配置の項目では左右を入れ替える */
.service-item {
  padding-block: 1px 32px;
  background-size:
    clamp(300px, 40vw, 600px) clamp(300px, 40vw, 600px),
    clamp(220px, 28vw, 420px) clamp(220px, 28vw, 420px);
  background-position: left 70px top, left top 220px;
}

.service-item.is-reverse {
  background-position: right 70px top, right top 220px;
}

@media (max-width: 781px) {
  .service-item {
    background-size: 240px 240px, 180px 180px;
    background-position: left 20px top, left top 140px;
  }

  .service-item.is-reverse {
    background-position: right 20px top, right top 140px;
  }
}

/* 一覧のホバー・タップ背景をハンバーガーメニューと同じ色に統一 */
.home-news .p-postList.-type-simple .p-postList__link {
  border-bottom-color: var(--color_main);
  -webkit-tap-highlight-color: transparent;
}

.home-news .p-postList.-type-simple .p-postList__link:is(:hover, :active, :focus-visible) {
  background-color: #fff8f2;
}

/* お知らせ一覧：記事タイトルもゴシックに統一 */
.home-news .p-postList,
.home-news .p-postList__title {
  font-family: "Zen Maru Gothic", sans-serif;
}

/* タブ・投稿リストの外枠 */
.home-news .news-panel.has-border {
  padding: clamp(20px, calc(5vw - 12px), 48px);
  border-width: 2px;
  border-radius: 10px;
}

/* ========================================
   トップページ：お知らせセクション（home-news）
======================================== */
/* 見出し内の太字指定も通常の太さに統一 */
.home-news .news-heading :is(strong, b) {
  font-weight: 400;
}

/* 丸いお知らせ見出し */
.home-news .news-heading {
  grid-area: 1 / 1 / 2 / 3;
  z-index: 1;
  font-weight: 400;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 120px;
  height: 120px;
  margin: 0;
  padding: 0;
  border-radius: 50%;
  transform: translateY(-50%);
}

/* ========================================
   トップページ：お知らせセクション（home-news）
======================================== */
/* 丸い見出しを一覧枠の左上に重ねる */
/* Gridを指定する親だけ、SWELLの内側要素を使用 */
.home-news > .swell-block-fullWide__inner {
  display: grid;
  grid-template-columns: 60px minmax(0, 1fr);
  padding-top: 60px;
  align-items: start;
}

.home-news .news-panel {
  grid-area: 1 / 2 / 2 / 3;
}

@media (max-width: 781px) {
  .home-news > .swell-block-fullWide__inner {
    grid-template-columns: minmax(0, 1fr);
    padding-top: 40px;
  }

  .home-news .news-heading,
  .home-news .news-panel {
    grid-area: 1 / 1;
  }

  .home-news .news-heading {
    transform: translate(-12px, -50%);
    width: 80px;
    height: 80px;
    font-size: 16px;
  }

  .home-news .news-panel.has-border {
    padding: 48px 20px 32px;
  }

}

/* ========================================
   トップページ：お知らせセクション／タブ直下の重複線を除去
======================================== */
.home-news .news-panel .p-postList.-type-simple {
  border-top: 0;
}

/* ========================================
   共通：サイトの配色
======================================== */

:root {
  /* 基本色 */
  --color-women: #f2c1c7;
  --color-children: #b3d8b4;
  --color-common: #dabba0;
  --color-beauty: #cac6e7;
  /* WEB予約 */
  --color-reservation: #adc5dd;
  /* 文字・枠線用 */
  --color-women-strong: #d96f88;
  --color-children-strong: #519b70;
  /* 淡い背景 */
  --color-women-soft: #fff1f4;
  --color-children-soft: #eff8f1;
}

/* ========================================
   共通：ボタン
======================================== */

.swell-block-button.is-style-btn_line .swell-block-button__link {
  border-width: 2px;
  border-radius: 8px;
}

.swell-block-button.button-reservation {
  --the-btn-color: var(--color-reservation);
}

/* ========================================
   下層ページ共通：配色
======================================== */

.page-section {
  --page-accent: var(--color-common);
}

.page-section.is-women {
  --page-accent: var(--color-women);
  --page-soft: var(--color-women-soft);
}

.page-section.is-children {
  --page-accent: var(--color-children);
  --page-soft: var(--color-children-soft);
}

.page-section.is-beauty {
  --page-accent: var(--color-beauty);
}

/* ========================================
   下層ページ共通：導入・ページ内リンク
======================================== */

.page-intro {
  font-family: "Shippori Mincho", serif;
  line-height: 2;
  letter-spacing: 0.08em;
}

@media (max-width: 599px) {
  .page-intro .swl-fz {
    font-size: 18px !important;
  }
}


/* ========================================
   下層ページ共通：見出し
======================================== */

.page-section :is(
.page-heading-h2,
.page-heading-h3,
.page-heading-h4,
.page-heading-h5
) {
  font-weight: 400;
}

.page-section :is(
.page-heading-h2,
.page-heading-h3,
.page-heading-h5
) {
  display: table;
  max-width: 100%;
}

.page-section :is(.page-heading-h2, .page-heading-h3) {
  background: var(--page-accent);
  color: #fff;
}

/* H2：楕円 */
.page-section .page-heading-h2 {
  width: 220px;
  margin: 0 auto 48px !important;
  padding: 30px 16px;
  border-radius: 50%;
  line-height: 1.5;
  letter-spacing: 0.12em;
}

/* H3：角丸の四角 */
.page-section .page-heading-h3 {
  min-width: min(200px, 100%);
  margin: 48px auto 28px !important;
  padding: 16px 28px;
  border-radius: 8px;
}

.page-section :is(.page-heading-h2, .page-heading-h3)::after {
  content: "";
  position: absolute;
  pointer-events: none;
}

/* H2：内側の白い点線 */
.page-section .page-heading-h2::after {
  inset: 6px;
  border: 2px dotted #fff;
  border-radius: 50%;
}

/* H3：内側の白い実線 */
.page-section .page-heading-h3::after {
  inset: 5px;
  border: 1px solid #fff;
  border-radius: 4px;
}

/* H4：下に点線 */
.page-section .page-heading-h4 {
  margin-block: 36px 24px !important;
  padding-bottom: 14px;
  border-bottom: 3px dotted var(--page-accent);
}

/* イラスト付き見出し */
:is(.page-heading-illustration, .page-heading-link) {
  margin-block: 36px 24px;
}

:is(.page-heading-illustration, .page-heading-link) > .wp-block-group__inner-container {
  display: flex;
  align-items: flex-end;
  gap: clamp(16px, 3vw, 40px);
}

.page-section :is(.page-heading-illustration, .page-heading-link) .page-heading-h4 {
  display: flex;
  align-items: center;
  gap: clamp(20px, 5vw, 80px);
  flex: 1;
  margin: 0 !important;
  padding: 0 0 18px;
  border-bottom: 0;
}

.page-section :is(.page-heading-illustration, .page-heading-link) .page-heading-h4::after {
  content: "";
  position: static;
  flex: 1;
  border-top: 3px dotted var(--page-accent);
}

.page-heading-illustration .wp-block-image {
  flex: 0 0 180px;
  margin: 0;
}

@media (max-width: 599px) {
  .page-section .page-heading-illustration .page-heading-h4 {
    gap: 12px;
    padding-bottom: 10px;
  }

  .page-heading-illustration .wp-block-image {
    flex-basis: 100px;
  }
}

/* 詳細ボタン付き見出し */
.page-heading-link > .wp-block-group__inner-container {
  align-items: center;
}

.page-section .page-heading-link .page-heading-h4 {
  padding-bottom: 0;
}

.page-heading-link .swell-block-button {
  flex: 0 0 380px;
  margin: 0;
}

.button-flower .swell-block-button__link {
  position: relative;
  padding-right: 110px;
}

.button-flower .swell-block-button__link::before {
  content: "";
  position: absolute;
  top: auto;
  right: -4px;
  bottom: -30px;
  width: 100px;
  height: 100px;
  background: url("assets/images/women-1.png") center / auto 100px no-repeat;
  transform: none;
  pointer-events: none;
}

@media (max-width: 781px) {
  .page-heading-link > .wp-block-group__inner-container {
    flex-direction: column;
    align-items: stretch;
    gap: 32px;
  }

  .page-heading-link .swell-block-button {
    flex-basis: auto;
    align-self: flex-end;
    width: min(380px, 100%);
  }

  .button-flower .swell-block-button__link::before {
    bottom: -27px;
    height: 90px;
    background-size: auto 90px;
  }
}

/* H5：枠付き小見出し */
.page-section .page-heading-h5 {
  margin-block: 28px 18px !important;
  padding: 9px 18px;
  border: 2px solid var(--page-accent);
  border-radius: 5px;
}

/* ========================================
   下層ページ共通：文章中心のページの見出し
======================================== */

.page-section :is(.page-text-heading-h2, .page-text-heading-h3) {
  font-weight: 400;
  letter-spacing: 0.1em;
}

/* H2：横長の角丸見出し */
/* 点線の長さは、見出しを直接囲む要素の幅を基準にする */
.page-section :has(> .page-text-heading-h2) {
  container-type: inline-size;
}

.page-section h2.page-text-heading-h2.is-style-section_ttl {
  width: fit-content;
  min-width: min(320px, 100%);
  max-width: 100%;
  margin: 0 0 40px !important;
  padding: 22px 24px;
  border-radius: 10px;
  background: var(--page-accent);
  color: #fff;
  text-align: center;
  line-height: 1.5;
}

/* H2の右端から本文エリアの右端まで点線を伸ばす */
.page-section .page-text-heading-h2::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 100%;
  width: max(0px, calc(100cqw - 100%));
  border-top: 4px dotted var(--page-accent);
  pointer-events: none;
}

/* H2：内側の白い実線 */
.page-section .page-text-heading-h2::after {
  content: "";
  position: absolute;
  inset: 4px;
  border: 2px solid #fff;
  border-radius: 7px;
  pointer-events: none;
}

/* H3：背景や枠を付けない小見出し */
.page-section .page-text-heading-h3 {
  margin-block: 36px 20px !important;
  padding-block: 12px;
}

/* 共通：内枠なしの色付き帯 */
.page-section :is(
  h2.page-band-heading-h2,
  h3.page-band-heading-h3,
  h2.page-frame-heading-h2
).is-style-section_ttl {
  max-width: 100%;
  margin: 36px 0 24px !important;
  padding: 14px 24px;
  border-radius: 8px;
  background: var(--page-accent);
  color: #fff;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0.1em;
}

/* H2はカラム幅、H3は文字幅に合わせる */
.page-section h2.page-band-heading-h2.is-style-section_ttl {
  width: 100%;
}

.page-section h3.page-band-heading-h3.is-style-section_ttl {
  width: fit-content;
}

/* 共通色の帯 */
.page-section .page-band-heading-h3.is-common {
  --page-accent: var(--color-common);
}

/* H2：幅いっぱいの帯＋内側の白い実線 */
.page-section h2.page-frame-heading-h2.is-style-section_ttl {
  width: 100%;
}

.page-section .page-frame-heading-h2::after {
  content: "";
  position: absolute;
  inset: 4px;
  border: 1px solid #fff;
  border-radius: 5px;
  pointer-events: none;
}

/* ========================================
   美容・ボディ：見出し
======================================== */

.page-section :is(
  .page-line-heading-h2,
  .treatment-heading-h2,
  .treatment-heading-h3,
  .treatment-heading-h4
) {
  font-weight: 400;
}

/* 美容ページの囲み枠・画像枠も共通の紫色に揃える */
.page-section.is-beauty .has-border {
  border-color: var(--page-accent);
  border-radius: 8px;
}

.page-section.is-beauty .is-style-border img {
  border-color: var(--page-accent);
  border-radius: 8px;
}

.page-section.is-beauty .wp-block-table :is(table, th, td) {
  border-color: var(--page-accent);
}

/* 紫背景の見出しセル同士だけ白線で区切る */
.page-section.is-beauty .wp-block-table th:has(+ th) {
  border-right: 1px solid #fff;
}

.page-section.is-beauty .wp-block-table th + th {
  border-left: 1px solid #fff;
}

.page-section.is-beauty .wp-block-table tr:has(+ tr > th:first-child) > th:first-child {
  border-bottom: 1px solid #fff;
}

.page-section.is-beauty .wp-block-table tr:has(> th:first-child) + tr > th:first-child {
  border-top: 1px solid #fff;
}

/* メラニンケア：説明文とQRの案内 */
.treatment-social {
  max-width: 900px;
  margin-inline: auto;
}

.treatment-social > .swell-block-columns__inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 150px;
  align-items: center;
  gap: 24px;
  margin: 0;
}

.treatment-social > .swell-block-columns__inner > .swell-block-column {
  width: auto;
  margin: 0;
  padding: 0;
}

.treatment-social .swell-block-column:first-child > p {
  display: flex;
  align-items: center;
  gap: 24px;
  margin: 0;
}

.treatment-social .swell-block-column:first-child > p::after {
  content: "";
  flex: 1;
  min-width: 32px;
  border-top: 2px solid currentColor;
}

.treatment-social .page-qr {
  width: 150px;
  margin-block: 0;
}

@media (max-width: 599px) {
  .treatment-social > .swell-block-columns__inner {
    grid-template-columns: minmax(0, 1fr);
    justify-items: center;
  }

  .treatment-social .swell-block-column:first-child > p {
    justify-content: center;
  }

  .treatment-social .page-qr {
    margin-inline: auto;
  }

  .treatment-social .swell-block-column:first-child > p::after {
    content: none;
  }
}

/* 共通：検査・施術名と料金をつなぐ行（既存の美容用クラスも継続） */
:is(.page-price-row, .treatment-price-row) {
  margin-block: 48px 24px;
}

:is(.page-price-row, .treatment-price-row) > .wp-block-group__inner-container {
  display: flex;
  align-items: center;
  gap: 20px;
}

:is(.page-price-row, .treatment-price-row) > .wp-block-group__inner-container::after {
  content: "";
  order: 1;
  flex: 1;
  min-width: 24px;
  border-top: 4px dotted var(--page-accent);
}

.page-section :is(.page-price-row, .treatment-price-row) > .wp-block-group__inner-container > :is(h2, h3).is-style-section_ttl {
  flex: 0 1 auto;
  min-width: 0;
  margin: 0 !important;
}

/* 料金行では見出し固有の点線を消し、行側の点線だけを使う */
.page-section :is(.page-price-row, .treatment-price-row) .page-text-heading-h2::before {
  content: none;
}

:is(.page-price-row, .treatment-price-row) > .wp-block-group__inner-container > p {
  order: 2;
  flex-shrink: 0;
  margin: 0;
  padding: 12px 24px;
  border: 2px solid var(--page-accent);
  border-radius: 8px;
  color: var(--page-accent);
  font-family: "Shippori Mincho", serif;
  font-size: clamp(24px, 2.2vw, 30px);
  line-height: 1.5;
}

@media (max-width: 781px) {
  :is(.page-price-row, .treatment-price-row) > .wp-block-group__inner-container {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 16px;
  }

  .page-section :is(.page-price-row, .treatment-price-row) > .wp-block-group__inner-container > :is(h2, h3).is-style-section_ttl {
    grid-column: 1 / -1;
    width: 100%;
  }

  :is(.page-price-row, .treatment-price-row) > .wp-block-group__inner-container::after {
    grid-column: 1;
    grid-row: 2;
  }

  :is(.page-price-row, .treatment-price-row) > .wp-block-group__inner-container > p {
    grid-column: 2;
    grid-row: 2;
    max-width: 100%;
  }
}

/* 補足料金：説明枠の右下に金額を重ねる */
.page-price-note {
  position: relative;
  margin-block: 40px;
  padding: 24px clamp(20px, 4vw, 48px);
  border: 2px solid var(--page-accent);
  border-radius: 20px;
}

.page-price-note > .wp-block-group__inner-container > p:first-child {
  margin-bottom: 0;
}

.page-price-note > .wp-block-group__inner-container > p:last-child {
  position: absolute;
  right: -2px;
  bottom: 0;
  max-width: calc(100% - 32px);
  margin: 0;
  padding: 8px 24px;
  border: 2px solid var(--page-accent);
  background: #fff;
  color: var(--page-accent);
  font-family: "Shippori Mincho", serif;
  font-size: 24px;
  line-height: 1.5;
  transform: translateY(50%);
}

/* 部門見出しの左右に伸ばす点線の基準 */
.page-section :has(> :is(.page-line-heading-h2, .treatment-heading-h2)) {
  container-type: inline-size;
}

.page-section h2:is(.page-line-heading-h2, .treatment-heading-h2).is-style-section_ttl {
  width: fit-content;
  min-width: min(200px, 100%);
  max-width: 100%;
  margin: 0 auto 48px !important;
  padding: 16px 28px;
  border-radius: 8px;
  background: var(--page-accent);
  color: #fff;
  text-align: center;
  line-height: 1.5;
}

.page-section :is(.page-line-heading-h2, .treatment-heading-h2)::before,
.page-section :is(.page-line-heading-h2, .treatment-heading-h2)::after {
  content: "";
  position: absolute;
  top: 50%;
  width: max(0px, calc((100cqw - 100%) / 2));
  border-top: 4px dotted var(--page-accent);
  pointer-events: none;
}

.page-section :is(.page-line-heading-h2, .treatment-heading-h2)::before {
  left: auto;
  right: 100%;
}

.page-section :is(.page-line-heading-h2, .treatment-heading-h2)::after {
  left: 100%;
}

/* 予約案内など：左右の点線付き見出しに白い内枠を付ける */
.page-section h2.page-line-heading-h2.is-style-section_ttl {
  min-width: min(360px, 100%);
  outline: 1px solid #fff;
  outline-offset: -6px;
}

.page-section .page-line-heading-h2 strong {
  font-weight: inherit;
}

@media (max-width: 781px) {
  .page-section .page-line-heading-h2::before,
  .page-section .page-line-heading-h2::after {
    content: none;
  }
}

/* 施術名 */
.page-section h3.treatment-heading-h3.is-style-section_ttl {
  display: table;
  max-width: 100%;
  margin-block: 48px 24px !important;
  padding: 16px 28px;
  border-radius: 8px;
  background: var(--page-accent);
  color: #fff;
  letter-spacing: 0.08em;
}

.page-section .treatment-heading-h3::after {
  content: "";
  position: absolute;
  inset: 6px;
  border: 1px solid #fff;
  border-radius: 5px;
  pointer-events: none;
}

/* 料金区分：枠の右に伸ばす点線の基準 */
.page-section :has(> .treatment-heading-h4) {
  container-type: inline-size;
}

.page-section h4.treatment-heading-h4.is-style-section_ttl {
  width: fit-content;
  min-width: min(140px, 100%);
  max-width: 100%;
  margin-block: 32px 20px !important;
  padding: 14px 24px;
  border: 2px solid var(--page-accent);
  border-radius: 8px;
  background: #fff;
  color: var(--page-accent);
  text-align: center;
  letter-spacing: 0.12em;
}

.page-section .treatment-heading-h4::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 100%;
  width: max(0px, calc(100cqw - 100%));
  border-top: 4px dotted var(--page-accent);
  pointer-events: none;
}

/* ========================================
   サービスとサポート：見出し
======================================== */

.page-section :has(> .service-heading-h2) {
  container-type: inline-size;
}

.page-section h2.service-heading-h2.is-style-section_ttl {
  width: fit-content;
  max-width: 100%;
  margin: 48px 0 28px !important;
  padding-right: 24px;
  color: var(--page-accent);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0.08em;
}

.page-section .service-heading-h2::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 100%;
  width: max(0px, calc(100cqw - 100%));
  border-top: 4px dotted var(--page-accent);
  pointer-events: none;
}

.service-item.is-reverse h2.service-heading-h2.is-style-section_ttl {
  margin-left: auto !important;
  margin-right: 0 !important;
  padding-left: 24px;
  padding-right: 0;
}

.service-item.is-reverse .service-heading-h2::after {
  left: auto;
  right: 100%;
}

/* ========================================
   施設紹介：見出し
======================================== */

/* 診療科名：コンパクトな帯を中央に配置 */
.facility-section h2.page-frame-heading-h2.is-style-section_ttl {
  width: fit-content;
  min-width: min(200px, 100%);
  margin: 0 auto 48px !important;
}

/* 階数：横幅いっぱいの帯 */
.facility-section h3.page-band-heading-h3.is-style-section_ttl {
  width: 100%;
}

/* ========================================
   施設紹介：写真のキャプション
======================================== */

.facility-photo img {
  display: block;
  width: 100%;
}

.delivery-room-photo img {
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  object-position: center center;
}

.facility-photo figcaption {
  margin: 0;
  padding: 9px 12px;
  background: #c8c0bb;
  color: #fff;
  font-family: "Shippori Mincho", serif;
  font-size: 18px;
  line-height: 1.5;
  letter-spacing: 0.1em;
  text-align: center;
}

/* スマートフォン：写真ラベルを2行分の高さに統一 */
@media (max-width: 599px) {
  .facility-photo figcaption {
    display: grid;
    align-content: center;
    box-sizing: border-box;
    min-height: calc(2.8em + 12px);
    padding: 6px 10px;
    font-size: 16px;
    line-height: 1.4;
  }
}

/* ========================================
   アクセス：見出し
======================================== */

.access-section :has(> .access-heading-h2) {
  background-image: radial-gradient(circle, var(--page-accent) 2px, transparent 2.5px);
  background-size: 12px 4px;
  background-repeat: repeat-x;
  background-position: left 85px;
}

.access-section h2.access-heading-h2.is-style-section_ttl {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  width: 170px;
  height: 170px;
  max-width: 100%;
  margin: 0 auto 40px !important;
  padding: 20px;
  border: 2px solid var(--page-accent);
  border-radius: 50%;
  background: #fff;
  color: var(--page-accent);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0.1em;
}

.access-section .access-heading-h2::after {
  content: "";
  position: absolute;
  inset: 8px;
  border: 2px dotted var(--page-accent);
  border-radius: 50%;
  pointer-events: none;
}

/* 出発地点のラベル */
/* ページ内リンク：左矢印を文字数に左右されない位置に揃える */
.access-nav .swell-block-button__link {
  position: relative;
  padding-inline: 48px;
}

.access-nav .swell-block-button__link > .__icon:not(.-right) {
  position: absolute;
  left: 20px;
  top: 50%;
  margin: 0;
  transform: translateY(-50%);
}

.access-route-label,
.page-step-label {
  padding: 12px 20px;
  border-radius: 10px;
  background: var(--color_main);
  color: #fff;
}

/* アクセス案内：下向き矢印を中央にそろえる */
.access-section .swl-inline-icon[data-icon="LsChevronDown"]::after {
  max-width: none;
}

.page-step-label {
  font-family: "Shippori Mincho", serif;
  text-align: center;
  font-weight: 400;
}

.page-step-label strong {
  font-weight: inherit;
}

/* お車：丸見出しを外枠の上辺に重ねる */
.access-car-box {
  margin-top: 85px;
  border: 2px solid var(--page-accent);
  border-radius: 10px;
}

.access-section .access-car-box,
.access-section .access-car-box > .wp-block-group__inner-container {
  background-image: none;
}

.access-section .access-car-box h2.access-heading-h2.is-style-section_ttl {
  margin: -85px auto 24px !important;
}

.access-car-route {
  max-width: 900px;
  margin-inline: auto;
  padding: 0 clamp(20px, 4vw, 48px) 24px;
}

.access-car-route p {
  margin: 0;
  padding-block: 24px;
}

.access-car-route p:not(:last-child) {
  border-bottom: 4px dotted var(--page-accent);
}

.access-car-note {
  border-top: 2px solid var(--page-accent);
  padding: 24px clamp(20px, 4vw, 48px);
}

/* EchoDiary：イラストと説明文の横幅・位置をそろえる */
@media (min-width: 600px) {
  .echo-flow {
    max-width: 880px;
    margin-inline: auto;
  }

  .echo-flow .wp-block-image img {
    width: 100%;
  }

  .echo-flow .swell-block-columns__inner {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 40%));
    justify-content: space-between;
    margin-inline: 0;
  }

  .echo-flow .swell-block-column {
    width: auto;
    padding-inline: 0;
  }
}

/* お問い合わせ：説明・電話番号・案内をひとつの枠にまとめる */
.clinic-contact-box {
  position: relative;
  box-sizing: border-box;
  max-width: 1000px;
  margin-inline: auto;
  margin-top: 70px !important;
  padding: clamp(24px, 5vw, 56px);
  padding-top: 100px;
  padding-bottom: 72px;
  border: 2px solid var(--page-accent, var(--color-women));
  border-radius: 12px;
}

.page-section .clinic-contact-box .page-heading-h2 {
  position: absolute;
  top: 0;
  left: 50%;
  max-width: calc(100% - 32px);
  margin: 0 !important;
  transform: translate(-50%, -50%);
}

@media (max-width: 599px) {
  .clinic-contact-box {
    padding: 80px 20px 48px;
  }
}

/* 診療時間の概要：列数はリッチカラムの設定を使用 */
.clinic-hours-summary .swell-block-column {
  padding: 20px;
  border-top: 3px solid var(--page-accent);
  border-radius: 6px;
  background: color-mix(in srgb, var(--page-soft, #fff) 50%, #fff);
}

.clinic-hours-summary .swell-block-column > p {
  margin: 0 !important;
}

.clinic-hours-summary .swell-block-column > p + p {
  margin-top: 10px !important;
}

/* 担当医表：午前・午後に分け、スマホでも曜日を一覧表示 */
.clinic-schedule {
  max-width: 1000px;
  margin-inline: auto;
}

.post_content .clinic-doctor-label {
  display: table;
  width: fit-content;
  margin-block: 28px 10px !important;
  margin-inline: 0;
  padding: 6px 20px;
  border-radius: 6px;
  background: var(--page-accent, var(--color-women));
  color: #fff;
  font-weight: 700;
}

.post_content .clinic-doctor-label + .clinic-doctor-table {
  margin-top: 0 !important;
}

.clinic-doctor-table tr > :first-child {
  --swl-cell1-width: 4.5em;
}

@media (max-width: 599px) {
  .clinic-doctor-table :is(th, td) {
    padding: 10px 3px;
    text-align: center;
    vertical-align: middle;
    line-height: 1.5;
  }
}

/* 診療スケジュール：時間帯と診療内容を文字で示す */
.clinic-schedule-table tr > :first-child:not([colspan]) {
  --swl-cell1-width: 9em;
}

.clinic-schedule-table thead tr > :nth-child(2),
.clinic-schedule-table tbody > tr:first-child:not(:has([colspan])) > :nth-child(2) {
  width: 8.5em;
}

.clinic-schedule-table :is(th, td) {
  padding: 12px 6px;
  vertical-align: middle;
}

.clinic-schedule-table tr:not(:has([colspan])) > :nth-child(-n+2) {
  white-space: nowrap;
}

@media (max-width: 599px) {
  .clinic-schedule-table tr > :first-child:not([colspan]) {
    --swl-cell1-width: 7.5em;
  }

  .clinic-schedule-table thead tr > :nth-child(2),
  .clinic-schedule-table tbody > tr:first-child:not(:has([colspan])) > :nth-child(2) {
    width: 7em;
  }

  .clinic-schedule-table :is(th, td) {
    padding-inline: 4px;
    white-space: nowrap;
  }
}

/* 料金比較表：見出し行だけ中央寄せ */
@media (min-width: 960px) {
  :is(.page-section.is-beauty, .bridal-content) .wp-block-table,
  .bridal-content .page-price-note {
    max-width: 1000px;
    margin-inline: auto;
  }
}

/* ブライダルチェック：スマホでは表の余白を減らす */
@media (max-width: 599px) {
  .bridal-content .wp-block-table :is(th, td) {
    padding-inline: 4px;
  }

  .bridal-content .wp-block-table:has(tr > :nth-child(3)) > table.has-fixed-layout {
    table-layout: auto;
  }

  .bridal-content .wp-block-table:has(tr > :nth-child(3)) td:first-child {
    white-space: nowrap;
  }

  .bridal-content .wp-block-table:has(tr > :nth-child(3)) tr > :nth-child(2) {
    min-width: calc(4em + 12px);
  }
}

:is(.price-comparison-table, .price-course-table) tr:first-child > th {
  text-align: center;
}

/* 回数別料金表：スマホでは施術箇所の列を広くする */
@media (max-width: 599px) {
  .price-course-table tr > :first-child:not([colspan]) {
    --swl-cell1-width: 34%;
    width: 34%;
  }

  .price-course-table :is(th, td) {
    padding-inline: 6px;
  }
}

/* 分娩実績：総分娩数の列を二重線で区切る */
.delivery-results-table tr > :nth-child(5):not([colspan]) {
  border-left: 4px double #aaa;
}

/* 本文内の表：スマホでは文字を少し小さくする */
@media (max-width: 599px) {
  .post_content .wp-block-table :is(th, td) {
    font-size: 0.9em;
  }
}

/* 分娩料金：スマホでは備考の列を広くする */
@media (max-width: 599px) {
  .wp-block-table.delivery-price-table > table.has-fixed-layout {
    table-layout: auto;
  }

  .delivery-price-table :is(th, td) {
    padding-inline: 8px;
  }

  .delivery-price-table tr > :first-child:not([colspan]) {
    --swl-cell1-width: 25%;
    width: 25%;
    white-space: nowrap;
  }

  .delivery-price-table tr > :nth-child(2):not([colspan]) {
    width: 30%;
    padding-inline: 4px;
    white-space: nowrap;
  }

  .delivery-price-table tr > :nth-child(3):not([colspan]) {
    width: 45%;
  }

  /* 分娩実績：見出しと注記が収まる幅を確保 */
  .delivery-results-table > table {
    min-width: 720px;
  }

  .delivery-results-table :is(th, td) {
    padding-inline: 6px;
  }

  .delivery-results-table tr:nth-child(3) > :is(:nth-child(3), :nth-child(4)),
  .delivery-results-table tr:last-child > [colspan] {
    white-space: nowrap;
  }
}

/* 機能紹介表：スマホの縦並びでは項目名も全幅にする */
@media (min-width: 600px) {
  .page-feature-table tr > :first-child {
    --swl-cell1-width: 25%;
  }
}

@media (max-width: 599px) {
  .page-feature-table tr > :first-child {
    --swl-cell1-width: 100%;
  }
}

/* 共通：SWELLの実線枠 */
.has-border.-border01 {
  border-width: 2px;
}

/* ========================================
   下層ページ共通：内容の点線枠
======================================== */

.page-section :is(.page-topic, .policy-purposes) {
  position: relative;
  margin-block: 56px 40px;
  padding: 56px clamp(20px, 4vw, 60px) 32px;
  border: 3px dotted var(--page-accent);
  border-radius: 5px;
}

/* 内容枠の装飾：配置と余白を共通化 */
.page-section .page-topic:is(
  .illustration-flower,
  .illustration-balloon,
  .illustration-lily,
  .illustration-tulip,
  .illustration-duck,
  .illustration-kangaroo,
  .illustration-giraffe,
  .illustration-animal,
  .illustration-vaccine
) {
  padding-top: 170px;
  background-image: var(--topic-illustration);
  background-repeat: no-repeat;
  background-size: 90px 90px;
  background-position: right 40px top 50px;
}

.illustration-flower {
  --topic-illustration: url("assets/images/illustration-flower.png");
}

.illustration-balloon {
  --topic-illustration: url("assets/images/illustration-balloon.png");
}

.illustration-lily {
  --topic-illustration: url("assets/images/illustration-lily.png");
}

.illustration-tulip {
  --topic-illustration: url("assets/images/illustration-tulip.png");
}

.illustration-duck {
  --topic-illustration: url("assets/images/illustration-duck.png");
}

.illustration-kangaroo {
  --topic-illustration: url("assets/images/illustration-kangaroo.png");
}

.illustration-giraffe {
  --topic-illustration: url("assets/images/illustration-giraffe.png");
}

.illustration-animal {
  --topic-illustration: url("assets/images/illustration-animal.png");
}

.illustration-vaccine {
  --topic-illustration: url("assets/images/illustration-vaccine.png");
}

.page-section .page-topic.illustration-left {
  background-position: left 40px top 50px;
}

@media (max-width: 599px) {
  .page-section .page-topic:is(
    .illustration-flower,
    .illustration-balloon,
    .illustration-lily,
    .illustration-tulip,
    .illustration-duck,
    .illustration-kangaroo,
    .illustration-giraffe,
    .illustration-animal,
    .illustration-vaccine
  ) {
    padding-top: 120px;
    background-size: 60px 60px;
    background-position: right 20px top 35px;
  }

  .page-section .page-topic.illustration-left {
    background-position: left 20px top 35px;
  }
}

/* 先頭の見出しだけを上辺に重ねる */
.page-section .page-topic > :is(.page-heading-h3, .page-band-heading-h2):first-child,
.page-section .page-topic
> .wp-block-group__inner-container
> :is(.page-heading-h3, .page-band-heading-h2):first-child {
  position: absolute;
  top: 0;
  left: 50%;
  width: max-content;
  max-width: calc(100% - 32px);
  margin: 0 !important;
  transform: translate(-50%, -50%);
}

/* おすすめの案内 */
.page-section .page-recommend {
  max-width: 800px;
  border-radius: 8px;
}

/* ========================================
   下層ページ共通：画像＋文字のリンクカード
======================================== */

.page-link-card {
  position: relative;
  border: 2px solid var(--page-accent, var(--color-common));
  border-radius: 8px;
  overflow: hidden;
}

/* コンパクトな案内カード */
.page-link-card.is-compact {
  width: 100%;
  max-width: 400px;
  margin-inline: auto;
  padding: 24px;
}

.page-link-card > .swell-block-column__inner,
.page-link-card > .wp-block-group__inner-container,
.page-link-card p,
.page-link-card p a {
  position: static;
}

.page-link-card p {
  font-family: "Shippori Mincho", serif;
}

.page-link-card p a::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
}

@media (hover: hover) and (pointer: fine) {
  .page-link-card {
    transition: transform 0.2s ease;
  }

  .page-link-card:hover {
    transform: translateY(-4px);
  }
}

/* ========================================
   下層ページ共通：スマートフォン
======================================== */

@media (max-width: 599px) {
  .page-section .page-heading-h2 {
    margin-bottom: 32px !important;
  }

  .page-section .page-heading-h3:not(
  .page-topic > .page-heading-h3:first-child,
  .page-topic > .wp-block-group__inner-container
  > .page-heading-h3:first-child
  ) {
    margin-top: 36px !important;
  }
}

/* ========================================
   お知らせ共通：カテゴリー表示
======================================== */

/* 日付欄の幅をそろえ、カテゴリの開始位置を統一 */
.p-postList__meta > .p-postList__times {
  flex: 0 0 10em;
}

:is(.p-postList__cat, .c-categoryList__link)[data-cat-id="1"] {
  --notice-category-color: var(--color-common);
}

:is(.p-postList__cat, .c-categoryList__link)[data-cat-id="7"] {
  --notice-category-color: var(--color-women);
}

:is(.p-postList__cat, .c-categoryList__link)[data-cat-id="8"] {
  --notice-category-color: var(--color-children);
}

:is(.p-postList__cat, .c-categoryList__link):is(
  [data-cat-id="1"],
  [data-cat-id="7"],
  [data-cat-id="8"]
) {
  background-color: var(--notice-category-color);
  color: #fff;
  border-radius: 4px;
  padding-inline: 10px;
}

.p-postList__cat:is(
  [data-cat-id="1"],
  [data-cat-id="7"],
  [data-cat-id="8"]
) {
  opacity: 1;
}

/* カテゴリーラベル内のフォルダーアイコンを非表示 */
:is(.p-postList__cat, .c-categoryList__link):is(
  [data-cat-id="1"],
  [data-cat-id="7"],
  [data-cat-id="8"]
).icon-folder::before,
.c-categoryList__link:is(
  [data-cat-id="1"],
  [data-cat-id="7"],
  [data-cat-id="8"]
) .icon-folder {
  display: none;
}

/* タブ内のMORE：SWELL標準の線をメインカラーに変更 */
.home-news .is-style-more_btn a {
  box-shadow: 0 0 0 1px var(--color_main);
  border-radius: 8px;
}

.home-news .is-style-more_btn a:hover {
  box-shadow: none;
}

/* 施設紹介：元画像にラベルのリンクを重ねる */
.facility-maps {
  display: grid;
  gap: 24px;
  max-width: 1050px;
  margin-inline: auto;
}

.facility-map {
  position: relative;
  width: 100%;
  max-width: 700px;
  margin-inline: auto;
}

.facility-map > img {
  position: relative;
  z-index: 2;
  pointer-events: none;
  display: block;
  width: 100%;
  height: auto;
}

.facility-map--annex {
  max-width: 350px;
}

.facility-maps--children {
  max-width: 680px;
  --facility-focus-color: var(--color-children-strong);
}

@media (min-width: 960px) {
  .facility-maps {
    grid-template-columns: 1fr 2fr;
    align-items: end;
  }

  .facility-map {
    grid-column: 2;
    grid-row: 1;
  }

  .facility-map--annex {
    grid-column: 1;
  }

  .facility-maps--children {
    grid-template-columns: 1fr;
  }

  .facility-maps--children .facility-map {
    grid-column: 1;
  }
}

.facility-map__link {
  position: absolute;
}

.facility-map__link img {
  position: relative;
  z-index: 5;
  display: block;
  width: 100%;
  height: 100%;
}

/* 透明な図形を操作範囲にし、ラベルと同じリンクを使用する */
.facility-map__area {
  position: absolute;
  z-index: 4;
  max-width: none;
  pointer-events: none;
  overflow: visible;
}

.facility-map__area path {
  fill: transparent;
  pointer-events: fill;
  cursor: pointer;
}

.facility-map__link .facility-map__highlight {
  position: absolute;
  z-index: 1;
  max-width: none;
  opacity: 0;
  pointer-events: none;
}

@media (hover: hover) {
  .facility-map__link:hover .facility-map__highlight {
    opacity: 1;
  }
}

.facility-map__link:focus-visible .facility-map__highlight {
  opacity: 1;
}

.facility-map__link:focus-visible {
  outline: 2px solid var(--facility-focus-color, var(--color-women-strong));
  outline-offset: 3px;
}
