/*
 * 田島クリニック テーマ メインCSS
 * @package tajima-theme
 *
 * XDデザイン（TOP_PC_.html / TOP_SP.html）を元に実装
 */

/* ================================================================
   1. CSS Custom Properties（XD実測値）
================================================================ */
:root {
    /* ── カラー ── */
    --color-primary:       #44A06B;   /* メイン（グリーン） */
    --color-primary-dark:  #2e7a50;
    --color-primary-light: #c8e8d6;
    --color-accent:        #E38352;   /* サブ（オレンジ） */
    --color-accent-dark:   #c96a36;
    --color-lime:          #AACF52;   /* ロゴタイプ・ロゴマーク */
    --color-brown:         #886D47;   /* ブラウン */
    --color-text:          #4A4A4A;   /* 文字色 */
    --color-text-sub:      #666460;
    --color-text-light:    #999590;
    --color-bg:            #FFFFFF;
    --color-bg-light:      #F5F3F2;   /* 背景色 */
    --color-bg-header:     #FCFCFC;   /* ヘッダーの背景 */
    --color-bg-green:      #EFF7F2;   /* 薄グリーン背景 */
    --color-bg-green-dark: #E1ECE7;   /* 設備紹介セクション背景 */
    --color-border:        #D5E3DB;   /* 線の色 */
    --color-white:         #FFFFFF;

    /* ── カテゴリバッジ ── */
    --color-cat-info:        #44A06B;
    --color-cat-closed:      #E03C3C;
    --color-cat-change:      #E38352;
    --color-cat-vaccination: #3B8BD4;
    --color-cat-health:      #44A06B;

    /* ── フォント ── */
    --font-base:  'Noto Sans JP', sans-serif;
    --font-serif: 'Noto Serif JP', serif;

    /* ── フォントサイズ ── */
    --fs-xs:   0.75rem;    /*  12px */
    --fs-sm:   0.875rem;   /*  14px */
    --fs-base: 1rem;       /*  16px */
    --fs-md:   1.125rem;   /*  18px */
    --fs-lg:   1.25rem;    /*  20px */
    --fs-xl:   1.5rem;     /*  24px */
    --fs-2xl:  2rem;       /*  32px */
    --fs-3xl:  2.5rem;     /*  40px */
    --fs-4xl:  3.75rem;    /*  60px */

    /* ── スペーシング ── */
    --sp-xs:  0.5rem;
    --sp-sm:  1rem;
    --sp-md:  1.5rem;
    --sp-lg:  2rem;
    --sp-xl:  3rem;
    --sp-2xl: 4rem;
    --sp-3xl: 6rem;
    --sp-4xl: 8rem;

    /* ── レイアウト ── */
    --container-max: 1440px;
    --container-pad: clamp(1rem, 1.5vw, 1.5rem);
    --header-h:      80px;
    --sidebar-w:     200px;   /* MV左ナビ幅 */
    --inner-side-w:  300px;   /* 内ページサイドバー幅 */

    /* ── 形状 ── */
    --radius-sm:   4px;
    --radius-md:   4px;
    --radius-lg:   4px;
    --radius-full: 9999px;

    /* ── 影 ── */
    --shadow-sm: 0 2px 6px rgba(0,0,0,.08);
    --shadow-md: 0 4px 16px rgba(0,0,0,.10);
    --shadow-lg: 0 8px 32px rgba(0,0,0,.12);

    /* ── トランジション ── */
    --tr: .25s ease;
}

/* SP: フォントサイズトークンは最低1remを基準にする（可読性確保） */
@media (max-width: 768px) {
    :root {
        --fs-xs: 1rem;
        --fs-sm: 1rem;
    }
}

/* ================================================================
   2. Reset / Base
================================================================ */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html {
    scroll-behavior: smooth;
    font-size: 16px;
    overflow-x: hidden;
}

body {
    font-family: var(--font-base);
    font-size: var(--fs-base);
    color: var(--color-text);
    background: var(--color-bg);
    line-height: 1.75;
    -webkit-font-smoothing: antialiased;
    padding-top: var(--header-h);
    overflow-x: hidden;
}

img, video, svg { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; transition: opacity var(--tr); }
a:hover { opacity: .75; }
ul, ol { list-style: none; }
button { font: inherit; cursor: pointer; background: none; border: none; }
h1,h2,h3,h4,h5,h6 { line-height: 1.4; font-weight: 500; }

/* Utility: SP-only line break */
.sp-break { display: none; }
@media (max-width: 768px) { .sp-break { display: inline; } }

/* ================================================================
   3. Layout
================================================================ */
.container {
    max-width: var(--container-max);
    margin-inline: auto;
    padding-inline: var(--container-pad);
    /* padding-top: 3rem;
    padding-bottom: 3rem; */
    padding-bottom: .5rem;
}

.section {
    /* padding-block: var(--sp-xl); */
}
.section--bg-light { background: var(--color-bg-light); }
.section--bg-green { background: var(--color-bg-green); }
.section--bg-primary { background: var(--color-primary); color: var(--color-white); }

/* ================================================================
   4. Typography
================================================================ */
.section-header {
    text-align: center;
    padding-top: var(--sp-md);
    margin-bottom: var(--sp-xl);
}
.section-header--left { text-align: left; }

.section-header--center { text-align: center;}

.section-header--margin-bottom-large { margin-bottom: var(--sp-lg);}

.section-header__en.section-header--no-margin-bottom {
    margin-bottom: 0;
    font-size: var(--fs-xs);
}

.section-header__en.section-header__en--padding-top {
    padding-top: 4rem;
}

.section-header.section-header--left.section-header--margin-bottom-large {
    margin-bottom: var(--sp-lg);
}

.section-header__en {
    display: block;
    font-size: var(--fs-xs);
    font-weight: 900;
    letter-spacing: .1em;
    color: var(--color-primary);
    margin-bottom: .5rem;
    /*margin-top: -0.2rem;*/
}
.section-header__en.section-header__en--padding-top {
    padding-top: 6rem;
}
#contact .section-header__en.section-header__en--padding-top {
    padding-top: 0rem;
}
.guide-2col__body .section-header{
    padding-top: unset;
    margin-bottom: 1.5rem;
}
.section-header__title {
    font-size: var(--fs-2xl);
    font-weight: 500;
    color: var(--color-text);
    letter-spacing: .1em;
    padding-top: .5rem;
}
@media (max-width: 768px) {
    .section-header__title { font-size: var(--fs-xl); }
    /* .section { padding-block: var(--sp-lg); } */
    .section-header { margin-bottom: var(--sp-lg); margin-top: 3rem; }
}

/* ================================================================
   5. Buttons
================================================================ */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    padding: .75rem 2rem;
    font-size: var(--fs-base);
    font-weight: 700;
    border-radius: var(--radius-full);
    border: 2px solid transparent;
    cursor: pointer;
    transition: background var(--tr), color var(--tr), border-color var(--tr), opacity var(--tr);
    text-decoration: none;
    white-space: nowrap;
    line-height: 1;
    overflow: hidden;
    position: relative;
}
.btn [aria-hidden="true"] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 50%;
    background: var(--color-white);
    color: var(--color-primary);
    font-size: 0.85rem;
    transition: transform var(--tr), background var(--tr), color var(--tr);
}
.btn:hover [aria-hidden="true"] {
    transform: translateX(4px);
}
.btn--primary {
    background: var(--color-primary);
    color: var(--color-white);
    border-color: var(--color-primary);
}
.btn--primary:hover { background: var(--color-white); color: var(--color-primary); border-color: var(--color-primary); opacity: 1; }
.btn--primary:hover [aria-hidden="true"] {
    background: var(--color-primary);
    color: var(--color-white);
}
.btn--accent {
    background: var(--color-accent);
    color: var(--color-white);
    border-color: var(--color-accent);
}
.btn--accent:hover { background: var(--color-accent-dark); border-color: var(--color-accent-dark); opacity: 1; }
.btn--outline {
    background: transparent;
    color: var(--color-primary);
    border-color: var(--color-primary);
}
.btn--outline:hover { background: var(--color-primary); color: var(--color-white); opacity: 1; }
.btn--outline-white {
    background: transparent;
    color: var(--color-white);
    border-color: var(--color-white);
}
.btn--outline-white:hover { background: var(--color-white); color: var(--color-primary); opacity: 1; }
.btn--sm { padding: .5rem 1.25rem; font-size: var(--fs-sm); }
.btn--lg { padding: 1rem 2.5rem; font-size: var(--fs-md); }

/* Shared PNG arrows: keep existing wrappers/hover movement, replace text glyphs. */
.btn [aria-hidden="true"],
.top-about__btn-arrow,
.top-feature__btn-arrow,
.guide-online-card__btn-arrow,
.top-shop__sub-arrow,
.medical-dept-card__btn-arrow {
    font-size: 0;
    background-image: url('../images/arrows/green-arrow-md.png');
    background-repeat: no-repeat;
    background-position: center;
    background-size: 10px 9px;
}
.btn--primary:hover [aria-hidden="true"],
.top-about__btn:hover .top-about__btn-arrow,
.top-feature__btn:hover .top-feature__btn-arrow,
.guide-online-card__btn:hover .guide-online-card__btn-arrow,
#general .medical-dept-card__btn:hover .medical-dept-card__btn-arrow,
.medical-dept-card__btn:hover .medical-dept-card__btn-arrow {
    background-image: url('../images/arrows/white-arrow-md.png');
}

/* サイドバーがある全ページでヘッダーを非表示（トップ・内ページ共通） */
body .site-header { display: none; }
body { padding-top: 0; }

/* ================================================================
   左サイドバー（内ページ共通・PC固定）
================================================================ */
.page-left-sidebar {
    position: fixed;
    top: 0;
    left: 0;
    width: var(--sidebar-w);
    height: 100vh;
    z-index: 260;
    background: var(--color-bg-header);
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: var(--sp-md) var(--sp-sm);
    overflow: hidden;
    box-shadow: 2px 0 12px rgba(0,0,0,.08);
    justify-content: space-between;
    will-change: transform;
    transform: translateZ(0);
}

/* 全ページ：サイドバー分だけ右にオフセット（トップ・内ページ共通） */
.site-main,
.site-footer {
    margin-left: var(--sidebar-w);
}
.pagetop-btn {
    left: calc(var(--sidebar-w) + 1rem);
}

/* SP：左サイドバーを非表示（ハンバーガードロワーで代替） */
@media (max-width: 768px) {
    .page-left-sidebar { display: none; }
    .site-main,
    .site-footer { margin-left: 0; }
    .pagetop-btn { left: 1rem; }
}

/* ================================================================
   6. Site Header（上部バー）
================================================================ */
.site-header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 1000;
    height: var(--header-h);
    background: var(--color-white);
    box-shadow: 0 2px 8px rgba(0,0,0,.08);
}
.site-header__inner {
    display: flex;
    align-items: center;
    height: 100%;
    width: 100%;
    padding-inline: var(--sp-md);
    gap: var(--sp-md);
}

/* ロゴ */
.site-header__logo {
    flex-shrink: 0;
}
.site-header__logo-link {
    display: flex;
    align-items: center;
    gap: .5rem;
}
.site-header__logo img,
.site-header__logo-img {
    height: 52px;
    width: auto;
}
.site-header__logo-img--sp { display: none; }

/* グローバルナビ（内ページ用） */
.global-nav {
    display: flex;
    align-items: center;
    flex: 1;
    margin-inline: var(--sp-sm);
}
.global-nav__list {
    display: flex;
    align-items: center;
    gap: .1rem;
    flex-wrap: wrap;
}
.global-nav__link {
    display: block;
    padding: .5rem .7rem;
    font-size: .8125rem;
    font-weight: 700;
    color: var(--color-text);
    border-radius: var(--radius-sm);
    white-space: nowrap;
    transition: color var(--tr), background var(--tr);
}
.global-nav__link:hover { color: var(--color-primary); background: var(--color-bg-green); opacity: 1; }

/* メガメニュー */
.global-nav__item--has-child { position: relative; }
.global-nav__mega-menu {
    display: none;
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    min-width: 480px;
    background: var(--color-white);
    border-top: 3px solid var(--color-primary);
    box-shadow: var(--shadow-md);
    border-radius: 0 var(--radius-md) var(--radius-md) var(--radius-md);
    z-index: 200;
}
.global-nav__item--has-child:hover .global-nav__mega-menu,
.global-nav__mega-menu.is-open { display: block; }
.global-nav__mega-inner {
    display: grid;
    grid-template-columns: 1fr 1fr;
    padding: var(--sp-md) var(--sp-lg);
    gap: 0;
}
.global-nav__mega-col + .global-nav__mega-col {
    border-left: 1px solid var(--color-border);
    padding-left: var(--sp-md);
}
.global-nav__mega-heading {
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: .12em;
    color: var(--color-primary);
    text-transform: uppercase;
    margin-bottom: .5rem;
}
.global-nav__sub-list { display: flex; flex-direction: column; }
.global-nav__sub-list a {
    display: block;
    padding: .3rem .5rem;
    font-size: var(--fs-sm);
    color: var(--color-text);
    border-radius: var(--radius-sm);
}
.global-nav__sub-list a:hover { color: var(--color-primary); background: var(--color-bg-light); opacity: 1; }

/* ホームページではグローバルナビを非表示（MVサイドバーで代替） */
body.home .global-nav { display: none; }

/* 電話 */
.site-header__tel {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    line-height: 1.2;
    flex-shrink: 0;
    margin-left: auto;
}
.site-header__tel-link {
    display: flex;
    align-items: center;
    gap: .4rem;
    font-size: 1.25rem;
    font-weight: 900;
    color: var(--color-primary);
    letter-spacing: .02em;
}
.site-header__tel-link::before {
    content: '📞';
    font-size: .9rem;
}
.site-header__tel-note {
    font-size: var(--fs-xs);
    color: var(--color-text-sub);
}

/* 予約ボタン */
.site-header__booking {
    display: flex;
    gap: .5rem;
    flex-shrink: 0;
}
.site-header__booking-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: .45rem .9rem;
    border-radius: var(--radius-md);
    font-size: .8125rem;
    font-weight: 700;
    line-height: 1.3;
    transition: opacity var(--tr);
    min-width: 100px;
    text-align: center;
}
.site-header__booking-btn small {
    font-size: .65rem;
    font-weight: 400;
    opacity: .85;
}
.site-header__booking-btn--web {
    background: var(--color-primary);
    color: var(--color-white);
}
.site-header__booking-btn--tel {
    background: var(--color-accent);
    color: var(--color-white);
}
.site-header__booking-btn:hover { opacity: .85; }


/* ハンバーガー */
.menu-toggle {
    display: none;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 5px;
    width: 40px;
    height: 40px;
    margin-left: var(--sp-sm);
    flex-shrink: 0;
}
.menu-toggle__bar {
    display: block;
    width: 32px;
    height: 2px;
    background: #886D47;
    border-radius: 1px;
    transition: transform var(--tr), opacity var(--tr);
}
.menu-toggle.is-active .menu-toggle__bar:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.menu-toggle.is-active .menu-toggle__bar:nth-child(2) { opacity: 0; }
.menu-toggle.is-active .menu-toggle__bar:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ================================================================
   7. SP フルスクリーンメニュー
================================================================ */
body.drawer-open { overflow: hidden; }
.drawer-nav {
    position: fixed;
    top: var(--header-h);
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    background: var(--color-white);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    z-index: 990;
    opacity: 0;
    visibility: hidden;
    transform-origin: top;
    transform: translateY(-100%);
    transition: opacity .25s ease, transform .35s ease, visibility .35s;
}
.drawer-nav[aria-hidden="false"],
.drawer-nav.is-open {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}
.drawer-nav__inner {
    max-width: 480px;
    margin: 0 auto;
    padding: var(--sp-sm) var(--sp-md) var(--sp-xl);
}
.drawer-nav__list { display: flex; flex-direction: column; }
.drawer-nav__link,
.drawer-nav__toggle {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .4rem;
    width: 100%;
    padding: 1.35rem 0;
    font-size: var(--fs-lg);
    font-weight: 700;
    color: var(--color-text);
    border: none;
    border-bottom: 1px solid var(--color-border);
    background: none;
    font-family: inherit;
    text-align: center;
}
.drawer-nav__plus {
    display: inline-flex;
    align-items: center;
    color: var(--color-accent);
}
.drawer-nav__toggle[aria-expanded="true"] .drawer-nav__plus svg .plus-v { display: none; }
.drawer-nav__sub {
    display: none;
    padding: var(--sp-lg) 0 var(--sp-xl);
    border-bottom: 1px solid var(--color-border);
}
.drawer-nav__sub.is-open { display: block; }
.drawer-nav__sub .sidebar-medical-panel__group { margin-bottom: var(--sp-lg); }
.drawer-nav__sub .sidebar-medical-panel__group:last-child { margin-bottom: 0; }
.drawer-nav__sub .sidebar-medical-panel__group-title { font-size: var(--fs-md); margin-bottom: var(--sp-md); }
.drawer-nav__sub .sidebar-medical-panel__link { padding: .9rem .6rem; font-size: var(--fs-base); }

/* AI相談ボタン */
.drawer-nav__ai-btn {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    width: 100%;
    max-width: 300px;
    margin: var(--sp-xl) auto 0;
    padding: 1rem 1.2rem;
    background: linear-gradient(135deg, #b5a362 0%, #816737 50%, #6a522d 100%);
    color: var(--color-white);
    font-size: var(--fs-base);
    font-weight: 700;
    border-radius: var(--radius-full);
    letter-spacing: .04em;
    text-shadow: 0 1px 2px rgba(0,0,0,.25);
    font-family: var(--font-base);
}
.drawer-nav__ai-btn .top-mv__sidebar-ai-icon { font-size: 1.15rem; display: inline-flex; }
.drawer-nav__ai-dot {
    position: absolute;
    top: -5px;
    right: 22%;
    width: 13px;
    height: 13px;
    border-radius: 50%;
    background: var(--color-cat-closed);
    border: 2px solid var(--color-white);
}

/* 予約CTA */
.drawer-nav__ctas {
    display: flex;
    flex-direction: column;
    gap: var(--sp-sm);
    margin-top: var(--sp-lg);
}
.drawer-nav__cta.top-mv__sidebar-btn {
    position: relative;
    padding: 1.4rem 1.25rem 1.6rem;
    border-radius: 10px;
}
.drawer-nav__cta .top-mv__sidebar-btn-top {
    justify-content: center;
    margin-bottom: .9rem;
}
.drawer-nav__cta .top-mv__sidebar-btn-label {
    font-size: var(--fs-base);
    padding: .35rem .9rem;
}
.drawer-nav__cta .top-mv__sidebar-btn-ext-icon {
    position: absolute;
    top: 1.1rem;
    right: 1.25rem;
}
.drawer-nav__cta-row {
    display: flex;
    align-items: baseline;
    justify-content: center;
    flex-wrap: wrap;
    gap: .5rem;
}
.drawer-nav__cta .top-mv__sidebar-btn-action { font-size: var(--fs-base); }
.drawer-nav__cta .top-mv__sidebar-btn-tel {
    font-size: 1.5rem;
    margin-bottom: 0;
}
.drawer-nav__cta.top-mv__sidebar-btn--web .top-mv__sidebar-btn-action { padding: 0; }

.drawer-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.4);
    z-index: 980;
}
.drawer-overlay.is-active,
.drawer-overlay.is-visible { display: block; }
@media (max-width: 768px) {
    .drawer-overlay.is-active,
    .drawer-overlay.is-visible { display: none; }
}

/* ================================================================
   8. ページヒーロー（内ページ共通）
================================================================ */
/* ── デフォルトヒーロー（画像なしページ用） ── */
.page-hero {
    background: var(--color-bg-light);
    border-bottom: 3px solid var(--color-primary-light);
    padding-block: var(--sp-xl) var(--sp-lg);
}
.page-hero__inner {
    max-width: var(--container-max);
    margin-inline: auto;
    padding-inline: var(--container-pad);
}
.page-hero__en {
    display: block;
    font-size: var(--fs-sm);
    font-weight: 800;
    letter-spacing: .15em;
    color: var(--color-primary);
    margin-top: .4rem;
}
.page-hero__title {
    font-size: var(--fs-2xl);
    font-weight: 500;
    letter-spacing: 0.25rem;
    color: var(--color-text);
}

/* ── 画像ヒーロー（診療内容など） ── */
.page-hero--image {
    position: relative;
    padding-block: 0;
    border-bottom: none;
    background: transparent;
    overflow: hidden;
}
.page-hero--image .page-hero__bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    z-index: 0;
}
.page-hero--image::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(to bottom, #f2f7f5 0%, #ffffff 100%);
    opacity: .8;
    z-index: 1;
}
.page-hero--image .page-hero__inner {
    position: relative;
    z-index: 2;
    height: 280px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
}
.page-hero--image .page-hero__title {
    font-size: 3.375rem;
    font-weight: 500;
    letter-spacing: 0.25rem;
    color: var(--color-black);
    margin-bottom: 0;
}
.page-hero--image .page-hero__en {
    font-size: var(--fs-base);
    font-weight: 800;
    letter-spacing: .2em;
    color: #54a877;
    margin-top: .5rem;
}

/* ── パンくずバー（ヒーロー直下） ── */
.page-hero__breadcrumb-bar {
    display: flex;
    justify-content: flex-end;
    padding-block: .6rem;
}

/* パンくず */
.breadcrumb { font-size: var(--fs-xs); color: var(--color-text-sub); }
.breadcrumb__list {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .6rem;
    list-style: none;
    padding: 0;
    margin: 0;
}
.breadcrumb__item { display: inline-flex; align-items: center; gap: .3rem; }
.breadcrumb a { color: var(--color-text-light); }
.breadcrumb a:hover { text-decoration: underline; opacity: 1; }
.breadcrumb__sep {
    color: #44A06B;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1em;
    line-height: 1;
    font-size: .52em;
    vertical-align: middle;
}

/* ── hero--medical 固有スタイル ── */
.hero--medical {
    /* inherits page-hero--image */
}

/* ================================================================
   9. 内ページ 2カラムレイアウト
================================================================ */
.inner-page-layout {
    display: grid;
    grid-template-columns: 1fr var(--inner-side-w);
    gap: var(--sp-3xl);
    max-width: var(--container-max);
    margin-inline: auto;
    padding: 0 var(--container-pad);
    align-items: start;
}
.inner-page-layout__content { min-width: 0; }
.inner-page-layout--full { grid-template-columns: 1fr; padding-top: 4rem; }
@media (max-width: 1024px) {
    .inner-page-layout {
        grid-template-columns: 1fr;
        gap: var(--sp-xl);
    }
}

/* ================================================================
   10. サイドバー連絡先
================================================================ */
.inner-sidebar { display: flex; flex-direction: column; gap: var(--sp-lg); }

.sidebar-contact {
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    padding: var(--sp-lg);
    border: 1px solid var(--color-border);
}
.sidebar-contact__section { margin-bottom: var(--sp-md); }
.sidebar-contact__section:last-child { margin-bottom: 0; }
.sidebar-contact__title {
    font-size: var(--fs-sm);
    font-weight: 700;
    color: var(--color-primary);
    margin-bottom: .5rem;
    padding-bottom: .3rem;
    border-bottom: 2px solid var(--color-primary-light);
    display: flex;
    align-items: center;
    gap: .3rem;
}
.sidebar-contact__btn {
    display: block;
    padding: .75rem;
    text-align: center;
    font-size: var(--fs-sm);
    font-weight: 700;
    border-radius: var(--radius-md);
    color: var(--color-white);
    margin-bottom: .5rem;
}
.sidebar-contact__btn--ai { background: var(--color-primary); }
.sidebar-contact__btn--web { background: var(--color-accent); }
.sidebar-contact__tel {
    font-size: 1.25rem;
    font-weight: 900;
    color: var(--color-primary);
    display: block;
    text-align: center;
    letter-spacing: .02em;
}
.sidebar-contact__note {
    font-size: var(--fs-xs);
    color: var(--color-text-sub);
    margin-top: .25rem;
    text-align: center;
}
.sidebar-contact__hours { font-size: var(--fs-xs); line-height: 1.9; }
.sidebar-contact__access { font-size: var(--fs-xs); line-height: 1.9; }
.sidebar-contact__access dt { font-weight: 700; color: var(--color-primary); }

/* サイドバー ダウンロードリンク */
.sidebar-download__list { display: flex; flex-direction: column; gap: .4rem; }
.sidebar-download__link {
    display: flex;
    align-items: center;
    gap: .4rem;
    font-size: var(--fs-sm);
    color: var(--color-primary);
    padding: .5rem .6rem;
    border: 1px solid var(--color-primary-light);
    border-radius: var(--radius-sm);
    background: var(--color-white);
    transition: background var(--tr);
}
.sidebar-download__link:hover { background: var(--color-bg-green); opacity: 1; }
.sidebar-download__link::before {
    content: '⬇';
    font-size: .75rem;
    flex-shrink: 0;
}

/* ================================================================
   11. サイトフッター
================================================================ */
/* ================================================================
   SITE FOOTER — light 3-column layout
================================================================ */
.site-footer {
    position: relative;
    z-index: 30;
    background: var(--color-white);
    color: var(--color-text);
}

.site-footer__inner {
    display: grid;
    grid-template-columns: 2fr 1fr .7fr;
    gap: var(--sp-2xl);
    padding-top: var(--sp-2xl);
    align-items: start;
}

/* Col 1 — info */
.site-footer__logo { margin-bottom: var(--sp-sm); }
.site-footer__logo-img { /* height: 78px;*/ width: auto; }

/* Info + map side by side inside col 1 */
.site-footer__info-map {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2.5rem;
    align-items: stretch;
    margin-bottom: var(--sp-md);
}
.site-footer__info-left {
    display: flex;
    flex-direction: column;
    min-width: 0;
}
.site-footer__map {
    border-radius: var(--radius-sm);
    overflow: hidden;
    width: 100%;
    min-width: 0;
    aspect-ratio: 1420 / 800;
    height: auto;
}
.site-footer__map iframe { width: 100%; height: 100%; display: block; border: none; }
.site-footer__bus-icon {
    width: 1rem;
    height: auto;
    object-fit: contain;
    flex-shrink: 0;
    display: block;
}
.site-footer__address {
    font-size: var(--fs-base);
    line-height: 1.8;
    color: var(--color-text-sub);
   /* margin-bottom: var(--sp-sm);*/
    font-style: normal;
}
.site-footer__address-org {
    font-size: var(--fs-sm);
    font-weight: 700;
    color: var(--color-text);
    margin-bottom: .2rem;
}
.site-footer__access-note {
    display: flex;
    align-items: center;
    padding-block: .5rem;
    gap: .3rem;
    line-height: 2.4
}
.site-footer__address-line {
    margin-left: .3rem;
}
.site-footer__parking-wrap {
    background: var(--color-bg-light);
    padding: .8rem;
    /*padding: .45rem .6rem .4rem;*/
    border-radius: 0.5rem;
}
.site-footer__parking {
    display: flex;
    /*align-items: flex-start;*/
    gap: .4rem;
    font-size: 0.938rem;
    color: var(--color-text-sub);
    margin: 0;
    font-weight: bold;
}
.site-footer__parking-icon {
    width: 1.2rem;
    height: 1.2rem;
    flex-shrink: 0;
    margin-top: .05rem;
}
.site-footer__parking-note {
    font-size: var(--fs-sm);
    color: var(--color-accent);
    line-height: 1.6;
    margin: .15rem 0 0;
    padding-left: 1em;
    text-indent: -1em;
}
.site-footer__hours { margin-bottom: var(--sp-sm); }
.site-footer .clinic-hours__table-box {
    background: var(--color-white);
    border: 1px solid #F2EEEA;
    border-radius: 10px;
    padding: 26px 28px 24px;
}
.site-footer .clinic-hours__table th {
    font-size: 18px;
}
.site-footer .clinic-hours__table td,
.site-footer .clinic-hours__table .clinic-hours__td-label {
    font-size: 20px;
}
.site-footer .clinic-hours__table {
    width: 100%;
    max-width: 100%;
    height: 214px;
    table-layout: fixed;
    border-collapse: collapse;
    border: none;
    background: transparent;
}
.site-footer .clinic-hours__table thead tr,
.site-footer .clinic-hours__table tbody tr {
    height: 33.333%;
    background-image: linear-gradient(#F2EEEA, #F2EEEA);
    background-repeat: no-repeat;
    background-position: left bottom;
    background-size: 100% 1px;
}
.site-footer .clinic-hours__table th,
.site-footer .clinic-hours__table td {
    padding: 1rem .85rem;
    border: none;
    background: transparent;
    text-align: center;
}
.site-footer .clinic-hours__table th.clinic-hours__th-time,
.site-footer .clinic-hours__table .clinic-hours__td-label {
    width: 12rem;
    padding-left: 1.5rem;
    text-align: left;
    white-space: nowrap;
}
.site-footer .clinic-hours__note {
    margin-top: 1.5rem;
    padding-left: .25rem;
    font-size: 20px;
    line-height: 1.6;
    display: flex;
    align-items: center;
    gap: .35rem;
    color: var(--color-text);
}
.site-footer .clinic-hours__note-dash {
    font-size: 1.1em;
}
.site-footer .clinic-hours__note-dots {
    font-size: 1.1em;
}
.site-footer__affiliated {
    margin-top: var(--sp-sm);
    border: 1px solid #F7F4F2;
    border-radius: var(--radius-sm);
    padding: .5rem .75rem;
}
.site-footer__affiliated-label {
    font-size: var(--fs-sm);
    color: var(--color-text);
    margin-bottom: .2rem;
}
.site-footer__affiliated-list {
    font-size: var(--fs-sm);
    color: var(--color-text-sub);
    line-height: 1.6;
}

/* フッター診療時間テーブル */
.clinic-hours__table {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    font-size: var(--fs-xs);
}
.clinic-hours__table th,
.clinic-hours__table td {
    padding: .35rem .4rem;
    text-align: center;
    border: 1px solid #faf9f8;
}
.clinic-hours__table th {
    font-weight: 400;
    color: var(--color-text);
}
.clinic-hours__table th.clinic-hours__th-day {
    white-space: nowrap;
}
.clinic-hours__table th.clinic-hours__th-time {
    text-align: left;
    padding-left: .8rem;
    width: 6.2rem;
}
.clinic-hours__table .is-open { color: var(--color-accent); font-weight: 700; }
.clinic-hours__table .is-closed { color: var(--color-text); }
.clinic-hours__table .is-special { color: var(--color-accent); }
.clinic-hours__table .clinic-hours__td-label {
    text-align: left;
    white-space: nowrap;
    color: var(--color-text);
    padding-left: .8rem;
    width: 6.2rem;
}
.clinic-hours__note {
    font-size: var(--fs-lg);
    margin-top: .5rem;
    color: var(--color-text-sub);
    display: flex;
    align-items: center;
    gap: .3rem;
}
.clinic-hours__note-dash { color: var(--color-text); font-weight: 700; }
.clinic-hours__note-dots { color: var(--color-text-sub); letter-spacing: .1em; }

.site-footer .clinic-hours__table {
    border-collapse: collapse;
}
.site-footer .clinic-hours__table th,
.site-footer .clinic-hours__table td {
    border: none;
}
.site-footer .clinic-hours__table-box { box-shadow: none; }

/* Col 2 & 3 — nav */
.site-footer__nav-heading {
    font-size: var(--fs-md);
    font-weight: 500;
    color: var(--color-text);
    margin-bottom: var(--sp-sm);
    display: flex;
    align-items: center;
    gap: .4rem;
    line-height: 2;
}
.site-footer__nav-heading::before {
    content: '▶';
    font-size: .5rem;
    color: var(--color-primary);
    flex-shrink: 0;
}
.site-footer__nav-heading a { color: inherit; text-decoration: none; }
.site-footer__nav-group { margin-bottom: var(--sp-sm); padding-left: 1rem; }
.site-footer__nav-sub {
    font-size: var(--fs-base);
    font-weight: 500;
    color: var(--color-primary);
    margin-top: var(--sp-xs);
    margin-bottom: .3rem;
    padding-left: 0;
    border-left: none;
    line-height: 2;
}
.site-footer__nav-list {
    display: flex;
    flex-direction: column;
    gap: .25rem;
    margin-bottom: 0;
    padding-left: 1.3rem;
    border-left: 1px solid var(--color-primary);
    margin-left: .4rem;
}
.site-footer__nav-list--secondary {
    border-left: none;
    padding-left: 0;
}
.site-footer__nav-list li::before { content: none; }
.site-footer__nav-list a {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    text-decoration: none;
    transition: color var(--tr);
    line-height: 2;
}
.site-footer__nav-list a:hover { color: var(--color-primary); opacity: 1; }

.site-footer__nav-list--secondary { padding-left: 0; }
.site-footer__nav-list--secondary a {
    display: flex;
    align-items: center;
    gap: 1rem;
    font-size: var(--fs-md);
    font-weight: 500;
    line-height: 2;
}
.site-footer__nav-list--secondary a::before {
    content: '▶';
    font-size: .5rem;
    color: var(--color-primary);
    flex-shrink: 0;
}

/* Bottom bar */
.site-footer__bottom {
    padding-block: var(--sp-md);
}
.site-footer__bottom-inner {
    display: flex;
    justify-content: flex-end;
}
.site-footer__copyright {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    text-align: center;
    font-family: Meiryo, var(--font-base);
}
@media (max-width: 1180px) and (min-width: 769px) {
    .site-footer__bottom-inner {
        justify-content: center;
    }
}

/* Page top button — fixed bottom-left */
.pagetop-btn {
    position: fixed;
    bottom: 2rem;
    left: 4rem;
    z-index: 300;
    display: none;
    flex-direction: row;
    align-items: flex-end;
    gap: .4rem;
    text-decoration: none;
    color: var(--color-primary);
    opacity: 0;
    pointer-events: none;
    transition: opacity .3s ease;
}
.pagetop-btn.is-visible {
    opacity: 1;
    pointer-events: auto;
}
/* Left: vertical line + circle */
.pagetop-btn__track {
    position: relative;
    width: 1px;
    height: 48px;
    flex-shrink: 0;
}
.pagetop-btn__line {
    display: block;
    width: 1px;
    height: 100%;
    background: var(--color-primary);
    position: relative;
    overflow: hidden;
}
.pagetop-btn__line::after {
    content: '';
    position: absolute;
    bottom: -100%;
    left: 0;
    width: 100%;
    height: 100%;
    background: var(--color-bg-light);
    animation: pageTopRise 1.8s cubic-bezier(.4,0,.2,1) infinite;
}
@keyframes pageTopRise {
    0%   { bottom: -100%; }
    60%  { bottom: 100%; }
    100% { bottom: 100%; }
}
.pagetop-btn__circle {
    display: block;
    width: .5rem;
    height: .5rem;
    border-radius: 50%;
    border: 1.5px solid var(--color-primary);
    background: var(--color-bg-light);
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    animation: pageTopCircle 1.8s cubic-bezier(.4,0,.2,1) infinite;
}
@keyframes pageTopCircle {
    0%   { bottom: 0; opacity: 0; }
    15%  { opacity: 1; }
    60%  { bottom: calc(100% - .5rem); opacity: 1; }
    70%  { opacity: 0; }
    100% { bottom: calc(100% - .5rem); opacity: 0; }
}
/* Right: arrow + label stacked */
.pagetop-btn__text {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .1rem;
}
.pagetop-btn__arrow {
    font-size: .75rem;
    font-weight: 700;
    line-height: 1;
}
.pagetop-btn__label {
    font-size: .55rem;
    font-weight: 700;
    letter-spacing: .08em;
    line-height: 1;
}

@media (max-width: 900px) {
    .site-footer__inner { grid-template-columns: 1fr 1fr; }
    .site-footer__col--info { grid-column: 1 / -1; }
}
@media (max-width: 600px) {
    .site-footer__inner { grid-template-columns: 1fr; }
    .site-footer__bottom-inner { padding-inline-end: 1rem; }
}

/* ================================================================
   12. TOP MV（メインビジュアル）
================================================================ */
.top-mv {
    position: fixed;
    top: 0;
    left: var(--sidebar-w);
    right: 0;
    z-index: 1;
    height: 100vh;
    min-height: 500px;
    max-height: 940px;
    overflow: hidden;
}
body.home .site-main > :not(.top-mv):not(.top-mv__sidebar) {
    position: relative;
    z-index: 30;
}
/* Hide 1px seams between stacked full-width bands and the fixed hero. */
body.home .site-main > section:not(.top-mv):not(.page-banners):not(.top-shop):not(.top-features) + section:not(.page-banners):not(.top-shop):not(.top-features),
body.home .site-main > section:not(.top-mv) + .container,
body.home .site-main > .container + section:not(.page-banners):not(.top-shop):not(.top-features),
body.home .site-main > .container + .container,
body.home .site-footer {
    margin-top: -2px;
    padding-top: 1px;
}

/* 左サイドバー（ホームページ・内ページ共通スタイル） */
.top-mv__sidebar {
    position: fixed;
    top: 0;
    left: 0;
    width: var(--sidebar-w);
    height: 100vh;
    z-index: 260;
    background: #FCFCFC;
    /*background: var(--color-white);*/
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: var(--sp-md) .75rem;
    overflow: hidden;
    box-shadow: 2px 0 12px rgba(0,0,0,.08);
    justify-content: space-between;
    will-change: transform;
    transform: translateZ(0);
}

/* ロゴ */
.top-mv__sidebar-logo {
    width: 100%;
    text-align: center;
    padding: 0.5rem;
    padding-bottom: var(--sp-md);
    margin-bottom: var(--sp-md);
}
.top-mv__sidebar-logo a { display: block; }
.top-mv__sidebar-logo img,
.top-mv__sidebar-logo-img { max-width: 165px; margin-inline: auto; height: auto; padding: 0.5rem;}
.top-mv__sidebar-logo-placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .2rem;
    padding: .5rem;
    border: 2px solid var(--color-primary);
    border-radius: var(--radius-sm);
}
.top-mv__sidebar-logo-text {
    font-size: .9rem;
    font-weight: 900;
    color: var(--color-primary);
    letter-spacing: .04em;
    line-height: 1.3;
}
.top-mv__sidebar-logo-sub {
    font-size: .5rem;
    font-weight: 700;
    letter-spacing: .12em;
    color: var(--color-text-sub);
}

/* ナビリンク */
.top-mv__sidebar-nav { width: 100%; }
.top-mv__sidebar-list {
    display: flex;
    flex-direction: column;
    margin-left: .9rem;
}
.top-mv__sidebar-list li {
    width: 100%;
}
.top-mv__sidebar-list li a {
    display: flex;
    align-items: center;
    gap: .25rem;
    font-size: clamp(12px, 1vw, 16px);
    font-weight: 500;
    color: var(--color-text);
    letter-spacing: .1em;
    padding: .8rem .7rem;
    transition: color var(--tr);
}
.top-mv__sidebar-link-text {
    position: relative;
    display: inline-block;
}
.top-mv__sidebar-link-text::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: -.2em;
    height: 1px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: center;
    transition: transform var(--tr);
    pointer-events: none;
}
.top-mv__sidebar-list li a:hover {
    color: var(--color-accent);
    opacity: 1;
    text-decoration: none;
}
.top-mv__sidebar-list li a:hover .top-mv__sidebar-link-text::after {
    transform: scaleX(1);
}
.top-mv__sidebar-plus {
    display: inline-flex;
    align-items: center;
    margin-left: .25rem;
    color: var(--color-accent);
    margin-top: .1rem;
}

/* AI相談ボタン（CTAボタン群の先頭） */
.top-mv__sidebar-ai-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .35rem;
    width: 100%;
    max-width: 135px;
    padding: .4rem .4rem;
    background: linear-gradient(135deg, #b5a362 0%, #816737 50%, #6a522d 100%);
    color: var(--color-white);
    font-size: .7rem;
    font-weight: 700;
    border-radius: var(--radius-full);
    letter-spacing: .04em;
    text-shadow: 0 1px 2px rgba(0,0,0,.25);
    transition: opacity var(--tr);
    margin-bottom: .5rem;
    font-family: var(--font-base);
}
.top-mv__sidebar-ai-btn:hover { opacity: 1; }
.top-mv__sidebar-ai-icon { font-size: .75rem; }
.top-mv__sidebar-ai-icon-img {
    width: 2rem;
    height: 2rem;
    object-fit: contain;
    display: block;
    filter: brightness(0) invert(1);
}

/* CTAボタン群 */
.top-mv__sidebar-btns {
    display: flex;
    flex-direction: column;
    gap: 8px;
    width: 100%;
    margin-top: var(--sp-lg);
    align-items: center;
}
.top-mv__sidebar-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    padding: 3px;
    border-radius: var(--radius-sm);
    color: var(--color-white);
    line-height: 1.4;
    transition: opacity var(--tr);
    text-decoration: none;
    gap: 3px;
}
.top-mv__sidebar-btn-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    margin-bottom: .15rem;
}
.top-mv__sidebar-btn-label {
    font-size: var(--fs-sm);
    font-weight: 700;
    letter-spacing: .04em;
    background: var(--color-white);
    color: var(--color-accent);
    padding: 2px 5px;
    border-radius: 2px;
    font-family: var(--font-base);
}
.top-mv__sidebar-btn-phone-icon {
    width: 1.4rem;
    height: 1.4rem;
    object-fit: contain;
}
.top-mv__sidebar-btn-icon {
    font-size: 1rem;
}
.top-mv__sidebar-btn-body {
    display: flex;
    flex-direction: column;
}
.top-mv__sidebar-btn-action {
    font-size: var(--fs-base);
    letter-spacing: 5%;
    text-align: center;
    font-family: var(--font-base);
    font-weight: 700;
}
.top-mv__sidebar-btn-action.top-mv__sidebar-btn-action--font-md {
    font-size: var(--fs-md);
}
.top-mv__sidebar-btn--web .top-mv__sidebar-btn-action {
    padding-top: .6rem;
    padding-bottom: 2rem;
}
.top-mv__sidebar-btn-tel {
    font-size: 1.3rem;
    letter-spacing: 2%;
    text-align: center;
    font-family: Montserrat, var(--font-base);
    margin-bottom: .8rem;
    font-weight: 600;
}
.top-mv__sidebar-btn--tel { background: var(--color-accent); }
.top-mv__sidebar-btn--web { background: var(--color-primary); }
.top-mv__sidebar-btn-label--web {
    background: var(--color-white);
    color: var(--color-primary);
}
.top-mv__sidebar-btn-ext-icon {
    display: inline-flex;
    align-items: center;
    color: var(--color-white);
}
.top-mv__sidebar-btn:hover { opacity: .85; }

/* 診療内容トグルボタン */
.top-mv__sidebar-medical-toggle {
    display: flex;
    align-items: center;
    gap: .25rem;
    font-size: clamp(12px, 1.1vw, 16px);
    font-weight: 500;
    color: var(--color-text);
    letter-spacing: .1em;
    padding: .75rem .7rem;
    background: none;
    border: none;
    cursor: pointer;
    font-family: inherit;
    transition: color var(--tr);
    width: 100%;
}
.top-mv__sidebar-medical-toggle:hover { color: var(--color-accent); }
.top-mv__sidebar-medical-toggle[aria-expanded="true"] .top-mv__sidebar-plus svg .plus-v {
    display: none;
}

/* サイドバー グリーンシース（フッター到達時） */
.sidebar-sheath {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 0;
    background: var(--color-primary);
    display: flex;
    align-items: flex-end;
    justify-content: center;
    padding-bottom: var(--sp-xl);
    z-index: 10;
    overflow: hidden;
    visibility: hidden;
}
.sidebar-sheath.is-visible {
    visibility: visible;
}
.sidebar-sheath__top-btn {
    display: flex;
    flex-direction: row;
    align-items: flex-end;
    gap: .6rem;
    background: none;
    border: none;
    color: var(--color-white);
    font-family: inherit;
    cursor: pointer;
    opacity: 0;
    transition: opacity .3s ease;
}
.sidebar-sheath.is-full .sidebar-sheath__top-btn {
    opacity: 1;
}
.sidebar-sheath__track {
    position: relative;
    width: 2px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.sidebar-sheath__track-line {
    position: absolute;
    inset: 0;
    background: rgba(255,255,255,.4);
    border-radius: 1px;
}
.sidebar-sheath__track-dot {
    position: absolute;
    bottom: 0;
    width: 8px;
    height: 8px;
    background: var(--color-white);
    border-radius: 50%;
    left: 50%;
    transform: translateX(-50%);
    animation: dot-up 1.8s ease-in-out infinite;
}
@keyframes dot-up {
    0% { bottom: 0; opacity: 1; }
    80% { bottom: 100%; opacity: 1; }
    100% { bottom: 100%; opacity: 0; }
}
.sidebar-sheath__top-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .3rem;
}
.sidebar-sheath__top-icon {
    display: flex;
    align-items: center;
    justify-content: center;
}
.sidebar-sheath__top-text {
    font-size: var(--fs-xs);
    letter-spacing: .05em;
}

/* 診療内容パネル */
.sidebar-medical-panel {
    position: fixed;
    top: 0;
    left: var(--sidebar-w);
    width: min(410px, calc(100vw - var(--sidebar-w) - 2rem));
    height: 100vh;
    background: var(--color-bg-header);
    z-index: 90;
    overflow-y: hidden;
    padding: var(--sp-lg) var(--sp-md);
    display: flex;
    flex-direction: column;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    transform: translateX(-20px);
    transition: opacity .3s ease, visibility .3s ease, transform .3s ease;
}
.sidebar-medical-panel.is-open {
    opacity: 1;
    visibility: visible;
    transform: translateX(0);
}
.sidebar-medical-panel__inner {
    display: flex;
    flex-direction: column;
    justify-content: space-evenly;
    height: 100%;
}
.sidebar-medical-panel__backdrop {
    position: fixed;
    top: 0;
    left: var(--sidebar-w);
    right: 0;
    bottom: 0;
    background: rgba(0,0,0,.3);
    z-index: 80;
    opacity: 0;
    visibility: hidden;
    transition: opacity .3s ease, visibility .3s ease;
}
.sidebar-medical-panel__backdrop.is-visible {
    opacity: 1;
    visibility: visible;
}
.sidebar-medical-panel__header {
    text-align: center;
    margin-bottom: var(--sp-md);
}
.sidebar-medical-panel__en {
    font-size: var(--fs-xs);
    font-weight: 900;
    letter-spacing: .1em;
    color: var(--color-primary);
    margin-bottom: .25rem;
}
.sidebar-medical-panel__title {
    font-size: var(--fs-xl);
    font-weight: 500;
}
.sidebar-medical-panel__group {
    margin-bottom: var(--sp-md);
}
.sidebar-medical-panel__group-title {
    font-size: var(--fs-sm);
    font-weight: 500;
    margin-bottom: var(--sp-sm);
    display: flex;
    align-items: center;
    gap: .4rem;
}
.sidebar-medical-panel__group-title span:last-of-type {
    font-size: var(--fs-sm);
    font-weight: 400;
    color: var(--color-text-light);
}
.sidebar-medical-panel__group-slash {
    font-weight: 500;
}
.sidebar-medical-panel__group-slash--green {
    color: var(--color-primary);
}
.sidebar-medical-panel__group-slash--orange {
    color: var(--color-accent);
}
.sidebar-medical-panel__grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .5rem;
}
.sidebar-medical-panel__grid--full {
    grid-template-columns: 1fr;
    margin-top: .5rem;
}
.sidebar-medical-panel__link {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: .5rem .6rem;
    border-radius: var(--radius-sm);
    font-size: var(--fs-xs);
    color: var(--color-text);
    text-decoration: none;
    text-align: center;
    background: var(--color-bg-light);
    transition: background var(--tr), border-color var(--tr), color var(--tr);
}
.sidebar-medical-panel__group--general .sidebar-medical-panel__link:hover {
    background: #d5e3da;
    border-color: #d5e3da;
    color: var(--color-text);
    opacity: 1;
}
.sidebar-medical-panel__group--specialized .sidebar-medical-panel__link:hover {
    background: #F0E4D8;
    border-color: #F0E4D8;
    color: var(--color-text);
    opacity: 1;
}

/* スライダー */
.top-mv__slider {
    width: 100%;
    position: relative;
}
.swiper,
.top-mv__slider { height: 100%; }
.swiper-wrapper { height: 100%; }
.swiper-slide { height: 100%; }
.top-mv__slide { height: 100%; position: relative; }
.top-mv__slide::after {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,.1);
    pointer-events: none;
}
.top-mv__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* テキストオーバーレイ */
.top-mv__text {
    position: absolute;
    left: 4%;
    bottom: 8%;
    z-index: 20;
    color: var(--color-white);
    max-width: 540px;
    pointer-events: none;
}
.top-mv__vertical-catch {
    position: absolute;
    top: 8%;
    right: 9%;
    z-index: 20;
    display: flex;
    pointer-events: none;
    opacity: 1;
    transition: opacity .39s ease-out;
}
.top-mv__vertical-catch.is-changing {
    opacity: 0;
}
.top-mv__vertical-col {
    writing-mode: vertical-rl;
    font-size: clamp(1.5rem, 3.5vw, 3.5rem);
    font-weight: 700;
    color: var(--color-white);
    letter-spacing: .15em;
}
.top-mv__vertical-col--right {
    padding-top: 1.7rem;
}
.top-mv__vertical-col--left {
    padding-top: 3em;
    margin-right: -.4em;
}
.top-mv__copy {
    font-size: clamp(1.375rem, 2.5vw, 2.25rem);
    font-weight: 500;
    line-height: 1.5;
    margin-bottom: .4rem;
}
.top-mv__copy strong {
    display: block;
    color: var(--color-white);
}
.top-mv__copy-en {
    font-size: clamp(.65rem, .9vw, .875rem);
    font-weight: 400;
    letter-spacing: .06em;
    text-shadow: 0 1px 6px rgba(0,0,0,.5);
    opacity: .92;
    margin-top: .5rem;
}
.sp-only-br {
    display: none;
}
.ipad-only-br {
    display: none;
}
@media (max-width: 1180px) and (min-width: 769px) {
    .ipad-only-br {
        display: inline;
    }
}

/* スクロールインジケーター（スライダー中央下に絶対配置） */
.top-mv__scroll {
    position: absolute;
    bottom: 0px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 20;
    display: flex;
    flex-direction: row;
    align-items: flex-end;
    gap: .22rem;
    pointer-events: none;
}
.top-mv__scroll-track {
    position: relative;
    width: 1px;
    height: 71px;
    flex-shrink: 0;
}
.top-mv__scroll-line {
    display: block;
    width: 1px;
    height: 100%;
    background: var(--color-white);
    position: relative;
    overflow: hidden;
}
.top-mv__scroll-line::after {
    content: '';
    position: absolute;
    top: -100%;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(255,255,255,.3);
    animation: scrollDrop 1.8s cubic-bezier(.4,0,.2,1) infinite;
}
@keyframes scrollDrop {
    0%   { top: -100%; }
    60%  { top: 100%; }
    100% { top: 100%; }
}
.top-mv__scroll-circle {
    display: block;
    width: .5rem;
    height: .5rem;
    border-radius: 50%;
    border: 1.5px solid var(--color-white);
    background: transparent;
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    animation: scrollCircleDrop 1.8s cubic-bezier(.4,0,.2,1) infinite;
}
@keyframes scrollCircleDrop {
    0%   { top: 0; opacity: 0; }
    15%  { opacity: 1; }
    60%  { top: calc(100% - .5rem); opacity: 1; }
    70%  { opacity: 0; }
    100% { top: calc(100% - .5rem); opacity: 0; }
}
.top-mv__scroll-text {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .1rem;
    margin-left: .08rem;
    transform: translate(10px, -10px);
}
.top-mv__scroll-arrow {
    font-size: .75rem;
    font-weight: 700;
    color: var(--color-white);
    line-height: 1;
    text-shadow: 0 1px 4px rgba(0,0,0,.4);
}
.top-mv__scroll-label {
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: .15em;
    color: var(--color-white);
    text-shadow: 0 1px 4px rgba(0,0,0,.4);
}

/* 診察時間フローティングドロワー（右固定） */
.hours-floating-drawer {
    position: fixed;
    right: 0;
    bottom: 0;
    z-index: 260;
    width: min(860px, calc(100vw - 4rem));
    transform: translateX(100%);
    transition: transform var(--tr);
}
.hours-floating-drawer.is-open {
    transform: translateX(0);
}

.hours-floating-panel__clinic-name {
    margin-left: .35rem;
    font-size: var(--fs-sm);
    font-weight: 700;
    color: var(--color-text);
}

.hours-floating-panel__address {
    white-space: nowrap;
}

.hours-floating-panel__address span {
    margin-left: .4rem;
}

.hours-floating-tab {
    position: absolute;
    left: -2.9rem;
    top: 0;
    bottom: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .5rem;
    background: var(--color-accent);
    color: var(--color-white);
    border: none;
    font-size: .7rem;
    font-weight: 700;
    font-family: inherit;
    letter-spacing: .1em;
    padding: 1.25rem .6rem;
    border-radius: var(--radius-sm) 0 0 var(--radius-sm);
    box-shadow: var(--shadow-md);
    transition: opacity var(--tr), box-shadow var(--tr);
    text-decoration: none;
    text-align: center;
    line-height: 1.6;
    width: 2.9rem;
    justify-content: center;
    cursor: pointer;
}
.hours-floating-tab:hover { opacity: .9; box-shadow: var(--shadow-lg); }
.hours-floating-tab__icon {
    font-size: 1.1rem;
    line-height: 1;
}
.hours-floating-tab__icon-img {
    width: 2rem;
    height: 2rem;
    object-fit: contain;
    filter: brightness(0) invert(1);
}
.hours-floating-tab__text {
    font-size: 1.2rem;
    font-weight: 700;
    letter-spacing: .05em;
    line-height: 1.2;
}
.hours-floating-panel {
    position: relative;
    max-height: min(78vh, 520px);
    overflow-y: auto;
    padding: clamp(var(--sp-sm), 3vw, var(--sp-md));
    background: var(--color-white);
    border: 1px solid var(--color-border);
    box-shadow: var(--shadow-lg);
}
.hours-floating-panel__close {
    position: absolute;
    top: .75rem;
    right: .75rem;
    width: 2rem;
    height: 2rem;
    border: none;
    border-radius: 9999px;
    background: var(--color-bg-light);
    color: var(--color-text);
    font-size: 1.25rem;
    line-height: 1;
    cursor: pointer;
}
.hours-floating-panel__body {
    display: grid;
    grid-template-columns: minmax(220px, .85fr) minmax(360px, 1.15fr);
    gap: clamp(var(--sp-md), 3vw, var(--sp-xl));
    align-items: start;
    padding-right: var(--sp-md);
}
.hours-floating-panel__info {
    min-width: 0;
}
.hours-floating-panel__address,
.hours-floating-panel__access {
    font-size: var(--fs-xs);
    color: var(--color-text-sub);
    line-height: 1.7;
}
.hours-floating-panel__name {
    font-size: var(--fs-sm);
    font-weight: 700;
    color: var(--color-text);
    margin-bottom: .25rem;
}
.hours-floating-panel__access-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.15rem;
    height: 1.15rem;
    margin-right: .3rem;
    border-radius: 9999px;
    background: var(--color-accent);
    color: var(--color-white);
    font-size: .65rem;
    font-weight: 700;
    line-height: 1;
    vertical-align: middle;
}
.hours-floating-panel__notice {
    padding: .55rem .75rem .6rem;
    background: #f5f2f1;
    border-radius: 3px;
    font-size: var(--fs-xs);
    color: var(--color-text-sub);
    line-height: 1.55;
}
.hours-floating-panel__notice-title {
    display: flex;
    align-items: center;
    gap: .35rem;
    color: var(--color-text);
}
.hours-floating-panel__notice-title .hours-floating-panel__access-icon {
    margin-right: 0;
}
.hours-floating-panel__notice p:not(.hours-floating-panel__notice-title) {
    color: var(--color-accent);
    font-size: .68rem;
    line-height: 1.55;
}
.hours-floating-panel__hours .clinic-hours__table {
    width: 100%;
    margin-bottom: .55rem;
    min-width: 360px;
}
.hours-floating-panel__hours .clinic-hours__note {
    display: block;
    text-align: right;
}
.hours-floating-backdrop {
    position: fixed;
    inset: 0;
    z-index: 250;
    background: rgba(0,0,0,.08);
}
.hours-floating-backdrop[hidden] { display: none; }

/* Swiper ページネーション非表示 */
.top-mv .swiper-pagination { display: none; }
.swiper-pagination-bullet {
    width: 8px;
    height: 8px;
    background: rgba(255,255,255,.5);
    opacity: 1;
    transition: all .3s;
}
.swiper-pagination-bullet-active {
    background: var(--color-white);
    width: 24px;
    border-radius: 4px;
}

/* ================================================================
   12b. TOP イントロ（クリニックコンセプト）
================================================================ */
.top-intro {
    position: relative;
    z-index: 30;
    margin-top: clamp(500px, 100vh, 940px);
    background: rgba(255,255,255,.82);
    backdrop-filter: blur(8px);
    padding-top: var(--sp-3xl);
}
.top-intro__inner {
    max-width: 640px;
    margin-inline: auto;
    padding-inline: var(--container-pad);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

/* イラスト */
.top-intro__visual {
    margin-bottom: var(--sp-lg);
}
.top-intro__illust {
    width: 220px;
    height: auto;
    margin-inline: auto;
}

/* ラベル */
.top-intro__label {
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: .2em;
    color: var(--color-primary);
    text-transform: uppercase;
    margin-bottom: .6rem;
}

/* メインコピー */
.top-intro__copy {
    font-size: clamp(1rem, 2.2vw, 1.25rem);
    font-weight: 700;
    color: var(--color-text);
    line-height: 1.6;
    margin-bottom: var(--sp-sm);
}
.top-intro__copy strong {
    color: var(--color-primary);
    font-weight: 900;
}

/* ドットインジケーター */
.c-section-dots {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .45rem;
}
.top-intro__dots {
    margin-bottom: var(--sp-sm);
}
.c-section-dots span {
    display: block;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: var(--color-accent);
}
.c-section-dots span:first-child {
    background: var(--color-primary);
}

/* 本文 */
.top-intro__text {
    font-size: var(--fs-sm);
    color: var(--color-text);
    line-height: 2.5;
    margin-bottom: var(--sp-sm);
}
.top-intro__text:last-of-type { margin-bottom: var(--sp-sm); }
.top-intro__text strong { color: var(--color-primary); font-weight: 700; }

/* 内観写真 */
.top-intro__photo {
    margin-top: var(--sp-md);
    width: min(840px, calc(100vw - 2rem));
    max-width: none;
    align-self: center;
    border-radius: var(--radius-md);
    overflow: hidden;
}
.top-intro__photo-img {
    width: 100%;
    height: auto;
    display: block;
}

@media (max-width: 768px) {
    .top-intro {
        margin-top: 0;
        padding-top: var(--sp-3xl);
        padding-bottom: var(--sp-xl);
    }
    .top-intro__inner { width: 100%; max-width: 100%; }
    .top-intro__illust { width: 220px; }
    .top-intro__copy { font-size: var(--fs-lg); }
    .top-intro__text { font-size: var(--fs-base); text-align: left; }
    .top-intro__photo { margin-top: var(--sp-lg); }
    .top-intro__photo-img { 
        height: 220px;
        width: 320px;
        justify-self: center;
     }
    .top-mv__vertical-catch {
        top: calc(var(--header-h) + 10px);
        left: 50%;
        right: auto;
        transform: translateX(-50%);
    }
    .top-mv__vertical-catch .top-mv__vertical-col {
        font-size: clamp(1.72rem, 6.6vw, 2.55rem);
    }
    .top-mv__text {
        padding-left: .05rem;
        padding-right: 1.55rem;
        padding-bottom: 1rem;
    }
    .hours-floating-tab {
        display: none;
    }
    .top-intro-divider {
        display: none;
    }
}

.top-intro-divider {
    background-color: #ffffff;
    padding: 3rem;
    margin-top: 6rem;
    border-top-right-radius: 2rem;
}

@media (max-width: 768px) {
    .top-intro-divider {
        margin-top: 3rem;
    }
}

/* ================================================================
   13. TOP お知らせ
================================================================ */
.top-news { background: var(--color-white); }

/* セクションヘッダー */
.top-news__header { margin-bottom: var(--sp-lg); }
.top-news__header-en {
    font-size: var(--fs-sm);
    font-weight: 700;
    letter-spacing: .15em;
    color: var(--color-primary);
    margin-bottom: .25rem;
}
.top-news__header-title {
    font-size: var(--fs-2xl);
    /* font-weight: 700;*/
    letter-spacing: 0.3rem;
    color: var(--color-text);
    display: flex;
    align-items: center;
    gap: var(--sp-md);
    flex-wrap: wrap;
}

/* 2カラムレイアウト */
.top-news__layout {
    padding-bottom: 3rem;
}
.top-news__panel {
    display: grid;
    grid-template-columns: minmax(0, 0.6fr) minmax(0, 1.2fr);
    gap: var(--sp-md);
    align-items: stretch;
}
.top-news__panel[hidden] { display: none; }

/* 左：フィーチャー */
.top-news__tabs {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin-bottom: var(--sp-sm);
}
.top-news__tab {
    display: inline-block;
    padding: .3rem 1rem;
    border: 1.5px solid var(--color-primary);
    font-size: .75rem;
    font-weight: 700;
    font-family: inherit;
    border-radius: var(--radius-sm);
    letter-spacing: .04em;
    background: transparent;
    color: var(--color-primary);
    cursor: pointer;
    transition: background-color var(--tr), color var(--tr), opacity var(--tr);
}
.top-news__tab:hover,
.top-news__tab.is-active {
    background: var(--color-primary);
    color: var(--color-white);
    opacity: 1;
}
.top-news__featured-link {
    display: block;
    border: 1px solid var(--color-primary);
    overflow: hidden;
    transition: border-color var(--tr), 
}
.top-news__featured-link:hover {
    opacity: 1;
    /*border: 1px solid var(--color-bg-light);*/
}
.top-news__featured-meta {
    display: flex;
    align-items: baseline;
    gap: .75rem;
    margin-bottom: .75rem;
    background: #d5e3db;
    padding: .5rem .5rem;
}
.top-news__featured-date {
    font-size: var(--fs-xs);
    color: var(--color-text-sub);
    white-space: nowrap;
    flex-shrink: 0;
}
.top-news__featured-title-inline {
    font-size: var(--fs-sm);
    font-weight: 700;
    color: var(--color-text);
    line-height: 1.5;
}
.top-news__featured-img {
    display: flex;
    justify-content: center;
    padding: .85rem 1rem 1rem;
    overflow: hidden;
}
.top-news__featured-img img {
    width: min(100%, 230px);
    height: auto;
    display: block;
    object-fit: cover;
    margin-inline: auto;
    transition: transform .45s cubic-bezier(.22, 1, .36, 1);
    will-change: transform;
}
.top-news__featured-link:hover .top-news__featured-meta {
    /*background: var(--color-bg-light);*/
    background: #d5e3db;
}

.top-news__featured-link:hover .top-news__featured-img img {
    transform: scale(1.05);
}
.top-news__empty {
    grid-column: 1 / -1;
    padding: clamp(var(--sp-lg), 4vw, var(--sp-2xl));
    background: var(--color-bg-light);
    border: 1px solid var(--color-border);
    border-left: 4px solid var(--color-primary);
    border-radius: var(--radius-md);
}
.top-news__empty-title {
    font-size: var(--fs-md);
    font-weight: 700;
    color: var(--color-text);
    margin-bottom: .4rem;
}
.top-news__empty-text {
    font-size: var(--fs-sm);
    color: var(--color-text-sub);
    line-height: 1.7;
}

/* 右：ニュースリスト */
.top-news__right {
    display: flex;
    flex-direction: column;
    height: 100%;
}
.top-news__right--only-button {
    align-items: flex-start;
    padding-top: 0;
}
.top-news__list {
    display: flex;
    flex-direction: column;
    flex: 1;
}
.top-news__item { border-bottom: 1px solid var(--color-border); transition: border-color var(--tr); }
.top-news__item:first-child { border-top: 1px solid var(--color-border); }
.top-news__item:hover { border-bottom-color: var(--color-primary); }
.top-news__link {
    display: block;
    padding: var(--sp-md) 0;
    transition: opacity var(--tr);
}
.top-news__link:hover { opacity: 1; }
.top-news__link:hover .top-news__title {
    color: var(--color-primary);
    text-decoration: underline;
}
.top-news__link:hover .top-news__date {
    color: var(--color-primary);
}
.top-news__link:hover .top-news__excerpt {
    font-weight: 500;
}
.top-news__item-meta {
    display: flex;
    align-items: center;
    gap: .5rem;
    flex-wrap: nowrap;
    margin-bottom: .4rem;
    overflow: hidden;
}
.top-news__cat {
    display: inline-block;
    padding: .2rem .75rem;
    font-size: .7rem;
    font-weight: 700;
    border-radius: var(--radius-sm);
    white-space: nowrap;
    flex-shrink: 0;
    background: var(--color-white);
    color: var(--color-primary);
    border: 1px solid var(--color-primary);
}
.top-news__cat--info,
.top-news__cat--topic,
.top-news__cat--uncategorized,
.top-news__cat--closed,
.top-news__cat--change,
.top-news__cat--vaccination,
.top-news__cat--health {
    background: var(--color-white);
    color: var(--color-primary);
    border: 1px solid var(--color-primary);
}
.top-news__date {
    font-size: var(--fs-xs);
    color: var(--color-text-sub);
    white-space: nowrap;
    flex-shrink: 0;
}
.top-news__title {
    font-size: var(--fs-sm);
    font-weight: 700;
    color: var(--color-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1;
    min-width: 0;
}
.top-news__excerpt {
    font-size: var(--fs-xs);
    color: var(--color-text-sub);
    line-height: 1.75;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    padding-top:1rem;
}

.top-news__more {
    margin-top: auto;
    text-align: right;
}

.top-news__more.top-news__more--margin-top {
    margin-top: 4rem;
}
.top-news__more .btn {
    border-radius: var(--radius-sm);
}

@media (max-width: 768px) {
    .top-news__panel         { grid-template-columns: 1fr; gap: var(--sp-xl); }
    .top-news__header-title  { font-size: var(--fs-xl); }
    .top-news__more          { text-align: center; }
    .top-news                { padding-top: 0; }
    /* meta row: allow cat+date to sit on first line, title wraps below */
    .top-news__item-meta     { flex-wrap: wrap; }
    .top-news__title         { white-space: normal; flex-basis: 100%; }
    /* featured image — natural height on SP */
    .top-news__featured-img img { max-height: none; }
    /* news list tap targets */
    .top-news__link          { padding: var(--sp-sm) 0; }
}

/* オンラインショップバナー */
.top-online-shop {
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    padding: var(--sp-md) var(--sp-lg);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-md);
    margin-top: var(--sp-2xl);
    border: 1px solid var(--color-border);
}
.top-online-shop__text strong {
    display: block;
    font-size: var(--fs-md);
    font-weight: 700;
    color: var(--color-primary);
}
.top-online-shop__text p { font-size: var(--fs-sm); color: var(--color-text-sub); margin-top: .25rem; }

@media (max-width: 768px) {
    .top-news__inner { grid-template-columns: 1fr; }
    .top-online-shop { flex-direction: column; align-items: flex-start; }
}

/* ================================================================
   14. TOP クリニックについて（理念）
================================================================ */
.top-about {
    background:
        linear-gradient(180deg, var(--color-bg-light) 0%, var(--color-bg-light) 76%, var(--color-white) 100%);
}

/* 1. メインヒーロー */
.top-about__hero {
    background: var(--color-white);
    width: 100%;
    max-height: 620px;
    overflow: hidden;
}
.top-about__hero img {
    width: 100%;
    height: 620px;
    object-fit: cover;
    display: block;
    padding-bottom: .2rem;
}

/* 2. 雰囲気スライダー */
.top-about__slider {
    background: var(--color-white);
    width: 100%;
    overflow: hidden;
}
.top-about__slider .swiper-wrapper {
    transition-timing-function: linear !important;
}
.top-about__slider .swiper-slide {
    width: 380px;
    height: 260px;
    flex-shrink: 0;
}
.top-about__slider .swiper-slide img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* 3. コンテンツエリア */
.top-about__content {
    background: #fefefe;
    /* padding-block: var(--sp-3xl); */
}
.top-about__inner {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-3xl);
    align-items: start;
    padding-top: 6rem;
}

/* 左：テキスト */
.top-about__label {
    font-size: var(--fs-sm);
    font-weight: 700;
    letter-spacing: .15em;
    color: var(--color-primary);
    margin-bottom: .4rem;
}
.top-about__title {
    font-size: var(--fs-2xl);
    font-weight: 700;
    color: var(--color-text);
    line-height: 1.4;
    margin-bottom: var(--sp-lg);
}
.top-about__illust-wrap {
    display: flex;
    justify-content: center;
    margin-bottom: var(--sp-lg);
}
.top-about__illust {
    width: 322px;
    height: auto;
}
.top-about__catch {
    font-size: var(--fs-base);
    font-weight: 500;
    color: var(--color-text);
    margin-bottom: var(--sp-md);
    line-height: 1.6;
    text-align: center;
}
.top-about__body {
    font-size: var(--fs-sm);
    line-height: 2;
    color: var(--color-text);
    margin-bottom: var(--sp-lg);
}
.top-about__btn-wrap {
    display: flex;
    justify-content: center;
}
.top-about__btn {
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .85rem 1.25rem;
    background: var(--color-primary);
    color: var(--color-white);
    font-size: var(--fs-sm);
    font-weight: 700;
    border-radius: var(--radius-sm);
    border: 2px solid var(--color-primary);
    transition: background var(--tr), color var(--tr), border-color var(--tr);
    text-decoration: none;
}
.top-about__btn-arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.6rem;
    height: 1.6rem;
    background: var(--color-white);
    color: var(--color-primary);
    border-radius: 9999px;
    font-weight: 900;
    font-size: var(--fs-base);
    flex-shrink: 0;
    transition: background var(--tr), color var(--tr), transform var(--tr);
}
.top-about__btn:hover {
    background: var(--color-white);
    color: var(--color-primary);
    opacity: 1;
}
.top-about__btn:hover .top-about__btn-arrow {
    background: var(--color-primary);
    color: var(--color-white);
    transform: translateX(4px);
}

/* 右：重なり画像＋縦書きテキスト */
.top-about__visual {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: var(--sp-md);
}
.top-about__overlap {
    position: relative;
    flex: 1;
    min-width: 0;
    /* total height = 01 height + gap + 02 height, using padding to reserve space */
    aspect-ratio: 1 / 1.6;
}
.top-about__overlap-img {
    display: block;
    border-radius: var(--radius-md);
    object-fit: cover;
    width: 65%;
    aspect-ratio: 3/4;
    position: absolute;
}
/* 01: top-left — sits on top */
.top-about__overlap-img--back {
    top: 0;
    left: 0;
    z-index: 2;
}
/* 02: bottom-right — sits behind 01, nudged up */
.top-about__overlap-img--front {
    bottom: 30%;
    right: 0;
    z-index: 1;
}
/* English caption: left of 02, not overlapping it */
.top-about__img-caption {
    position: absolute;
    bottom: 36%;
    left: -10%;
    width: 39%;
    font-size: .6rem;
    line-height: 1.8;
    color: #D5E3DB;
    opacity: .75;
    text-align: left;
    z-index: 3;
}

/* 縦書き日英テキスト（重なり画像の右） */
.top-about__vert-wrap {
    display: flex;
    flex-direction: column;   /* ja and en sit side by side as two vertical columns */
    align-items: flex-start;
    gap: 1rem;
    flex-shrink: 0;
}
.top-about__vert-ja {
    writing-mode: vertical-rl;
    text-orientation: upright;  /* each CJK char stands upright */
    font-size: .8rem;
    /*font-weight: 700;*/
    color: var(--color-text);
    letter-spacing: .2em;
    line-height: 1.4;
}
.top-about__vert-en {
    writing-mode: vertical-rl;
    font-size: .55rem;
    color: var(--color-text-light);
    letter-spacing: .08em;
    line-height: 1.6;
}

/* PC のみ：重なり画像コンテナ下部の余白を圧縮
   画像 02（前面）の下に確保していた無駄な高さを削り、
   01・02 の相対位置とキャプション位置は見た目そのままに維持する。
   タブレット（≤900px）・SP（≤768px）には適用しない。 */
@media (min-width: 901px) {
    .top-about__overlap { aspect-ratio: 1 / 1.25; }
    /* 元の 1/1.6 換算で 02 の上端が変わらない位置 */
    .top-about__overlap-img--front { bottom: 10.4%; }
    .top-about__img-caption { bottom: 18%; }
}

@media (max-width: 900px) {
    .top-about__inner { grid-template-columns: 1fr; padding-top: 5rem; }
    .top-about__overlap { aspect-ratio: 1 / 1.4; }
    .top-about__overlap-img { width: 60%; }
    .top-about__vert-wrap { flex-direction: row; padding-top: var(--sp-md); }
    .top-about__vert-ja, .top-about__vert-en { writing-mode: horizontal-tb; text-orientation: mixed; font-size: var(--fs-xs); }
    .top-about__slider .swiper-slide { width: 200px; height: 150px; }
}
@media (max-width: 768px) {
    /* テキスト */
    .top-about__hero {
        width: min(100%, 390px);
        margin-inline: auto;
        max-height: none;
    }
    .top-about__hero picture { display: block; }
    .top-about__hero img {
        width: 100%;
        height: auto;
        max-height: none;
        aspect-ratio: auto;
        object-fit: initial;
        padding-bottom: 0;
        margin-bottom: .2rem;
    }
    .top-about__title  { font-size: var(--fs-xl); }
    .top-about__catch  { font-size: var(--fs-lg); text-align: center; /*padding-left: .5rem;*/ }
    .top-about__illust { width: 290px; }
    /* 重なり画像（左）+ 縦書きテキスト（右）横並び */
    .top-about__visual  { flex-direction: row; align-items: flex-start; gap: var(--sp-sm); padding-bottom: 3rem; }
    /* 重なり画像コンテナ — キャプション分の余白を含む */
    .top-about__overlap {
        position: relative;
        aspect-ratio: 1 / 1.35;
        flex: 1;
        min-width: 0;
    }
    .top-about__overlap-img {
        position: absolute;
        width: 222px;
    }
    .top-about__overlap-img--front {
        bottom: -1%;
        right: 0%;
    }
    .top-about__overlap-img--back {
        bottom: 17%;
    }
    /* 英語キャプション — overlap の底部に配置 */
    .top-about__img-caption {
        display: block;
        position: absolute;
        bottom: 9%;
        left: 0;
        width: 100%;
        font-size: var(--fs-xs);
        color: #D5E3DB;
        opacity: 1;
        text-align: left;
        line-height: 1.7;
    }
    /* 縦書きテキスト — 画像右に縦列 */
    .top-about__vert-wrap {
        /* display: flex;
        flex-direction: row;
        align-items: flex-start;
        gap: .2rem;
        padding-top: var(--sp-sm);
        flex-shrink: 0;
        width: auto; */
        display: none;
    }
    .top-about__vert-ja {
        writing-mode: vertical-rl;
        text-orientation: upright;
        font-size: 1rem;
        font-weight: 700;
        color: var(--color-text);
        letter-spacing: .15em;
    }
    .top-about__vert-en {
        writing-mode: vertical-rl;
        font-size: 1rem;
        color: var(--color-text-light);
        letter-spacing: .06em;
        line-height: 1.4;
    }
    /* スライダー */
    .top-about__slider .swiper-slide { width: 200px; height: 150px; }
    /* セクション上下余白 */
    /* .top-about__content { padding-block: var(--sp-2xl); } */
}

/* ================================================================
   15. TOP 写真グリッド
================================================================ */
.top-photo-grid {
    background: var(--color-white);
    padding-block: 0;
    overflow: hidden;
}
.top-photo-grid__inner {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    grid-template-rows: 1fr 1fr;
    gap: 4px;
    height: 480px;
}
.top-photo-grid__item {
    overflow: hidden;
    position: relative;
}
.top-photo-grid__item:first-child {
    grid-row: span 2;
}
.top-photo-grid__item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .5s ease;
}
.top-photo-grid__item:hover img { transform: scale(1.04); }

.top-photo-grid__badge {
    position: absolute;
    top: var(--sp-sm);
    right: var(--sp-sm);
    background: var(--color-accent);
    color: var(--color-white);
    font-size: var(--fs-xs);
    font-weight: 700;
    padding: .2rem .75rem;
    border-radius: var(--radius-full);
}
@media (max-width: 768px) {
    .top-photo-grid__inner { height: 320px; }
}
@media (max-width: 600px) {
    .top-photo-grid__inner { height: 240px; grid-template-columns: 1fr 1fr; }
    .top-photo-grid__item:first-child { grid-row: span 1; }
}

/* ================================================================
   16. TOP 診療内容
================================================================ */
.top-medical {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    background: 
        linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0.85) 8%, rgba(255,255,255,0) 20%),
        url("../images/pc-sliding-gradient.png") center top / 100% 138vh no-repeat;
    background-color: #ffffff;
}
.top-medical::before {
    content: none;
}
.top-medical::after {
    content: none;
}
.top-medical > .container {
    position: relative;
    z-index: 1;
}

.top-medical__group {
    border-radius: var(--radius-md);
    margin-bottom: var(--sp-lg);
}
.top-medical__group:last-child { margin-bottom: 0; padding-bottom: 1rem; }

.top-medical__group-title {
    font-size: var(--fs-xl);
    font-weight: 500;
    color: var(--color-text);
    margin-bottom: var(--sp-lg);
    display: flex;
    align-items: center;
    gap: .5rem;
    letter-spacing: 0.1rem;
}
.top-medical__group-slash {
    font-weight: 500;
}
.top-medical__group-slash--green {
    color: var(--color-primary);
}
.top-medical__group-slash--orange {
    color: var(--color-accent);
}
.top-medical__group-title span:nth-child(3) {
    font-size: var(--fs-base);
    font-weight: 400;
    color: var(--color-text-light);
    letter-spacing: .1em;
}
.top-medical__group-line {
    flex: 1;
    height: 1px;
    background: rgba(255, 255, 255, .8);
    display: block;
}
.top-medical__group-title--small {
    font-size: var(--fs-base);
}

.top-medical__group--2xl {
    margin-bottom: var(--sp-2xl);
}

.top-medical__group--large {
    margin-bottom: var(--sp-lg);
}

.top-medical__group--small {
    margin-bottom: var(--sp-sm);
}

/* カードリスト共通 */
.top-medical__list {
    display: grid;
    gap: 6px;
}
.top-medical__list--general    { grid-template-columns: repeat(5, 1fr); }
.top-medical__list--specialized { grid-template-columns: repeat(5, 1fr); }

/* カード */
.top-medical__item {
    display: flex;
}
.top-medical__link {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    padding: 8px;
    background: var(--color-white);
    border-radius: var(--radius-md);
    border: 2px solid transparent;
    min-height: 100px;
    height: 100%;
    width: 100%;
    transition: box-shadow var(--tr), border-color var(--tr);
    text-decoration: none;
    position: relative;
    overflow: hidden;
}
.top-medical__link:hover {
    box-shadow: var(--shadow-sm);
    opacity: 1;
    border: 2px solid var(--color-primary);
}
.top-medical__list--specialized .top-medical__link:hover {
    border: 2px solid var(--color-accent);
}
.top-medical__name {
    font-size: .8rem;
    /* font-weight: 700; */
    color: var(--color-text);
    line-height: 1.4;
    flex: 1;
    align-self: center;
}
.top-medical__img {
    width: 48px;
    height: 48px;
    object-fit: contain;
    flex-shrink: 0;
    align-self: start;
}
.top-medical__list--specialized .top-medical__img {
    filter: none;
}

/* 美容医療グループ */
.top-medical__aesthetic {
    display: flex;
    flex-direction: column;
    gap: var(--sp-md);
    margin-bottom: 3rem;
}
.top-medical__aesthetic-row {
    display: flex;
    align-items: stretch;
    gap: var(--sp-lg);
    padding: var(--sp-md) var(--sp-lg);
    background: var(--color-white);
    border-radius: var(--radius-md);
}
.top-medical__aesthetic-label {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .4rem;
    width: 100px;
    flex-shrink: 0;
    font-size: var(--fs-xs);
    /* font-weight: 700; */
    color: var(--color-text);
    text-align: center;
}
.top-medical__aesthetic-tags {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
    list-style: none;
    padding: 0;
    margin: 0;
    flex: 1;
    align-content: center;
}
.top-medical__aesthetic-divider {
    display: block;
    width: 1.5px;
    align-self: stretch;
    background: rgb(250 249 248);
    flex-shrink: 0;
    border-radius: 1px;
}
.top-medical__aesthetic-icon {
    width: 48px;
    height: 48px;
    object-fit: cover;
    filter: none;
}
.top-medical__tag {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    padding: .6rem 1rem;
    border: 1.5px solid #EBD5CA;
    border-radius: var(--radius-sm);
    font-size: var(--fs-sm);
    color: var(--color-text);
    text-decoration: none;
    text-align: center;
    transition: border-color var(--tr), color var(--tr), background var(--tr), box-shadow var(--tr);
}
.top-medical__tag:hover {
    border-color: var(--color-primary);
    color: var(--color-primary);
    box-shadow: 0 0 0 1px var(--color-primary);
    opacity: 1;
}
.top-medical__aesthetic .top-medical__tag:hover {
    border-color: var(--color-accent);
    color: var(--color-accent);
    box-shadow: 0 0 0 1px var(--color-accent);
}

@media (max-width: 900px) {
    .top-medical__list--general,
    .top-medical__list--specialized { grid-template-columns: repeat(3, 1fr); }
    .top-medical__aesthetic-row { flex-direction: column; align-items: flex-start; }
    .top-medical__aesthetic-tags { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 768px) {
    .top-medical {
        padding-bottom: 2rem;
        background-color: #ffffff;
        background-image:
            linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0.85) 8%, rgba(255,255,255,0) 20%),
            url("../images/sp-sliding-gradient.png");
        background-position: center top, center top;
        background-size: 100% 100%, 100% 100%;
        background-repeat: no-repeat, no-repeat;
    }
    .top-medical__group-title { font-size: var(--fs-base); margin-bottom: var(--sp-md); }
    /* 2列に変更（通常診療・専門外来とも） */
    .top-medical__list { grid-template-columns: 1fr; }
    .top-medical__list--general { grid-template-columns: repeat(2, 1fr); gap: 4px; }
    .top-medical__list--specialized { grid-template-columns: repeat(2, 1fr); gap: 4px; }
    /* カード: 2列用 — テキスト左寄せ・画像右上 */
    .top-medical__list--general .top-medical__link {
        position: relative;
        flex-direction: row;
        align-items: flex-end;
        justify-content: flex-start;
        text-align: left;
        min-height: 110px;
        padding: var(--sp-sm);
        gap: 0;
    }
    .top-medical__list--general .top-medical__img {
        position: absolute;
        top: var(--sp-xs);
        right: var(--sp-xs);
        width: 40px;
        height: 40px;
        align-self: auto;
    }
    .top-medical__list--general .top-medical__name {
        font-size: 1rem;
        padding-top: 2rem;
    }
    /* 専門外来: 同じレイアウト（画像右上・テキスト左下） */
    .top-medical__list--specialized .top-medical__link {
        position: relative;
        flex-direction: row;
        align-items: flex-end;
        justify-content: flex-start;
        text-align: left;
        min-height: 110px;
        padding: var(--sp-sm);
        gap: 0;
    }
    .top-medical__list--specialized .top-medical__img {
        position: absolute;
        top: var(--sp-xs);
        right: var(--sp-xs);
        width: 40px;
        height: 40px;
        align-self: auto;
    }
    .top-medical__list--specialized .top-medical__name {
        font-size: 1rem;
        padding-top: 2rem;
    }
    .top-medical__group:last-child {
        padding-bottom: 0;
    }
    .top-medical__aesthetic {
        margin-bottom: 0;
    }
    /* 共通フォールバック */
    .top-medical__link  { min-height: 72px; padding: var(--sp-sm) var(--sp-md); }
    .top-medical__img   { width: 52px; height: 52px; }
    .top-medical__name  { font-size: var(--fs-sm); }
    /* 美容タグ 1列・全幅 */
    .top-medical__aesthetic-row { padding: var(--sp-md); }
    .top-medical__aesthetic-divider { display: none; }
    .top-medical__aesthetic-label { width: 100%; flex-direction: row; justify-content: flex-start; padding-bottom: var(--sp-xs); margin-bottom: var(--sp-xs); }
    .top-medical__aesthetic-tags { grid-template-columns: 1fr; width: 100%; }
    .top-medical__tag { font-size: var(--fs-sm); padding: .65rem var(--sp-md); width: 100%; justify-content: flex-start; border: 1px solid #EBD5CA; }
    /* 症状・治療カードリスト 1列 */
    .medical-card-list,
    .medical-symptom-list { grid-template-columns: 1fr; }
}

/* ================================================================
   17. TOP 特徴（Why Choose Us）
================================================================ */
.top-features {
    background: 
        linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%),
        url("../images/gradient-orange-bg.png") center top / 100% 18% no-repeat;
    background-color: #ffffff;
    padding-top: var(--sp-2xl);
    margin-top: -1px;
    position: relative;
    z-index: 1;
}
.container--white-bg {
    background: #ffffff;
    position: relative;
    overflow: visible;
}
.container--white-bg::after {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 100%;
    width: 50vw;
    background: #ffffff;
    pointer-events: none;
}
/* PC のみ：特徴セクション（.top-features）の白背景を画面幅いっぱいに広げる。
   右側は既存の ::after が担当しているため、左側を ::before で対称に伸ばす。
   タブレット（≤900px）・SP には適用しない。 */
@media (min-width: 901px) {
    .top-features .container--white-bg::before {
        content: '';
        position: absolute;
        top: 0;
        bottom: 0;
        right: 100%;
        width: 50vw;
        background: #ffffff;
        pointer-events: none;
    }
}
.section--no-padding-top {
    padding-top: 0;
}
.top-features__bg {
    background: #f5f3f2;
    /*padding: var(--sp-3xl) 0 var(--sp-lg);*/
    margin-top: -1px;
    padding-bottom: 2rem;
}
.top-features__img-bg {
    background: var(--color-white) url('../images/sp-default-sliding-image.png') bottom right / 100% 100% no-repeat;
    padding: var(--sp-2xl) 0 0;
    padding-bottom: 10rem;
}
@media (max-width: 768px) {
    .top-features__img-bg {
        padding-bottom: unset;
    }
}
.top-facility {
    position: relative;
    isolation: isolate;
    background: #f5f3f2;
    padding-top: var(--sp-xl);
    padding-bottom: var(--sp-2xl);
    clip-path: inset(-10rem 0 0 0);
}
.top-facility .guide-access-facility {
    margin-top: 0;
}
.top-features .section-header__en {
    color: var(--color-accent);
}
.top-features .container {
    padding-bottom: 0;
}
/* PC のみ：上部に余白を追加（タブレット・SP は従来どおり） */
@media (min-width: 901px) {
    .top-features .container {
        padding-top: 3rem;
    }
}
.section-header--left { text-align: left; }

/* feature row */
.top-feature {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(var(--sp-2xl), 7vw, 8.5rem);
    align-items: center;
    margin-bottom: 0;
    /* padding-block: var(--sp-3xl); */
}
.top-features__bg .top-feature + .top-feature {
    margin-top: var(--sp-3xl);
}
.top-feature:last-of-type { border-bottom: none; }
.top-feature--reverse .top-feature__img-wrap { order: 2; }
.top-feature--reverse .top-feature__body    { order: 1; }
.top-feature__body {
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding-left: clamp(0rem, 1.5vw, 1.75rem);
}
.top-feature--reverse .top-feature__body {
    padding-left: 0;
    padding-right: clamp(0rem, 1.5vw, 1.75rem);
}

/* image wrap — solid color bg peeks out behind */
.top-feature__img-wrap {
    position: relative;
    padding-bottom: 1.5rem;
    padding-left: 1.5rem;
}
.top-feature--reverse .top-feature__img-wrap {
    padding-right: 0;
    padding-left: 1.5rem;
}
.top-feature__img-bg {
    position: absolute;
    width: 92%;
    height: 92%;
    border-radius: 4px;
    z-index: 0;
}
.top-feature__img-bg--accent  { background: var(--color-accent); }
.top-feature__img-bg--primary { background: var(--color-primary); }

/* 01: bottom-left (default) */
.top-feature__img-bg--01 { bottom: 10px; right: 39px; }
/* 02: bottom-right */
.top-feature__img-bg--02 { bottom: 10px; left: 65px; }
/* 03: top-left */
.top-feature__img-bg--03 { top: 10px; right: 65px; }
/* 04: bottom-right (same as 02) */
.top-feature__img-bg--04 { bottom: 10px; left: 65px; }

.top-feature__img {
    display: block;
    width: 100%;
    aspect-ratio: 4/3;
    object-fit: cover;
    border-radius: var(--radius-md);
    position: relative;
    z-index: 1;
}

/* double image layout for 03 */
.top-feature__img-wrap--double {
    position: relative;
    padding-top: 3rem;   /* space for bg to show above images */
}
.top-feature__img-wrap--double .top-feature__img-inner {
    transform: translateY(2rem);
}
/* 03c — large bg image, full wrap area */
.top-feature__img-bg-img {
    position: absolute;
    top: 0px;
    left: 0px;
    width: 90%;
    height: 90%;
    object-fit: cover;
    border-radius: var(--radius-md);
    z-index: 0;
    display: block;
}
/* two foreground images sit side by side in lower portion */
.top-feature__img-wrap--double .top-feature__img-inner {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-md);
    align-items: end;
}
.top-feature__img--03a,
.top-feature__img--03b {
    width: 100%;
    aspect-ratio: 4/3;
    object-fit: cover;
    border-radius: var(--radius-md);
    display: block;
    padding: .5rem;
    box-sizing: border-box;
}

/* number */
.top-feature__num {
    display: flex;
    align-items: baseline;
    gap: .5rem;
    margin-bottom: var(--sp-sm);
}
.top-feature__num-digit {
    font-size: 2rem;
    font-weight: 400;
    color: var(--color-accent);
    line-height: 1;
    font-family: 'Montserrat', sans-serif;
}
.top-feature--border-primary .top-feature__num-digit {
    color: var(--color-primary);
}
.top-feature__num-dots {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    font-size: .25rem;
    color: var(--color-accent);
    margin-bottom: .2rem;
    line-height: 1;
}
.top-feature__num-dots span {
    display: inline-block;
    line-height: 1;
    opacity: 1;
    color: var(--color-accent);
}
.top-feature__num-dots span:nth-child(1) { color: var(--color-primary); }
.top-feature__num-dot--green {
    color: var(--color-primary);
    opacity: 1 !important;
}

/* body text */
.top-feature__catch {
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
    margin-bottom: var(--sp-md);
    line-height: 1.6;
    padding-bottom: var(--sp-md);
    border-bottom: 2px solid var(--color-border);
}
.top-feature--border-accent  .top-feature__catch { border-bottom-color: #fdf7f5; }
.top-feature--border-primary .top-feature__catch { border-bottom-color: #edf6f1; }
.top-feature__text {
    font-size: var(--fs-sm);
    line-height: 1.9;
    color: var(--color-text);
    margin-bottom: var(--sp-md);
}
.top-feature__text:last-of-type { margin-bottom: var(--sp-lg); }

.dept-reason__body {
    padding-top: 3rem;
}
.dept-reason__body.dept-reason__body--padding-top {
    padding-top: 5rem;
}
.dept-reason__text {
    font-family: inherit;
    font-size: var(--fs-base);
    font-weight: 400;
    line-height: 2;
}

/* CTA button */
.top-feature__btn {
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    max-width: 320px;
    margin-top: auto;
    padding: .85rem 1.25rem;
    background: var(--color-primary);
    color: var(--color-white);
    font-size: var(--fs-sm);
    font-weight: 700;
    border-radius: var(--radius-sm);
    border: 2px solid var(--color-primary);
    text-decoration: none;
    transition: background var(--tr), color var(--tr), border-color var(--tr);
}
.top-feature__btn:hover {
    background: var(--color-white);
    color: var(--color-primary);
    opacity: 1;
}
.top-feature__btn:hover .top-feature__btn-arrow {
    background: var(--color-primary);
    color: var(--color-white);
}
.top-feature__btn-arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.6rem;
    height: 1.6rem;
    background: var(--color-white);
    color: var(--color-primary);
    border-radius: 9999px;
    font-weight: 900;
    flex-shrink: 0;
    transition: background var(--tr), color var(--tr), transform var(--tr);
}
.top-feature__btn:hover .top-feature__btn-arrow {
    transform: translateX(4px);
}
.top-feature--orange .top-feature__btn {
    background: var(--color-accent);
    border-color: var(--color-accent);
}
.top-feature--orange .top-feature__btn:hover {
    background: var(--color-white);
    color: var(--color-accent);
}
.top-feature--orange .top-feature__btn:hover .top-feature__btn-arrow {
    background: var(--color-accent);
    color: var(--color-white);
    background-image: url('../images/arrows/white-arrow-md.png');
}
.top-feature--orange .top-feature__btn-arrow {
    color: var(--color-accent);
    background-image: url('../images/arrows/orange-arrow-md.png');
}

/* 施設基準ボックス */
.top-features__facility {
    margin-top: var(--sp-2xl);
    padding: var(--sp-lg) var(--sp-xl);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-white);
    /*
    width: 80%;
    margin-left: auto;
    margin-right: auto;
    */
    margin-bottom: var(--sp-lg);
}
.top-features__facility-title {
    font-size: var(--fs-base);
    font-weight: 700;
    text-align: center;
    margin-bottom: var(--sp-md);
    color: var(--color-text);
}
.top-features__facility-scroll {
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    max-height: calc(2 * 5.5rem + var(--sp-md) * 2);
    scroll-snap-type: y proximity;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    gap: 0;
    margin-right: calc(-1 * var(--sp-lg));
    padding-right: var(--sp-xl);
    scrollbar-gutter: stable;
}
.top-features__facility-scroll::-webkit-scrollbar { width: 4px; }
.top-features__facility-scroll::-webkit-scrollbar-track { background: var(--color-bg-light); border-radius: 9999px; }
.top-features__facility-scroll::-webkit-scrollbar-thumb { background: var(--color-border); border-radius: 9999px; }
.top-features__facility-item {
    flex-shrink: 0;
    scroll-snap-align: start;
    padding-bottom: var(--sp-md);
    padding-top: var(--sp-md);
    border-bottom: 1.5px solid var(--color-border);
}
.top-features__facility-item:first-child { padding-top: 0; }
.top-features__facility-item:last-child { border-bottom: none; }
.top-features__facility-name {
    font-size: var(--fs-sm);
    font-weight: 700;
    color: var(--color-text);
    margin-bottom: .4rem;
    display: flex;
    align-items: center;
    gap: .4rem;
}
.top-features__facility-name::before {
    content: '';
    display: inline-block;
    width: .4rem;
    height: .4rem;
    background: var(--color-primary);
    border-radius: 9999px;
    flex-shrink: 0;
}
.top-features__facility-text {
    font-size: var(--fs-sm);
    line-height: 1.7;
    color: var(--color-text-sub);
}
.top-features__facility--compact {
    width: 100%;
    margin: 0;
    padding: var(--sp-md);
}
.guide-access-facility {
    width: min(100% - clamp(2rem, 6vw, 6rem), 1080px);
    margin: var(--sp-xl) auto 0;
    padding: clamp(var(--sp-md), 3vw, var(--sp-xl));
}
.top-features__facility--compact .guide-transport-block__title {
    margin-bottom: var(--sp-sm);
}
.top-features__facility--compact .top-features__facility-scroll {
    max-height: 9.5rem;
    margin-right: calc(-1 * var(--sp-xs));
    padding-right: var(--sp-sm);
}
.top-features__facility--compact .top-features__facility-item {
    padding-top: var(--sp-sm);
    padding-bottom: var(--sp-sm);
}
.top-features__facility--compact .top-features__facility-name {
    margin-bottom: .25rem;
}
.top-features__facility--compact .top-features__facility-text {
    line-height: 1.55;
}
.guide-access-facility .top-features__facility-scroll {
    max-height: none;
    overflow-y: visible;
    scroll-snap-type: none;
    margin-right: 0;
    padding-right: 0;
}
.guide-access-facility .top-features__facility-text p + p {
    margin-top: .45rem;
}
.guide-access-facility .top-features__facility-text ul {
    display: flex;
    flex-direction: column;
    gap: .35rem;
    margin: .5rem 0 .6rem;
    padding: 0;
}
.guide-access-facility .top-features__facility-text li {
    position: relative;
    padding-left: 0;
    line-height: 1.65;
}
.guide-access-facility .top-features__facility-text li::before {
    content: none;
}
.guide-access-facility .top-features__facility-text strong {
    font-weight: 700;
    color: var(--color-text);
}

@media (max-width: 768px) {
    .top-feature {
        grid-template-columns: 1fr;
        gap: var(--sp-lg);
        padding-block: var(--sp-sm);
    }
    /* 画像を常に上、テキストを常に下 */
    .top-feature__img-wrap             { order: 1; padding-bottom: 1rem; padding-left: 1rem; }
    .top-feature--reverse .top-feature__img-wrap { order: 1; padding-bottom: 1rem; padding-left: 1rem; }
    .top-feature__body                 { order: 2; height: auto; padding-left: 0; padding-right: 0; }
    .top-feature--reverse .top-feature__body    { order: 2; height: auto; padding-left: 0; padding-right: 0; }
    /* 背景カラーブロック — SP でも表示、サイズを縮小 */
    .top-feature__img-bg               { display: block; width: 88%; height: 88%; top: 26px; left: 3px }
    /* ダブル画像レイアウト（03）— 背景画像を復元 */
    .top-feature__img-bg-img {
        display: block; 
        width: 92%; 
        height: 85%; 
        top: 15px; 
    }
    .top-feature__img-wrap--double     { padding-top: 2rem; }
    .top-feature__img-wrap--double .top-feature__img-inner { grid-template-columns: 1fr 1fr; gap: 1px; }
    .top-feature__img-wrap--double .top-feature__img-inner img {
        width: 150px;
        height: 120px;
        object-fit: cover;
        border-radius: 4px;
    }
    /* CTA ボタン全幅 */
    .top-feature__btn { max-width: 100%; margin-top: var(--sp-md); }
    /* 施設基準ボックス — SP で全幅 */
    .top-features__facility {
        width: 100%;
        padding: var(--sp-md);
    }
    .top-feature__img-bg--04, .top-feature__img-bg--02 {left: 50px; top: 26px}
    .top-feature__catch {
        font-size: var(--fs-lg);
        align-self: center;
        text-align: center;
        padding-left: .5rem;
    }
    .top-feature__num {
        align-items: center;
        flex-direction: column;
    }
    .top-features__bg {
        padding: var(--sp-lg) 0 var(--sp-lg);
    }
    .top-features {
        padding-top: 0;
        margin-top: -3rem;
    }
    .top-features__img-bg {
        background-image: 
            url('../images/sp-default-sliding-image.png'),
            linear-gradient(180deg, #ffffff 0%, #ffffff 120px, #f5f3f2 250px);
        background-position: top right, top left;
        background-size: 100% 250px, 100% 100%;
        background-repeat: no-repeat, no-repeat;
        background-color: #f5f3f2;
        padding: var(--sp-lg) 0 0;
    }
}

/* ================================================================
   18. TOP お問い合わせ
================================================================ */
.top-contact {
    position: relative;
    isolation: isolate;
    background: var(--color-bg-light);
    margin-top: -1px;
}
.top-contact::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 34px;
    background: var(--color-white) url('../images/top-arc-01.png') center bottom / 100% 34px no-repeat;
    transform: translateY(-100%);
    z-index: 1;
    pointer-events: none;
}
.top-facility::before {
    content: '';
    position: absolute;
    z-index: -1;
    left: 50%;
    top: 0;
    width: 140%;
    height: clamp(5rem, 10vw, 8rem);
    background: var(--color-bg-light);
    border-radius: 50% 50% 0 0 / 100% 100% 0 0;
    transform: translate(-50%, -45%);
}

@media (max-width: 768px) {
    .top-contact::before {
        height: 80px;
        background-size: 100% 2rem;
    }
}

.top-contact__banners--top { margin-bottom: var(--sp-2xl); }

/* 2-col grid: phone left, right panels right */
.top-contact__grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-lg);
    padding-bottom: var(--sp-xl);
    padding-top: 1.4rem;
}

/* Phone card */
.top-contact__phone-card {
    background: var(--color-white);
    border-radius: var(--radius-md);
    padding: 2rem 3rem 2rem 3rem;
    position: relative;
}
.top-contact__phone-icon-wrap {
    position: absolute;
    top: -23px;
    left: 19px;
    width: 5.625rem;
    height: 5.625rem;
    background: var(--color-accent);
    border-radius: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}
.top-contact__phone-icon { width: auto; height: 3.125rem; object-fit: contain; }
.top-contact__phone-label {
    font-size: var(--fs-lg);
    font-weight: 700;
    color: var(--color-accent);
    margin-bottom: .15rem;
    text-align: center;
    letter-spacing: .1em;
}
@media (max-width: 1180px) and (min-width: 769px) {
    .top-contact__phone-label {
        padding-left: 4rem;
    }
}
.top-contact__phone-dots {
    display: flex;
    gap: .45rem;
    color: var(--color-accent);
    font-size: .25rem;
    justify-content: center;
    padding: .5rem 0 1rem 0;
}
.top-contact__phone-dots span {
    display: inline-block;
    line-height: 1;
    opacity: 1;
    color: var(--color-accent);
}
.top-contact__phone-dots span:nth-child(1) {
    color: var(--color-primary);
}

.top-contact__phone-number {
    font-family: 'Montserrat', sans-serif;
    font-size: 3.438rem;
    font-weight: 700;
    color: var(--color-accent);
    letter-spacing: 0.1em;
    margin-bottom: 1rem;
    line-height: 1;
    text-align: center;
}
.top-contact__phone-hours {
    font-size: 0.938rem;
    color: var(--color-text-sub);
    line-height: 23px;
    text-align: center;
    font-family: Zen Kaku Gothic New, sans-serif;
    margin-bottom: 1.1rem;
}
.top-contact__phone-note {
    font-size: 0.938rem;
    color: var(--color-text-sub);
    line-height: 23px;
    text-align: justify;
    font-family: Zen Kaku Gothic New, sans-serif;
}

/* Right panels */
.top-contact__right {
    display: flex;
    flex-direction: column;
    gap: var(--sp-md);
}

/* Online booking card */
.top-contact__online-card {
    display: flex;
    align-items: center;
    gap: var(--sp-md);
    background: var(--color-primary);
    border-radius: var(--radius-md);
    padding: 1.5rem 2rem 1.5rem 4rem;
    text-decoration: none;
    flex: 1;
    position: relative;
    justify-content: flex-end;
}
.top-contact__online-card:hover,
.top-contact__online-card:focus-visible {
    background: #3b7755;
    opacity: .9;
}
.top-contact__online-icon-wrap {
    position: absolute;
    top: -23px;
    left: 19px;
    width: 5.625rem;
    height: 5.625rem;
    background: #ffffff;
    border-radius: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}
.top-contact__online-icon { width: auto; height: 3.125rem; object-fit: contain; }
.top-contact__online-body {
    display: flex;
    flex-direction: column;
    padding-left: clamp(2rem, 5vw, 4rem);
}
.top-contact__online-title {
    font-size: var(--fs-lg);
    font-weight: 700;
    color: var(--color-white);
    margin-bottom: .8rem;
    display: flex;
    align-items: center;
    gap: .4rem;
    letter-spacing: 0.1em;
}
.top-contact__online-copy-icon {
    display: inline-flex;
    flex: 0 0 auto;
    width: 1rem;
    height: 1rem;
}
.top-contact__online-copy-icon-img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
}
.top-contact__online-note {
    font-size: 0.938rem;
    color: rgba(255,255,255,.9);
    line-height: 23px;
    font-weight: 700
}
.top-contact__online-no {
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* AI card */
.top-contact__ai-card {
    background: #9B8B6E;
    border-radius: var(--radius-md);
    padding: 2rem 2.5rem;
    flex: 1;
}
.top-contact__ai-title {
    display: flex;
    align-items: center;
    gap: .35rem;
    font-size: var(--fs-lg);
    font-weight: 700;
    color: var(--color-white);
    margin-bottom: .8rem;
    letter-spacing: 0.1em;
}
.top-contact__ai-title .top-mv__sidebar-ai-icon {
    background: linear-gradient(135deg, #C9A227 0%, #E8C84A 45%, #A87C1A 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    font-size: .85rem;
    flex-shrink: 0;
}
.top-contact__ai-note {
    font-size: 0.938rem;
    color: rgba(255,255,255,.9);
    line-height: 23px;
    font-weight: 500;
}

/* Banner cards row */
.top-contact__banners {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-lg);
}
.top-contact__banner {
    position: relative;
    display: block;
    text-decoration: none;
    border: 1.5px solid #44a06bbf;
    border-radius: var(--radius-md);
    background: var(--color-white);
    padding: 1.2rem 1.3rem;
    transition: border-color var(--tr), box-shadow var(--tr), transform var(--tr);
}
.top-contact__banner:hover {
    border-color: var(--color-primary-dark);
    opacity: 1;
}
.top-contact__banner-img-wrap {
    position: relative;
    aspect-ratio: 16/6;
    overflow: hidden;
    border-radius: calc(var(--radius-md) - 2px);
}
.top-contact__banner-img-wrap::before {
    content: '';
    position: absolute;
    left: 0;
    bottom: 0;
    width: 70%;
    height: 100%;
    background:
        radial-gradient(circle at 0% 100%, rgba(2, 36, 17, 0.72) 0%, rgba(20, 56, 36, 0.42) 24%, rgba(46, 122, 80, 0) 68%),
        linear-gradient(135deg, rgba(16, 41, 27, 0.48) 0%, rgba(46, 122, 80, 0) 62%);
    opacity: 0;
    /* transform: translate(-6%, 8%) scale(.92); */
    transform-origin: left bottom;
    transition: opacity .2s ease, transform .2s ease;
    pointer-events: none;
    z-index: 1;
}
.top-contact__banner-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .2s cubic-bezier(.22, 1, .36, 1), filter .2s cubic-bezier(.22, 1, .36, 1);
    will-change: transform;
}
.top-contact__banner:hover .top-contact__banner-img {
    transform: scale(1.08);
    filter: saturate(1.03) contrast(1.02);
}
.top-contact__banner:hover .top-contact__banner-img-wrap::before {
    opacity: 1;
    transform: translate(0, 0) scale(1);
}
.top-contact__banner-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,.5) 0%, transparent 55%);
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: var(--sp-lg) var(--sp-md);
    z-index: 2;
}
.top-contact__banner-en {
    font-size: var(--fs-xs);
    color: rgba(255,255,255,.8);
    font-weight: 900;
    font-family: Noto Sans JP, sans-serif;
    letter-spacing: 0.1em;
}
.top-contact__banner-title {
    font-size: var(--fs-xl);
    font-weight: 700;
    color: var(--color-white);
    font-family: Noto Sans JP, sans-serif;
    letter-spacing: 0.1em;
    filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.25));
}
.top-contact__banner-foot {
    display: flex;
    align-items: flex-start;
    justify-content: left;
    position: relative;
    gap: var(--sp-md);
    padding-top: .5rem;
    padding-left: 3rem;
}
.top-contact__banner-desc {
    font-size: 15px;
    color: var(--color-text-sub);
    line-height: 1.5;
    font-weight: 500;
}
@media (max-width: 1180px) and (min-width: 769px) {
    /* iPadの2カラム表示時、右のアイコンに文字が重ならないよう手前で改行させる */
    .top-contact__banner-foot {
        padding-right: 3.5rem;
    }
}
.top-contact__banner-arrow {
    width: 50px;
    height: 50px;
    border-radius: 100%;
    background: var(--color-primary);
    position: absolute;
    top: 13px;
    right: -9px;
    transform: translateY(-50%);
    z-index: 3;
    transition: background var(--tr);
}
.top-contact__banner-arrow::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 18px;
    height: 16px;
    background: url('../images/arrows/banner-arrow.png');
    transform: translate(-50%, -50%);
    transition: transform var(--tr), opacity var(--tr);
}
.top-contact__banner-arrow::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 18px;
    height: 16px;
    background: url('../images/arrows/banner-arrow.png');
    transform: translate(-150%, -50%);
    opacity: 0;
    transition: transform var(--tr), opacity var(--tr);
}
.top-contact__banner:hover .top-contact__banner-arrow {
    background: var(--color-primary);
}
.top-contact__banner:hover .top-contact__banner-arrow::before {
    transform: translate(-50%, -50%);
    opacity: 1;
}
.top-contact__banner:hover .top-contact__banner-arrow::after {
    transform: translate(50%, -50%);
    opacity: 0;
}

@media (max-width: 768px) {
    .top-contact__grid { grid-template-columns: 1fr; }
    /* Phone card responsive */
    .top-contact__phone-card {
        padding: var(--sp-md);
        padding-top: var(--sp-md);
        position: relative;
    }
    .top-contact__phone-icon-wrap {
        position: absolute;
        top: var(--sp-md);
        left: var(--sp-md);
        width: 2.5rem;
        height: 2.5rem;
    }
    .top-contact__phone-icon {
        height: 1.8rem;
    }
    .top-contact__phone-label {
        font-size: var(--fs-sm);
        text-align: left;
        margin-bottom: 0;
        padding-left: 3rem;
    }
    .top-contact__phone-body {
        width: 100%;
        text-align: center;
    }
    .top-contact__phone-number {
        font-size: 1.75rem;
        letter-spacing: 0.05em;
    }
    .top-contact__phone-hours {
        font-size: var(--fs-xs);
        line-height: 1.5;
    }
    .top-contact__phone-note {
        font-size: var(--fs-xs);
        line-height: 1.5;
    }
    .top-contact__phone-dots {
        padding: .3rem 0 .5rem 0;
    }
    .top-contact__banners { grid-template-columns: 1fr; gap: var(--sp-md); }
    .top-contact__banner-img-wrap {
        aspect-ratio: 16/7;
    }
    .top-contact__banner-overlay {
        padding: var(--sp-sm);
    }
    .top-contact__banner-en {
        font-size: 1rem;
    }
    .top-contact__banner-title {
        font-size: var(--fs-base);
        letter-spacing: 0.05em;
    }
    .top-contact__banner-foot {
        padding: var(--sp-sm);
        padding-left: 0;
        gap: var(--sp-sm);
    }
    .top-contact__banner-desc {
        font-size: var(--fs-xs);
        line-height: 1.4;
    }
    .top-contact__banner-arrow {
        width: 28px;
        height: 28px;
        flex-shrink: 0;
        top: 30px;
    }
    .top-contact__banner-arrow::after,
    .top-contact__banner-arrow::before {
        width: 13px;
        height: 12px;
        background-size: contain;
        background-repeat: no-repeat;
    }
}

/* ================================================================
   19. TOP アクセス
================================================================ */
.top-access { background: var(--color-white); }
.top-access__inner {
    display: grid;
    grid-template-columns: 1fr 420px;
    gap: var(--sp-2xl);
    align-items: start;
}
.top-access__map {
    border-radius: var(--radius-md);
    overflow: hidden;
    aspect-ratio: 4/3;
}
.top-access__map iframe { width: 100%; height: 100%; display: block; border: none; }
.top-access__info { }
.top-access__address { font-size: var(--fs-sm); line-height: 1.9; margin-bottom: var(--sp-md); }
.top-access__transit { font-size: var(--fs-sm); }
.top-access__transit dl { display: grid; grid-template-columns: auto 1fr; gap: .3rem var(--sp-sm); }
.top-access__transit dt { font-weight: 700; color: var(--color-primary); white-space: nowrap; }
@media (max-width: 900px) { .top-access__inner { grid-template-columns: 1fr; } }

/* ================================================================
   19. TOP CTAバー（電話・予約）
================================================================ */
.top-cta-bar {
    background: var(--color-primary);
    color: var(--color-white);
    padding-block: var(--sp-xl);
    text-align: center;
}
.top-cta-bar__title {
    font-size: var(--fs-lg);
    font-weight: 700;
    margin-bottom: var(--sp-sm);
    opacity: .9;
}
.top-cta-bar__tel {
    font-size: clamp(2rem, 4vw, 3rem);
    font-weight: 900;
    letter-spacing: .04em;
    margin-bottom: var(--sp-sm);
}
.top-cta-bar__note { font-size: var(--fs-sm); opacity: .8; margin-bottom: var(--sp-lg); }
.top-cta-bar__btns {
    display: flex;
    justify-content: center;
    gap: var(--sp-sm);
    flex-wrap: wrap;
}

/* ================================================================
   20. TOP バナーグループ（在宅・美容）
================================================================ */
.top-banners { background: var(--color-bg-light); padding-block: var(--sp-xl); }
.top-banners__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: var(--sp-md);
}
.top-banner {
    position: relative;
    border-radius: var(--radius-md);
    overflow: hidden;
    display: block;
    min-height: 220px;
    background: var(--color-primary-dark);
    transition: box-shadow var(--tr);
}
.top-banner:hover { box-shadow: var(--shadow-lg); opacity: 1; }
.top-banner__bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: .45;
    transition: opacity var(--tr);
}
.top-banner:hover .top-banner__bg { opacity: .55; }
.top-banner__body {
    position: relative;
    z-index: 1;
    padding: var(--sp-lg);
    color: var(--color-white);
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
}
.top-banner__label {
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    opacity: .8;
    margin-bottom: .3rem;
}
.top-banner__title { font-size: var(--fs-xl); font-weight: 700; margin-bottom: .5rem; line-height: 1.35; }
.top-banner__desc { font-size: var(--fs-sm); opacity: .85; margin-bottom: var(--sp-sm); }
.top-banner__link-label {
    display: inline-block;
    padding: .35rem 1rem;
    border: 1.5px solid rgba(255,255,255,.8);
    border-radius: var(--radius-full);
    font-size: var(--fs-sm);
    color: var(--color-white);
    align-self: flex-start;
}

/* ================================================================
   21. 診療科目詳細（医療ページ共通）
================================================================ */
.medical-detail-intro {
    background: var(--color-bg-green);
    border-left: 4px solid var(--color-primary);
    padding: var(--sp-lg);
    border-radius: 0 var(--radius-md) var(--radius-md) 0;
    margin-bottom: var(--sp-xl);
}
.medical-detail-intro__catch {
    font-size: var(--fs-md);
    font-weight: 500;
    color: var(--color-primary);
    letter-spacing: 0.25rem;
    margin-bottom: .5rem;
}
@media (max-width: 768px) {
    .medical-detail-intro__catch {
        font-size: var(--fs-lg);
        text-align: center;
        padding-left: .5rem;
    }
}
.medical-intro__body { font-size: var(--fs-base); line-height: 1.85; }

.medical-section { margin-bottom: var(--sp-2xl); }
.medical-section__title {
    font-size: var(--fs-xl);
    font-weight: 700;
    color: var(--color-primary);
    padding-bottom: .5rem;
    border-bottom: 2px solid var(--color-primary-light);
    margin-bottom: var(--sp-lg);
}

/* 症状リスト */
.medical-symptom-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: .5rem;
}
.medical-symptom-list li {
    padding: .6rem var(--sp-sm);
    background: var(--color-bg-light);
    border-radius: var(--radius-sm);
    font-size: var(--fs-sm);
    border-left: 3px solid var(--color-primary);
    line-height: 1.5;
}

/* 診療フロー */
.medical-flow { display: flex; flex-direction: column; gap: var(--sp-sm); }
.medical-flow__item {
    display: flex;
    align-items: flex-start;
    gap: var(--sp-md);
    padding: var(--sp-md);
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
}
.medical-flow__num {
    font-size: var(--fs-2xl);
    font-weight: 900;
    color: var(--color-primary-light);
    line-height: 1;
    flex-shrink: 0;
    width: 48px;
    text-align: center;
    padding-top: .1rem;
}
.medical-flow__body h3 {
    font-size: var(--fs-base);
    font-weight: 700;
    margin-bottom: .3rem;
    color: var(--color-primary);
}
.medical-flow__body p { font-size: var(--fs-sm); line-height: 1.75; }

/* 特徴リスト */
.medical-features { display: flex; flex-direction: column; gap: var(--sp-md); }
.medical-feature {
    padding: var(--sp-md) var(--sp-lg);
    background: var(--color-white);
    border: 1px solid var(--color-primary-light);
    border-radius: var(--radius-md);
}
.medical-feature__title {
    font-size: var(--fs-base);
    font-weight: 700;
    color: var(--color-primary);
    margin-bottom: .4rem;
    display: flex;
    align-items: center;
    gap: .4rem;
}
.medical-feature__title::before {
    content: '●';
    color: var(--color-lime);
    font-size: .7rem;
}

/* FAQ */
.medical-faq { display: flex; flex-direction: column; gap: var(--sp-sm); }
.medical-faq dt {
    font-weight: 700;
    padding: .75rem var(--sp-md);
    background: var(--color-bg-green);
    border-radius: var(--radius-sm) var(--radius-sm) 0 0;
    border-left: 4px solid var(--color-primary);
    display: flex;
    align-items: baseline;
    gap: .5rem;
}
.medical-faq dt::before { content: 'Q'; font-weight: 900; color: var(--color-primary); flex-shrink: 0; }
.medical-faq dd {
    padding: .75rem var(--sp-md);
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: 0 0 var(--radius-sm) var(--radius-sm);
    font-size: var(--fs-sm);
    line-height: 1.8;
    margin-bottom: var(--sp-sm);
    display: flex;
    gap: .5rem;
}
.medical-faq dd::before { content: 'A'; font-weight: 900; color: var(--color-accent); flex-shrink: 0; }

/* 料金表 */
.price-table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--fs-sm);
    margin-bottom: var(--sp-md);
}
.price-table th,
.price-table td {
    padding: .65rem var(--sp-sm);
    border: 1px solid var(--color-border);
    text-align: left;
}
.price-table th {
    background: var(--color-primary);
    color: var(--color-white);
    font-weight: 700;
}
.price-table tr:nth-child(even) td { background: var(--color-bg-light); }
.price-table td:last-child { text-align: right; font-weight: 700; color: var(--color-primary); }

/* ダウンロードリンク */
.medical-download-link {
    margin-top: var(--sp-xl);
    text-align: center;
}

/* ================================================================
   22. クリニックページ
================================================================ */
.clinic-section { margin-bottom: var(--sp-3xl); }
.clinic-section-title {
    font-size: var(--fs-xl);
    font-weight: 700;
    color: var(--color-primary);
    padding-bottom: .5rem;
    border-bottom: 2px solid var(--color-primary-light);
    margin-bottom: var(--sp-lg);
}

.clinic-mvv-images {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--sp-sm);
    margin-bottom: var(--sp-xl);
}
.clinic-mvv-images img {
    border-radius: var(--radius-md);
    aspect-ratio: 4/3;
    object-fit: cover;
    width: 100%;
}

.clinic-history {
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    padding: var(--sp-xl);
    margin-bottom: var(--sp-xl);
}
.clinic-history__accent {
    font-size: 4rem;
    font-weight: 900;
    color: var(--color-primary);
    line-height: 1;
}

/* ── clinic-greeting: 院長ご挨拶 ── */
.clinic-greeting {
    background: var(--color-bg-green);
    border-radius: var(--radius-md);
    padding: var(--sp-2xl);
    margin-bottom: var(--sp-2xl);
}
.clinic-greeting > .section-header {
    margin-bottom: var(--sp-lg);
}
.clinic-greeting__inner {
    display: grid;
    grid-template-columns: minmax(320px, 0.95fr) minmax(0, 1.55fr);
    grid-template-areas:
        "photo message"
        "photo name"
        "card card";
    gap: clamp(var(--sp-lg), 2.5vw, var(--sp-2xl)) clamp(var(--sp-lg), 3vw, var(--sp-2xl));
    align-items: start;
}
.clinic-greeting__photo-col {
    display: contents;
}
.clinic-greeting__photo {
    grid-area: photo;
    width: 100%;
    aspect-ratio: 1 / 0.83;
    border: 2px solid #8a8a8a;
    border-radius: 0;
    overflow: hidden;
    margin-bottom: 0;
    background: var(--color-white);
}
.clinic-greeting__photo img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
}
.clinic-greeting__name {
    grid-area: name;
    display: flex;
    align-items: baseline;
    justify-self: end;
    align-self: start;
    gap: .6rem;
    font-size: 24px;/*clamp(1.6rem, 2vw, 2.1rem);*/
    font-weight: 700;
    color: var(--color-text);
    letter-spacing: .04em;
    margin-top: 0;
    padding-right: 0;
}
.clinic-greeting__name-sep { color: var(--color-primary); font-weight: 400; }
.clinic-greeting__name-en  { font-size: var(--fs-base); font-weight: 400; color: var(--color-text-sub); }
.clinic-greeting__content {
    display: contents;
}
.clinic-greeting__message {
    grid-area: message;
}

.clinic-greeting__message p {
    font-size: var(--fs-base);
    line-height: 1.9;
    color: var(--color-text);
    /* margin-bottom: var(--sp-sm);*/
}
.clinic-greeting__message p:last-child { margin-bottom: 0; }

.clinic-greeting__card {
    grid-area: card;
    margin-top: 0;
    border: 1px solid var(--color-bg-green-dark);
    border-radius: var(--radius-md);
    padding: clamp(var(--sp-lg), 2vw, 2.5rem) clamp(var(--sp-lg), 2.5vw, 2.75rem);
    background: #fff;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(var(--sp-lg), 2.5vw, 2rem);
}
.clinic-greeting__card-block {
    padding: 0;
    border-top: none;
}
.clinic-greeting__card-block:first-child { border-top: none; padding-top: 0; }
.clinic-greeting__card-title {
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
    margin-bottom: var(--sp-md);
    padding-bottom: .85rem;
    border-bottom: 2px solid var(--color-border);
}
.clinic-greeting__list {
    list-style: none;
    padding: 0;
    margin: 0;
}
.clinic-greeting__list li {
    font-size: var(--fs-sm);
    color: var(--color-text);
    line-height: 1.8;
    padding-left: 1.1em;
    position: relative;
    margin-bottom: .2rem;
}
.clinic-greeting__list li::before {
    content: '•';
    position: absolute;
    left: 0;
    color: var(--color-primary);
}
.clinic-greeting__card-cols {
    display: contents;
}
.clinic-greeting__card-cols .clinic-greeting__card-block {
    border-top: none;
}

@media (max-width: 900px) {
    .clinic-greeting__inner {
        grid-template-columns: 1fr;
        grid-template-areas:
            "photo"
            "message"
            "name"
            "card";
    }
    .clinic-greeting__photo {
        max-width: 360px;
        margin-inline: auto;
    }
    .clinic-greeting__name {
        justify-self: center;
        align-self: start;
        padding-right: 0;
    }
    .clinic-greeting__card {
        grid-template-columns: 1fr;
    }
}
@media (max-width: 600px) {
    .clinic-greeting {
        padding: var(--sp-xl) var(--sp-md);
    }
    .clinic-greeting__message p {
        font-size: var(--fs-sm);
        line-height: 1.85;
    }
    .clinic-greeting__card {
        padding: var(--sp-md);
        gap: var(--sp-md);
    }
    .clinic-greeting__card-title {
        font-size: var(--fs-base);
        margin-bottom: var(--sp-sm);
    }
    .clinic-greeting__list li {
        font-size: var(--fs-xs);
    }
}

/* ── clinic-progress: 地域との歩み ── */
.clinic-progress {
    padding: var(--sp-2xl) 0;
    margin-bottom: var(--sp-2xl);
}
.clinic-progress__inner {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-2xl);
    align-items: start;
}
.clinic-progress__text p {
    font-size: var(--fs-base);
    line-height: 1.9;
    color: var(--color-text);
    margin-bottom: var(--sp-md);
}
.clinic-progress__text p:last-child { margin-bottom: 0; }
.clinic-progress__cta {
    margin-top: var(--sp-lg);
    border: 2px solid var(--color-primary);
    border-radius: var(--radius-md);
    padding: var(--sp-md) var(--sp-lg);
    text-align: center;
    background: #fff;
}
.clinic-progress__cta-title {
    font-size: var(--fs-md);
    font-weight: 700;
    color: var(--color-text);
    margin-bottom: .35rem;
}
.clinic-progress__cta-sub {
    font-size: var(--fs-sm);
    color: var(--color-text-sub);
    margin-bottom: var(--sp-md);
}

/* Image column — scoped overrides; TOP page is unaffected */
.clinic-progress__media {
    display: flex;
    align-items: flex-start;
    align-self: start;
}
.clinic-progress__media .top-about__overlap {
    flex: 1;
    min-width: 0;
    aspect-ratio: 1 / 1.35;
}
.clinic-progress__media .top-about__overlap-img {
    width: 70%;
}
.clinic-progress__media .top-about__overlap-img--front {
    bottom: 0;
}
.clinic-progress__media .top-about__img-caption {
    bottom: 20%;
    left: 0;
    width: 50%;
    font-size: 0.8rem;
}

@media (max-width: 900px) {
    .clinic-progress__inner {
        grid-template-columns: 1fr;
    }
    .clinic-progress__media .top-about__overlap {
        aspect-ratio: 1 / 1;
    }
}
@media (max-width: 768px) {
    .clinic-progress { padding: var(--sp-xl) 0; margin-bottom: var(--sp-xl); }
    .clinic-progress__text p { font-size: var(--fs-sm); line-height: 1.8; }
    .clinic-progress__cta { padding: var(--sp-md); }
    .clinic-progress__cta-title { font-size: var(--fs-sm); }
    .clinic-progress__cta-sub { font-size: var(--fs-xs); }

    .clinic-greeting { padding: var(--sp-lg); }
    .clinic-greeting__message p { font-size: var(--fs-sm); line-height: 1.8; }
    .clinic-greeting__list li { font-size: var(--fs-xs); }
    .clinic-greeting__card-title { font-size: var(--fs-sm); }
}

.clinic-doctor--director {
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: var(--sp-xl);
    align-items: start;
    padding: var(--sp-xl);
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    margin-bottom: var(--sp-lg);
}
.clinic-doctor__photo img {
    width: 100%;
    border-radius: var(--radius-md);
    aspect-ratio: 3/4;
    object-fit: cover;
}
.clinic-doctor__name {
    font-size: var(--fs-xl);
    font-weight: 700;
    margin-bottom: .25rem;
}
.clinic-doctor__role {
    font-size: var(--fs-sm);
    color: var(--color-text-sub);
    margin-bottom: var(--sp-md);
}
.clinic-doctor__message p {
    font-size: var(--fs-base);
    line-height: 1.9;
    margin-bottom: var(--sp-sm);
}

.clinic-doctors-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--sp-md);
}
.clinic-doctor-card {
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    padding: var(--sp-lg);
    text-align: center;
}
.clinic-doctor-card__photo {
    width: 100px;
    height: 100px;
    border-radius: 50%;
    overflow: hidden;
    margin: 0 auto var(--sp-sm);
    background: var(--color-border);
}
.clinic-doctor-card__photo img { width: 100%; height: 100%; object-fit: cover; }
.clinic-doctor-card__name { font-weight: 700; margin-bottom: .25rem; }
.clinic-doctor-card__role { font-size: var(--fs-xs); color: var(--color-text-sub); }

.clinic-access-map {
    border-radius: var(--radius-md);
    overflow: hidden;
    aspect-ratio: 1420 / 800;
    margin-bottom: var(--sp-lg);
}
.clinic-access-map iframe { width: 100%; height: 100%; border: none; }

.clinic-download-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: var(--sp-sm);
}
.clinic-download-link {
    display: flex;
    align-items: center;
    gap: var(--sp-sm);
    padding: var(--sp-md);
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    border: 1px solid var(--color-border);
    font-size: var(--fs-sm);
    font-weight: 700;
    color: var(--color-text);
    transition: background var(--tr), border-color var(--tr), color var(--tr);
}
.clinic-download-link:hover {
    background: var(--color-bg-green);
    border-color: var(--color-primary);
    color: var(--color-primary);
    opacity: 1;
}
.clinic-download-link::before { content: '⬇'; flex-shrink: 0; color: var(--color-primary); }

@media (max-width: 600px) {
    .clinic-doctor--director { grid-template-columns: 1fr; }
    .clinic-mvv-images { grid-template-columns: 1fr; }
}

/* ── clinic-mvv: Mission / Vision / Values ── */
.clinic-mvv {
    position: relative;
    z-index: 2;
    background:
        linear-gradient(
            to bottom,
            rgba(255,255,255,.98) 0%,
            rgba(255,255,255,.95) 6%,
            rgba(255,255,255,.72) 12%,
            rgba(255,255,255,.28) 18%,
            rgba(255,255,255,0) 24%
    ),
        #ffffff url("../images/clinic-mv-bg.png") center center / cover no-repeat;
    padding-top: 8rem;
    min-height: 800px;
    overflow: visible;
}
.clinic-mvv__inner {
    position: relative;
    z-index: 1;
    min-height: 640px;
    max-width: 1500px;
    margin: 0 auto;
    padding: 0 clamp(1.25rem, 4vw, 4rem);
}

/* Image mosaics */
.clinic-mvv__mosaic {
    position: absolute;
    top: 0;
    bottom: 0;
    --mvv-card-w: 400px;
    --mvv-card-h: 300px;
    --mvv-portrait-w: 300px;
    --mvv-portrait-h: 400px;
    width: calc(var(--mvv-card-w) + 120px);
    pointer-events: none;
}
.clinic-mvv__img {
    position: absolute;
    width: var(--mvv-card-w);
    height: var(--mvv-card-h);
    border-radius: 8px;
}
.clinic-mvv__img img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
}
.clinic-mvv__img--portrait {
    width: var(--mvv-portrait-w);
    height: var(--mvv-portrait-h);
}

.clinic-mvv__mosaic--left { left: clamp(-220px, -11vw, -90px); }
.clinic-mvv__mosaic--right { right: clamp(-220px, -11vw, -90px); }

.clinic-mvv__mosaic--left .clinic-mvv__img:nth-child(1) {
    top: -18%;
    left: 21%;
}
.clinic-mvv__mosaic--left .clinic-mvv__img:nth-child(2) {
    top: 22%;
    left: 31%;
    z-index: 2;
}
.clinic-mvv__mosaic--left .clinic-mvv__img:nth-child(3) {
    top: 67%;
    left: -7%;
}

.clinic-mvv__mosaic--right .clinic-mvv__img:nth-child(1) {
    top: -7%;
    right: 21%;
}
.clinic-mvv__mosaic--right .clinic-mvv__img:nth-child(2) {
    top: 31%;
    right: 29%;
    width: 300px;
    height: 300px;
    z-index: 2;
}
.clinic-mvv__mosaic--right .clinic-mvv__img:nth-child(3) {
    top: 64%;
    right: 10%;
}

/* Center content */
.clinic-mvv__content {
    position: relative;
    z-index: 3;
    max-width: 760px;
    margin: 0 auto;
    padding-top: 1rem;
    text-align: center;
}
.clinic-mvv__item {
    padding: clamp(3.25rem, 6vw, 5rem) 0;
    border-bottom: none;
}
.clinic-mvv__item:first-child { padding-top: 0; }
.clinic-mvv__item:last-child {
    padding-bottom: 0;
}
.clinic-mvv__label {
    font-size: 24px;
    font-weight: 500;
    letter-spacing: .08em;
    color: var(--color-accent);
    line-height: 1.2;
    margin-bottom: .25rem;
}
.clinic-mvv__sublabel {
    font-size: 14px;
    font-weight: 500;
    color: var(--color-text);
    margin-bottom: clamp(2rem, 4vw, 3.25rem);
}
.clinic-mvv__text {
    font-family: var(--font-base);
    font-size: 32px;
    font-weight: 500;
    color: var(--color-text);   
    line-height: 1.9;
    letter-spacing: .16em;
}

/* Responsive */
@media (max-width: 1500px) {
    .clinic-mvv__mosaic {
        --mvv-card-w: 360px;
        --mvv-card-h: 270px;
        --mvv-portrait-w: 270px;
        --mvv-portrait-h: 360px;
        width: 480px;
    }
    .clinic-mvv__mosaic--left { left: -120px; }
    .clinic-mvv__mosaic--right { right: -120px; }
    .clinic-mvv__mosaic--left .clinic-mvv__img:nth-child(1) { top: -96px; left: 44px; }
    .clinic-mvv__mosaic--left .clinic-mvv__img:nth-child(2) { top: 122px; left: 14%; }
    .clinic-mvv__mosaic--left .clinic-mvv__img:nth-child(3) { top: 398px; left: -74px; }
    .clinic-mvv__mosaic--right .clinic-mvv__img:nth-child(1) { top: -96px; right: 44px; }
    .clinic-mvv__mosaic--right .clinic-mvv__img:nth-child(2) { top: 122px; right: 14%; width: 270px; height: 270px; }
    .clinic-mvv__mosaic--right .clinic-mvv__img:nth-child(3) { top: 398px; right: -74px; }
}
@media (max-width: 1300px) {
    .clinic-mvv__label {
        font-size: 24px;
    }
    .clinic-mvv__sublabel {
        font-size: 14px;
    }
    .clinic-mvv__text {
        font-size: 32px;
        letter-spacing: .1em;
    }
    .clinic-mvv__item {
        padding: clamp(2rem, 4vw, 3.5rem) 0;
    }
    .clinic-mvv__mosaic {
        --mvv-card-w: 320px;
        --mvv-card-h: 240px;
        --mvv-portrait-w: 240px;
        --mvv-portrait-h: 320px;
        width: 430px;
    }
    .clinic-mvv__mosaic--left { left: -90px; }
    .clinic-mvv__mosaic--right { right: -90px; }
    .clinic-mvv__mosaic--left .clinic-mvv__img:nth-child(1) { top: -82px; left: -3px; }
    .clinic-mvv__mosaic--left .clinic-mvv__img:nth-child(2) { top: 136px; left: 12%; }
    .clinic-mvv__mosaic--left .clinic-mvv__img:nth-child(3) { top: 362px; left: -60px; }
    .clinic-mvv__mosaic--right .clinic-mvv__img:nth-child(1) { top: -82px; right: 28px; }
    .clinic-mvv__mosaic--right .clinic-mvv__img:nth-child(2) { top: 136px; right: 12%; width: 240px; height: 240px; }
    .clinic-mvv__mosaic--right .clinic-mvv__img:nth-child(3) { top: 362px; right: -60px; }
}
@media (max-width: 1024px) {
    .clinic-mvv {
        min-height: 820px;
    }
    .clinic-mvv__inner {
        min-height: 640px;
    }
    .clinic-mvv__mosaic {
        opacity: .72;
        --mvv-card-w: 250px;
        --mvv-card-h: 168px;
        --mvv-portrait-w: 220px;
        --mvv-portrait-h: 312px;
        width: 330px;
    }
    .clinic-mvv__mosaic--left { left: -20px; }
    .clinic-mvv__mosaic--right { right: -20px; }
    .clinic-mvv__mosaic--left .clinic-mvv__img:nth-child(2) { left: 72px; }
    .clinic-mvv__mosaic--left .clinic-mvv__img:nth-child(3) { top: 392px; }
    .clinic-mvv__mosaic--right .clinic-mvv__img:nth-child(2) { right: 72px; }
    .clinic-mvv__mosaic--right .clinic-mvv__img:nth-child(3) { top: 392px; }
}
@media (max-width: 768px) {
    .clinic-mvv {
        padding: var(--sp-3xl) 0;
        min-height: auto;
    }
    .clinic-mvv__inner {
        display: flex;
        flex-direction: column;
        gap: var(--sp-xl);
        min-height: 0;
        padding: 0 var(--sp-md);
    }
    .clinic-mvv__mosaic {
        position: relative;
        inset: auto;
        --mvv-card-w: min(72vw, 280px);
        --mvv-card-h: min(48vw, 188px);
        --mvv-portrait-w: min(62vw, 240px);
        --mvv-portrait-h: min(84vw, 326px);
        width: min(100%, 390px);
        height: 500px;
        margin: 0 auto;
        opacity: 1;
        order: 1;
    }
    .clinic-mvv__mosaic--right {
        display: block;
        order: 3;
    }
    .clinic-mvv__mosaic--left .clinic-mvv__img:nth-child(1) {
        top: 0;
        left: 0;
    }
    .clinic-mvv__mosaic--left .clinic-mvv__img:nth-child(2) {
        top: 94px;
        left: auto;
        right: 0;
    }
    .clinic-mvv__mosaic--left .clinic-mvv__img:nth-child(3) {
        top: 312px;
        left: 0;
        bottom: auto;
    }
    .clinic-mvv__mosaic--right .clinic-mvv__img:nth-child(1) {
        top: 0;
        right: 0;
    }
    .clinic-mvv__mosaic--right .clinic-mvv__img:nth-child(2) {
        top: 94px;
        right: auto;
        left: 0;
    }
    .clinic-mvv__mosaic--right .clinic-mvv__img:nth-child(3) {
        top: 312px;
        right: 0;
        bottom: auto;
    }
    .clinic-mvv__content {
        display: contents;
    }
    .clinic-mvv__item:nth-child(1) {
        order: 2;
    }
    .clinic-mvv__item:nth-child(2) {
        order: 4;
    }
    .clinic-mvv__item:nth-child(3) {
        order: 5;
    }
    .clinic-mvv__content {
        padding-top: 0;
    }
    .clinic-mvv__item {
        padding: var(--sp-2xl) 0;
    }
    .clinic-mvv__text {
        font-size: 1.35rem;
        letter-spacing: 0.08em;
    }
    .clinic-mvv__text br {
        display: none;
    }
}

/* ── clinic-values: value cards ── */
.clinic-values {
    position: relative;
    z-index: 1;
    overflow: hidden;
    background: #ffffff url("../images/clinic-mv-bg2.png") top center / cover no-repeat;
    padding: clamp(4rem, 7vw, 6.5rem) 0 clamp(5rem, 8vw, 7rem);
}
.clinic-values__inner {
    position: relative;
    z-index: 1;
    max-width: 1500px;
    margin: 0 auto;
    padding: 0 clamp(1.25rem, 3vw, 3rem);
}
.clinic-values__header {
    text-align: center;
    margin-bottom: clamp(2rem, 4vw, 3rem);
}
.clinic-values__label {
    font-size: clamp(1.25rem, 2vw, 1.7rem);
    font-weight: 500;
    letter-spacing: .08em;
    color: rgba(227, 131, 82, .72);
    line-height: 1.2;
    margin-bottom: .4rem;
}
.clinic-values__sublabel {
    font-size: var(--fs-sm);
    color: var(--color-text);
}
.clinic-values__grid {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: clamp(1rem, 1.5vw, 1.5rem);
}
.clinic-values__card {
    grid-column: span 2;
    min-height: 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--sp-sm);
    padding: clamp(1rem, 2vw, 1.4rem) clamp(1.25rem, 2.5vw, 1.75rem);
    background: rgba(255,255,255,.94);
    border-radius: 6px;
    box-shadow: 0 1px 2px rgba(97, 58, 22, .1);
}
.clinic-values__card--wide-left {
    grid-column: 2 / span 2;
}
.clinic-values__card--wide-right {
    grid-column: 4 / span 2;
}
.clinic-values__body {
    align-self: center;
    min-width: 0;
}
.clinic-values__title {
    display: flex;
    align-items: baseline;
    gap: 1rem;
    margin-bottom: .5rem;
    font-size: clamp(1.1rem, 1.6vw, 1.4rem);
    font-weight: 500;
    color: var(--color-text);
    letter-spacing: .04em;
}
.clinic-values__title small {
    display: inline-flex;
    align-items: center;
    gap: 1.15rem;
    /*font-family: "Courier New", monospace;*/
    font-size: clamp(.9rem, 1vw, 1rem);
    /*font-weight: 700;*/
    letter-spacing: .08em;
    color: var(--color-text);
}
.clinic-values__title small::before {
    content: '/';
    font-family: var(--font-base);
    font-weight: 400;
    color: var(--color-accent);
}
.clinic-values__text {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 1.8;
}
.clinic-values__icon {
    width: clamp(56px, 5vw, 70px);
    height: clamp(56px, 5vw, 70px);
    object-fit: contain;
    flex: 0 0 auto;
    align-self: flex-start;
    margin-left: auto;
    margin-top: -.2rem;
    transform: translate(.9rem, -.4rem);
}

@media (max-width: 1280px) {
    .clinic-values__card {
        padding: var(--sp-sm) var(--sp-md);
        gap: var(--sp-sm);
    }
    .clinic-values__icon {
        width: clamp(40px, 3.5vw, 52px);
        height: clamp(40px, 3.5vw, 52px);
        align-self: center;
    }
    .clinic-values__title {
        font-size: clamp(.95rem, 1.3vw, 1.15rem);
        gap: .6rem;
        margin-bottom: .35rem;
    }
    .clinic-values__title small {
        font-size: clamp(.75rem, .85vw, .9rem);
    }
}
@media (max-width: 1024px) {
    .clinic-values__grid {
        grid-template-columns: repeat(2, 1fr);
    }
    .clinic-values__card,
    .clinic-values__card--wide-left,
    .clinic-values__card--wide-right {
        grid-column: auto;
    }
}
@media (max-width: 768px) {
    .clinic-values {
        padding: var(--sp-3xl) 0;
    }
    .clinic-values__grid {
        grid-template-columns: 1fr;
    }
    .clinic-values__card {
        padding: var(--sp-md) var(--sp-lg);
    }
    .clinic-values__title {
        flex-wrap: wrap;
        gap: .55rem 1rem;
    }
    .clinic-values__icon {
        width: 58px;
        height: 58px;
    }
}

/* clinic-intro: 2-column catchphrase + body text */
.clinic-intro {
    display: grid;
    grid-template-columns: minmax(220px, .85fr) minmax(0, 1.65fr);
    gap: clamp(var(--sp-md), 3vw, var(--sp-xl));
    align-items: start;
    padding: var(--sp-2xl) 0;
    margin-bottom: var(--sp-2xl);
}
.clinic-intro__catch {
    font-size: var(--fs-2xl);
    font-weight: 500;
    color: var(--color-primary);
    line-height: 2;
    letter-spacing: .5rem;
}
.clinic-intro__body p {
    font-size: var(--fs-base);
    line-height: 2;
    color: var(--color-text);
}
.clinic-intro__body p:last-child { margin-bottom: 0; }

@media (max-width: 768px) {
    .clinic-intro {
        grid-template-columns: 1fr;
        gap: var(--sp-lg);
        padding: var(--sp-xl) 0;
    }
    .clinic-intro__catch {
        font-size: var(--fs-lg);
        text-align: center;
        padding-left: .5rem;
    }
    .clinic-intro__body { font-size: var(--fs-sm); line-height: 1.8; }
}

/* ================================================================
   23. 診療内容ページ
================================================================ */
.medical-card-section { margin-bottom: var(--sp-2xl); }
.medical-card-section__title {
    font-size: var(--fs-xl);
    font-weight: 700;
    margin-bottom: var(--sp-lg);
    padding-bottom: .5rem;
    border-bottom: 3px solid var(--color-primary);
    display: flex;
    align-items: center;
    gap: var(--sp-sm);
}
.medical-card-section__title span {
    font-size: var(--fs-sm);
    font-weight: 400;
    color: var(--color-primary);
    letter-spacing: .1em;
}

.medical-card-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: var(--sp-md);
}
.medical-card {
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    border: 2px solid transparent;
    overflow: hidden;
    transition: border-color var(--tr), box-shadow var(--tr);
    position: relative;
}
.medical-card:hover { border-color: var(--color-primary); box-shadow: var(--shadow-sm); }
.medical-card__link {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .5rem;
    padding: var(--sp-lg) var(--sp-md);
    text-align: center;
}
.medical-card__icon {
    width: 56px;
    height: 56px;
    background: var(--color-primary-light);
    border-radius: 50%;
}
.medical-card__name { font-size: var(--fs-sm); font-weight: 700; color: var(--color-text); }
.medical-card__badge {
    position: absolute;
    top: .4rem;
    right: .4rem;
    font-size: .6rem;
    font-weight: 700;
    background: var(--color-accent);
    color: var(--color-white);
    padding: .1rem .4rem;
    border-radius: var(--radius-full);
}

/* ================================================================
   24. ガイドページ
================================================================ */

/* 共通 */
.guide-section { padding-block: var(--sp-3xl); }
.guide-section--flow { padding-block: 0; }
.guide-section--online { background: var(--color-bg-green); }
#access.guide-section{
    padding-block: unset;
    padding-bottom: var(--sp-3xl);
}

/* ── アンカーナビ ── */
.guide-anchor-nav {
    background: #fff;
    padding: var(--sp-md) 0;
    border-bottom: 1px solid var(--color-border);
}
.guide-anchor-nav__list {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: clamp(.35rem, .6vw, .75rem);
    list-style: none;
    margin: 0;
    padding: 0;
    width: 100%;
}
.guide-anchor-nav__list > li { min-width: 0; }
.guide-anchor-nav__btn {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-xs);
    width: 100%;
    min-height: clamp(3.25rem, 4.5vw, 3.75rem);
    padding: .7rem .9rem;
    background: var(--color-primary);
    color: #fff;
    border-radius: var(--radius-sm);
    border: 2px solid var(--color-primary);
    font-size: clamp(.72rem, .82vw, var(--fs-sm));
    /*font-weight: 700;*/
    text-decoration: none;
    transition: background var(--tr), color var(--tr), border-color var(--tr);
    white-space: normal;
    line-height: 1.25;
    overflow-wrap: anywhere;
    min-width: 0;
}
.guide-anchor-nav__btn:hover {
    background: var(--color-white);
    color: var(--color-primary);
    opacity: 1;
}
.guide-anchor-nav__arrow {
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    position: relative;
    transition: background var(--tr), transform var(--tr);
}
.guide-anchor-nav__btn:hover .guide-anchor-nav__arrow {
    background: var(--color-primary);
    transform: translateY(3px);
}
.guide-anchor-nav__arrow::before {
    content: '';
    position: absolute;
    top: 7px;
    left: 50%;
    width: 2px;
    height: 8px;
    transform: translateX(-50%);
    background: var(--color-primary);
    transition: background var(--tr);
}
.guide-anchor-nav__arrow::after {
    content: '';
    position: absolute;
    top: 11px;
    left: 50%;
    transform: translateX(-50%) rotate(45deg);
    width: 6px;
    height: 6px;
    border-right: 2px solid var(--color-primary);
    border-bottom: 2px solid var(--color-primary);
    transition: border-color var(--tr);
}
.guide-anchor-nav__btn:hover .guide-anchor-nav__arrow::after {
    border-color: #fff;
}
.guide-anchor-nav__btn:hover .guide-anchor-nav__arrow::before {
    background: #fff;
}

/* ── ① 初めて来院される方へ ── */
.guide-2col {
    display: grid;
    grid-template-columns: 1fr 690px;
    gap: var(--sp-2xl);
    align-items: stretch;
}
.guide-2col__img {
    position: relative;
    overflow: hidden;
    border-radius: 8px;
    min-height: 400px;
}
@media (max-width: 1180px) and (min-width: 769px) {
    /* iPad：画像列が固定690pxで狭くなるため50/50に */
    .guide-2col {
        grid-template-columns: 1fr 1fr;
    }
}
.guide-2col__img img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}
.guide-intro-text { margin-bottom: var(--sp-md); }
.guide-checklist {
    background: var(--color-bg-green);
    border-radius: var(--radius-md);
    padding: var(--sp-sm) var(--sp-lg);
    list-style: none;
    margin-bottom: var(--sp-lg);
}
.guide-checklist li {
    padding: .1rem 0 .1rem 1.2rem;
    position: relative;
    font-size: var(--fs-base);
    line-height: 2;
}
.guide-checklist li::before {
    content: '•';
    position: absolute;
    left: 0;
    color: var(--color-primary);
    font-size: 1.2rem;
    line-height: 1.4;
}
.guide-divider {
    border: none;
    border-top: 2px dashed var(--color-border);
    margin: var(--sp-lg) 0;
}
.guide-pdf-list {
    background: var(--color-bg-green);
    border-radius: var(--radius-md);
    padding: var(--sp-sm) var(--sp-lg);
    list-style: none;
    margin-top: var(--sp-md);
}
.guide-pdf-list li {
    padding: .6rem 0 .6rem 1.2rem;
    position: relative;
    border-bottom: 1px solid var(--color-primary-light);
}
.guide-pdf-list li:last-child { border-bottom: none; }
.guide-pdf-list li::before {
    content: '•';
    position: absolute;
    left: 0;
    color: var(--color-primary);
}
.guide-pdf-list a {
    color: var(--color-text);
    text-decoration: underline;
    font-size: var(--fs-base);
    transition: opacity var(--tr);
}
.guide-pdf-list a:hover { opacity: .7; }

/* ── ② 受診の流れ ── */
.guide-flow-header {
    background: var(--color-primary);
    padding: var(--sp-xl) 0;
}
.guide-flow-header__en {
    font-size: var(--fs-sm);
    color: rgba(255,255,255,.7);
    margin-bottom: .4rem;
}
.guide-flow-header__title {
    font-size: var(--fs-2xl);
    font-weight: 700;
    color: #fff;
}
.guide-flow-card {
    background: #fff;
    border-radius: var(--radius-lg);
    padding: var(--sp-2xl);
    margin-block: var(--sp-2xl);
    box-shadow: 0 2px 16px rgba(0,0,0,.06);
}
.guide-flow-steps { list-style: none; }
.guide-flow-step {
    display: grid;
    grid-template-columns: 64px 1fr;
    gap: var(--sp-lg);
    position: relative;
    padding-bottom: var(--sp-xl);
}
.guide-flow-step:last-child { padding-bottom: 0; }
.guide-flow-step:not(:last-child)::after {
    content: '';
    position: absolute;
    left: 31px;
    top: 64px;
    bottom: 0;
    width: 1px;
    background: var(--color-primary-light);
}
.guide-flow-step:not(:last-child) .guide-flow-step__body {
    padding-bottom: var(--sp-xl);
    border-bottom: 1px dashed var(--color-border);
}
.guide-flow-step__num {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    border: 2px solid var(--color-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--fs-xl);
    font-weight: 700;
    color: var(--color-primary);
    flex-shrink: 0;
    background: #fff;
    position: relative;
    z-index: 1;
}
.guide-flow-step__title { font-weight: 700; margin-bottom: .5rem; }

/* ── ③ ウイルス・感染症対策 ── */
.guide-infection-intro {
    text-align: center;
    margin-bottom: var(--sp-xl);
    line-height: 2;
}
.guide-infection-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-md);
}
.guide-infection-card {
    background: var(--color-bg-green);
    border-radius: var(--radius-md);
    padding: var(--sp-lg);
}
.guide-infection-card__title {
    font-weight: 700;
    margin-bottom: var(--sp-sm);
    padding-left: 1rem;
    position: relative;
    font-size: var(--fs-lg);
}
.guide-infection-card__title::before {
    content: '•';
    position: absolute;
    left: 0;
    color: var(--color-primary);
}

/* ── ④ オンライン予約 ── */
.guide-online-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-lg);
    margin-bottom: var(--sp-lg);
}
.guide-online-card { position: relative; padding-top: 2rem; }
/* speech bubble badge with downward arrow */
.guide-online-badge {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    padding: .35rem 1.2rem;
    border-radius: var(--radius-full);
    font-size: var(--fs-md);
    font-weight: 500;
    white-space: nowrap;
    z-index: 1;
}
.guide-online-badge::after {
    content: '';
    position: absolute;
    bottom: -7px;
    left: 50%;
    transform: translateX(-50%);
    border-left: 7px solid transparent;
    border-right: 7px solid transparent;
}
.guide-online-badge--green { background: var(--color-primary); color: #fff; }
.guide-online-badge--green::after { border-top: 7px solid var(--color-primary); }
.guide-online-badge--brown { background: #8B6914; color: #fff; }
.guide-online-badge--brown::after { border-top: 7px solid #8B6914; }
.guide-online-card__inner {
    background: #fff;
    border-radius: var(--radius-md);
    border: 3px solid var(--color-border);
    padding: var(--sp-xl) var(--sp-lg) var(--sp-lg);
    height: 100%;
    box-sizing: border-box;
}
.guide-online-card__title {
    font-size: var(--fs-2xl);
    font-weight: 300;
    text-align: center;
    margin-bottom: var(--sp-md);
    letter-spacing: .25rem;
}
.guide-online-card__btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--sp-xs);
    max-width: 340px;
    margin: var(--sp-xl) auto var(--sp-lg);
    border-radius: var(--radius-sm) !important;
    font-weight: 300;
}
.guide-online-card__btn-arrow {
    width: 1.6rem;
    height: 1.6rem;
    border-radius: 50%;
    background: #fff;
    color: var(--color-primary);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: .75rem;
    flex-shrink: 0;
    transition: background var(--tr), color var(--tr), transform var(--tr);
}
.guide-online-card__btn:hover .guide-online-card__btn-arrow {
    background: var(--color-primary);
    color: #fff;
    transform: translateX(4px);
}
.guide-online-notice {
    display: flex;
    align-items: center;
    gap: var(--sp-md);
    background: #fff;
    border-radius: var(--radius-md);
    padding: var(--sp-xl) var(--sp-3xl);
}
/* triangle alert icon */
.guide-online-notice__icon {
    width: 48px;
    height: 48px;
    flex-shrink: 0;
    display: block;
    object-fit: contain;
}
.guide-online-notice__label {
    font-weight: 300;
    font-size: var(--fs-lg);
    flex-shrink: 0;
    white-space: nowrap;
}
.guide-online-notice__text { font-size: var(--fs-base); margin: 0; padding-left: 2rem; }

/* ── ⑤ アクセス ── */
.guide-access-map { margin-bottom: var(--sp-xl); border-radius: var(--radius-md); overflow: hidden; }
.guide-access-map img { width: 100%; height: auto; display: block; }
.guide-access-map { aspect-ratio: 1420 / 800; }
.guide-access-map iframe { width: 100%; height: 100%; display: block; border: none; }

/* 2カラム: 左(写真+住所) / 右(バス+駐車場) */
.guide-access-body {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-xl);
    align-items: start;
}
/* 左カラム */
.guide-access-left {
    display: flex;
    flex-direction: column;
}
.guide-access-left__img {
    border-radius: var(--radius-md);
    overflow: hidden;
    margin-bottom: var(--sp-md);
}
.guide-access-left__img img {
    width: 100%;
    height: auto;
    display: block;
}
.guide-access-address {
    display: flex;
    flex-direction: row;
    gap: 1.5rem;
    /*padding-top: var(--sp-xs);*/
    align-items: center;
}
.guide-access-address__logo-row {
    display: flex;
    align-items: center;
    gap: var(--sp-sm);
}
.guide-access-address__logo { width: 95%; height: auto; }
.guide-access-address__org { font-size: var(--fs-xs); color: var(--color-text-sub); }
.guide-access-address__name { font-size: var(--fs-lg); font-weight: 700; color: var(--color-primary); }
.guide-access-address__text { font-size: var(--fs-base); color: var(--color-text-sub); line-height: 1.8; margin-top: var(--sp-xs); }

/* 右カラム */
.guide-access-right {
    display: flex;
    flex-direction: column;
    gap: var(--sp-xl);
}
/* バス情報 */
.guide-access-bus {
    padding-bottom: var(--sp-md);
    font-size: var(--fs-sm);
    line-height: 1.7;
}
.guide-access-bus p {
    margin-bottom: .3rem;
    font-size: var(--fs-base);
}
.guide-access-bus__route {
    font-size: 16px;
    font-weight: 400;
    line-height: 1.9;
}
.guide-access-bus__icon {
    width: 1rem;
    height: auto;
    object-fit: contain;
    flex-shrink: 0;
}
/* 駐車場情報：テキスト左 + 画像右 */
.guide-access-car {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: var(--sp-sm);
    align-items: start;
    font-size: var(--fs-sm);
}
.guide-access-car {
    font-size: var(--fs-base);
}
.guide-access-car__img img {
    width: 300px;
    height: 200px;
    object-fit: cover;
    border-radius: 4px;
    display: block;
}
@media (max-width: 1180px) and (min-width: 769px) {
    /* iPad（縦横問わず）：右カラムが狭くなり駐車場カードが崩れるため1カラムに */
    .guide-access-body {
        grid-template-columns: 1fr;
        gap: var(--sp-lg);
    }
    .guide-access-car {
        grid-template-columns: 1fr;
    }
    .guide-access-car__img {
        max-width: 100%;
        margin-inline: auto;
    }
    .guide-access-car__img img {
        width: 100%;
        height: auto;
    }
}
/* 共通タイトル */
.guide-transport-block__title {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-weight: 500;
    margin-bottom: var(--sp-xs);
    font-size: var(--fs-lg);
}
.guide-transport-icon {
    width: 1.6rem;
    height: 1.6rem;
    border-radius: 50%;
    background: var(--color-accent);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: .7rem;
    font-weight: 900;
    flex-shrink: 0;
}
.guide-transport-block__sub {
    font-size: var(--fs-base);
    font-weight: 500;
    color: var(--color-text);
    margin-top: var(--sp-xs);
    margin-bottom: .1rem;
}
.guide-access-notice {
    background: #f7f4f2;
    border-radius: var(--radius-sm);
    padding: .5rem var(--sp-sm);
    margin-top: var(--sp-xs);
    font-size: var(--fs-sm);
    line-height: 1.5;
    color: #E38352;
    font-weight: 500;
}

/* ── レスポンシブ ── */
@media (max-width: 1024px) {
    .guide-2col { grid-template-columns: 1fr; }
    .guide-2col__img { order: -1; }
    .guide-2col__img img { max-height: 360px; }
    .guide-access-info { grid-template-columns: 1fr 1fr; }
    .guide-access-info__parking-col { grid-column: 1 / -1; }
    .guide-access-info__parking-col img { max-height: 260px; object-fit: cover; }
}
@media (max-width: 768px) {
    /* Anchor nav */
    .guide-anchor-nav { padding: var(--sp-sm) 0; }
    .guide-anchor-nav .container { padding-inline: var(--sp-2xl); }
    .guide-anchor-nav__list { 
        grid-template-columns: 1fr !important; 
        gap: 4px; 
    }
    .guide-anchor-nav__btn { 
        font-size: var(--fs-xs); 
        padding: .6rem var(--sp-sm);
        min-height: unset;
        height: auto;
        line-height: 1.3;
    }
    .guide-anchor-nav__list > li:last-child {
        grid-column: auto;
    }
    .guide-anchor-nav__arrow { width: 16px; height: 16px; }

    /* First visit 2-col */
    .guide-section { padding-block: var(--sp-xl); }
    .guide-2col__img { min-height: 200px; }
    .guide-intro-text { font-size: var(--fs-sm); }
    .guide-checklist li { font-size: var(--fs-sm); }
    .guide-pdf-list li a { font-size: var(--fs-xs); }

    /* Infection grid */
    .guide-infection-intro { font-size: var(--fs-sm); line-height: 1.7; }
    .guide-infection-grid { grid-template-columns: 1fr; gap: var(--sp-sm); }
    .guide-infection-card { padding: var(--sp-md); }
    .guide-infection-card__title { font-size: var(--fs-base); }
    .guide-infection-card p { font-size: var(--fs-sm); }

    /* オンライン予約セクション */
    .guide-online-grid { grid-template-columns: 1fr; padding-top: var(--sp-xs); gap: var(--sp-lg); }
    .guide-online-card__inner { padding: var(--sp-md) var(--sp-sm) var(--sp-sm); }
    .guide-online-card__inner p { font-size: var(--fs-sm); }
    .guide-online-card__title { font-size: var(--fs-lg); }
    .guide-online-card__btn { font-size: var(--fs-xs); padding: .7rem 1rem; }
    .guide-online-notice { flex-direction: column; gap: var(--sp-xs); padding: var(--sp-sm) var(--sp-md); }
    .guide-online-notice__icon { width: 32px; height: 32px; }
    .guide-online-notice__label { font-size: var(--fs-sm); }
    .guide-online-notice__text { font-size: var(--fs-xs); padding-left: 0; }

    /* アクセス */
    .guide-access-map { aspect-ratio: 16/10; }
    .guide-access-body { grid-template-columns: 1fr; gap: var(--sp-lg); }
    .guide-access-left { flex-direction: column; gap: var(--sp-sm); }
    .guide-access-left__img { width: 100%; margin-bottom: 0; }
    .guide-access-address { flex-direction: column; align-items: flex-start; gap: var(--sp-xs); padding-top: 0; }
    .guide-access-address__logo-row { width: 100%; justify-content: center; padding: 1rem; }
    .guide-access-address__logo { width: auto; }
    .guide-access-address__text { font-size: var(--fs-sm); }
    .guide-access-right { gap: var(--sp-md); }
    .guide-transport-block__title { font-size: var(--fs-base); }
    .guide-transport-block__sub { font-size: var(--fs-sm); }
    .guide-access-bus p { font-size: var(--fs-sm); }
    .guide-access-bus__route { font-size: var(--fs-xs) !important; }
    .guide-access-car { grid-template-columns: 1fr; font-size: var(--fs-sm); }
    .guide-access-car__img { display: none; }
    .guide-access-notice p { font-size: var(--fs-xs); }
    .clinic-section { margin-bottom: var(--sp-xl); }
    .guide-access-map { aspect-ratio: 16/10; margin-bottom: var(--sp-md); }

    /* Flow (reused dept-flow, already handled) */
    .guide-flow-card { padding: var(--sp-lg); }
    .guide-flow-step { grid-template-columns: 48px 1fr; }
    .guide-flow-step__num { width: 48px; height: 48px; font-size: var(--fs-base); }
    .guide-flow-step:not(:last-child)::after { left: 23px; top: 48px; }
}
@media (max-width: 1180px) {
    .guide-anchor-nav__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ================================================================
   25. ニュース一覧（archive-news）
================================================================ */

.news-archive.section {
    padding-top: var(--sp-xl);
    padding-bottom: var(--sp-2xl);
}

/* 2カラムレイアウト */
.news-archive__layout {
    display: grid;
    grid-template-columns: 1fr 400px;
    gap: var(--sp-2xl);
    align-items: start;
}
.news-archive__empty { color: var(--color-text-sub); font-size: var(--fs-sm); }

/* ニュースリスト */
.news-list {
    display: flex;
    flex-direction: column;
}
.news-list__item {
    border-bottom: 1px solid var(--color-border);
    transition: border-color var(--tr);
}
.news-list__item:first-child {
    border-top: 1px solid var(--color-border);
}
.news-list__item:hover {
    border-bottom-color: var(--color-primary);
}
.news-list__link {
    display: block;
    padding: var(--sp-md) 0;
    color: var(--color-text);
    transition: opacity var(--tr);
}
.news-list__link:hover { opacity: 1; }
.news-list__link:hover .news-list__title {
    color: var(--color-primary);
    text-decoration: underline;
}
.news-list__link:hover .news-list__date {
    color: var(--color-primary);
}
.news-list__meta {
    display: flex;
    align-items: center;
    gap: .6rem;
    margin-bottom: .4rem;
}
.news-list__date {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
}
.news-list__cat {
    display: inline-block;
    padding: .1rem .75rem;
    font-size: var(--fs-xs);
    font-weight: 500;
    border-radius: var(--radius-sm);
    white-space: nowrap;
    flex-shrink: 0;
    background: var(--color-white);
    color: var(--color-primary);
    border: 1px solid var(--color-primary);
}
.news-list__cat--info,
.news-list__cat--topic,
.news-list__cat--uncategorized,
.news-list__cat--closed,
.news-list__cat--change,
.news-list__cat--vaccination,
.news-list__cat--health {
    background: var(--color-white);
    color: var(--color-primary);
    border: 1px solid var(--color-primary);
}
.news-list__title {
    font-size: var(--fs-base);
    font-weight: 300;
    line-height: 2;
    color: var(--color-text);
}

/* ページネーション */
.news-pagination {
    margin-top: var(--sp-2xl);
    margin-bottom: var(--sp-2xl);
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    gap: .75rem;
}
.news-pagination .nav-links {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 1.75rem;
}
.news-pagination .page-numbers {
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: Montserrat, var(--font-base);
    font-size: 20px;
    font-weight: 500;
    color: var(--color-text-sub);
    text-decoration: none;
    transition: color var(--tr);
}
.news-pagination .page-numbers:not(.prev):not(.next) {
    min-width: auto;
    height: auto;
    padding: 0;
    border-radius: 0;
    background: transparent;
    line-height: 1;
}
.news-pagination .page-numbers:hover { color: var(--color-primary); opacity: 1; }
.news-pagination .current { color: var(--color-primary); font-weight: 500; }
.news-pagination .prev.page-numbers,
.news-pagination .next.page-numbers {
    background: var(--color-primary);
    color: transparent;
    width: 40px;
    height: 40px;
    min-width: 40px;
    border-radius: 50%;
    font-size: 0;
    font-weight: 400;
    line-height: 1;
    overflow: hidden;
    position: relative;
}
.news-pagination .prev.page-numbers::before,
.news-pagination .next.page-numbers::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 18px;
    height: 18px;
    background: url('../images/arrows/banner-arrow.png') center / contain no-repeat;
    transform: translate(-50%, -50%);
}
.news-pagination .prev.page-numbers::before {
    transform: translate(-50%, -50%) scaleX(-1);
}
.news-pagination .prev.page-numbers:hover,
.news-pagination .next.page-numbers:hover { opacity: .8; color: var(--color-white); }
.news-pagination .dots { pointer-events: none; font-size: 20px; }

/* サイドバー */
.news-archive__sidebar {
    display: flex;
    flex-direction: column;
    gap: var(--sp-lg);
}
.news-sidebar__box {
    background: var(--color-bg-green);
    padding: var(--sp-md) var(--sp-lg);
}
.news-sidebar__heading {
    font-size: var(--fs-base);
    font-weight: 500;
    color: var(--color-text);
    padding-bottom: var(--sp-sm);
    margin-bottom: 0;
    border-bottom: 2px solid var(--color-border);
}
.news-sidebar__heading.news-sidebar__heading--padding-top {
    padding-top: 2rem;
}
.news-sidebar__list {
    list-style: none;
    padding: 0;
    display: flex;
    flex-direction: column;
}
.news-sidebar__item {
    border-bottom: none;
    background: repeating-linear-gradient(
        to right,
        var(--color-border) 0 3px,
        transparent 2px 10px
    ) left bottom / 100% 2px no-repeat;
    font-size: var(--fs-base);
    font-weight: 500;
    color: var(--color-text-sub);
    padding: 1rem 0 .6rem;
    display: flex;
    align-items: center;
    gap: .3rem;
}
.news-sidebar__item a {
    display: inline;
    padding: 0;
    font-size: var(--fs-sm);
    color: var(--color-text);
    text-decoration: none;
    transition: color var(--tr);
}
.news-sidebar__item a:hover { color: var(--color-primary); opacity: 1; }
.news-sidebar__item.is-active a { color: var(--color-primary); font-weight: 700; }

@media (max-width: 1180px) and (min-width: 769px) {
    /* iPad：スマホと同じくカテゴリ・アーカイブを下に */
    .news-archive__layout {
        grid-template-columns: 1fr;
        gap: var(--sp-lg);
    }
    .news-archive__sidebar {
        flex-direction: column;
        gap: var(--sp-sm);
    }
}

@media (max-width: 768px) {
    .news-archive__layout {
        grid-template-columns: 1fr;
        gap: var(--sp-lg);
    }
    .news-archive__sidebar {
        flex-direction: column;
        gap: var(--sp-sm);
    }
    .news-sidebar__box { padding: var(--sp-sm) var(--sp-md); }
    .news-sidebar__heading { font-size: var(--fs-sm); padding-bottom: var(--sp-xs); }
    .news-sidebar__item a { font-size: var(--fs-xs); }

    /* News list items */
    .news-list__link { padding: var(--sp-sm) 0; }
    .news-list__date { font-size: var(--fs-xs); }
    .news-list__cat { font-size: var(--fs-xs); padding: .05rem .5rem; }
    .news-list__title { font-size: var(--fs-sm); }

    /* Pagination */
    .news-pagination { margin-top: var(--sp-lg); margin-bottom: var(--sp-lg); }
    .news-pagination .nav-links { gap: 1rem; }
    .news-pagination .page-numbers { font-size: var(--fs-sm); }
    .news-pagination .prev.page-numbers,
    .news-pagination .next.page-numbers { width: 32px; height: 32px; min-width: 32px; }
    .news-pagination .prev.page-numbers::before,
    .news-pagination .next.page-numbers::before { width: 12px; height: 12px; }
}

/* ================================================================
   26. ニュース詳細（single-news）
================================================================ */
.news-single__header {
    margin-bottom: var(--sp-lg);
}
.news-single__meta {
    display: flex;
    align-items: center;
    gap: .6rem;
    margin-bottom: var(--sp-sm);
}
.news-single__date { font-size: var(--fs-base); color: var(--color-text-sub); }
.news-single__title {
    font-size: var(--fs-2xl);
    font-weight: 500;
    line-height: 2;
    padding-bottom: var(--sp-sm);
    border-bottom: none;
    background:
        repeating-linear-gradient(
            to right,
            #44A06B 0 3px,
            transparent 2px 10px
        ) left bottom / 100% 2px no-repeat;
    margin-bottom: var(--sp-lg);
}
.news-single__thumbnail { margin-bottom: var(--sp-xl); overflow: hidden; }
.news-single__thumbnail img { max-width: 100%; max-height: 80vw; height: auto; object-fit: cover; }

/* エントリコンテンツ */
.entry-content { font-size: var(--fs-base); line-height: 2; }
.entry-content p { margin-bottom: var(--sp-md); }
.entry-content h2 {
    font-size: var(--fs-lg);
    font-weight: 700;
    margin-block: var(--sp-lg) var(--sp-sm);
    padding-bottom: var(--sp-xs);
    border-bottom: 1px solid var(--color-border);
}
.entry-content h3 { font-size: var(--fs-base); font-weight: 700; margin-block: var(--sp-md) var(--sp-sm); color: var(--color-primary); }
.entry-content ul, .entry-content ol { padding-left: 1.5rem; margin-bottom: var(--sp-md); }
.entry-content li { margin-bottom: .3rem; }
.entry-content ul li { list-style: disc; }
.entry-content ol li { list-style: decimal; }
.entry-content a { color: var(--color-primary); text-decoration: underline; transition: opacity var(--tr); }
.entry-content a:hover { opacity: .7; }
.entry-content strong,
.entry-content b { font-weight: 700; color: var(--color-primary); }
.entry-content img { max-width: 100%; max-height: 80vw; height: auto; margin-block: var(--sp-md); object-fit:contain }
.entry-content table { width: 100%; border-collapse: collapse; margin-bottom: var(--sp-md); font-size: var(--fs-sm); }
.entry-content table th,
.entry-content table td { padding: .6rem var(--sp-sm); border: 1px solid var(--color-border); text-align: left; }
.entry-content table th { background: var(--color-bg-green); font-weight: 700; }

/* 一覧に戻るボタン */
.news-single__footer {
    margin-top: var(--sp-2xl);
    margin-bottom: var(--sp-2xl);
    padding-top: var(--sp-lg);
    border-top: 2px solid var(--color-border);
    display: flex;
    justify-content: center;
}
.news-single__back-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 1.5rem;
    padding: .75rem 2rem;
    background: var(--color-primary);
    color: var(--color-white);
    font-size: var(--fs-base);
    font-weight: 500;
    border: 2px solid var(--color-primary);
    border-radius: var(--radius-sm);
    text-decoration: none;
    line-height: 1;
    overflow: hidden;
    position: relative;
    transition: background var(--tr), color var(--tr), border-color var(--tr), opacity var(--tr);
}
.news-single__back-btn:hover {
    background: var(--color-white);
    color: var(--color-primary);
    border-color: var(--color-primary);
    opacity: 1;
}
.news-single__back-arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 50%;
    background: var(--color-white);
    flex-shrink: 0;
    position: relative;
    transition: transform var(--tr), background var(--tr);
}
.news-single__back-arrow::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 10px;
    height: 9px;
    background: url('../images/arrows/green-arrow-md.png') center / contain no-repeat;
    transform: translate(-50%, -50%) scaleX(-1);
    transition: background-image var(--tr);
}
.news-single__back-btn:hover .news-single__back-arrow {
    background: var(--color-primary);
    transform: translateX(4px);
}
.news-single__back-btn:hover .news-single__back-arrow::before {
    background-image: url('../images/arrows/white-arrow-md.png');
}

@media (max-width: 768px) {
    .news-single__title { font-size: var(--fs-lg); }
    .news-single__header { margin-bottom: var(--sp-md); }
    .news-single__date { font-size: var(--fs-xs); }
    .news-single__thumbnail { margin-bottom: var(--sp-md); }
    .entry-content { font-size: var(--fs-sm); line-height: 1.8; }
    .entry-content h2 { font-size: var(--fs-base); }
    .entry-content h3 { font-size: var(--fs-sm); }
    .news-single__footer { margin-top: var(--sp-lg); margin-bottom: var(--sp-lg); }
    .news-single__back-btn { font-size: var(--fs-xs); padding: .6rem 1rem; }
    .news-single__back-arrow { width: 1.2rem; height: 1.2rem; }
}

/* ================================================================
   27. プライバシーポリシー
================================================================ */
.policy-content { font-size: var(--fs-base); line-height: 1.9; }

.policy-content h3 { font-size: var(--fs-base); margin-block: var(--sp-sm) var(--sp-xs); }
.policy-content p { margin-bottom: var(--sp-sm); }
.policy-content ul { padding-left: 3rem; margin-bottom: var(--sp-sm); }
.policy-content li { list-style: disc; margin-bottom: .3rem; }

/* ================================================================
   28. 404 ページ
================================================================ */
.error-404 { text-align: center; padding-block: var(--sp-4xl); }
.error-404__code { font-size: 6rem; font-weight: 900; color: var(--color-primary-light); line-height: 1; }
.error-404__title { font-size: var(--fs-2xl); margin-block: var(--sp-sm) var(--sp-md); }
.error-404__body { color: var(--color-text-sub); margin-bottom: var(--sp-xl); }

/* ================================================================
   29. 美容医療タブ
================================================================ */
.aesthetic-tabs {
    display: flex;
    margin-bottom: var(--sp-xl);
    overflow-x: auto;
    border-radius: 4px;
}
.aesthetic-tab-btn {
    padding: .75rem var(--sp-lg);
    font-size: var(--fs-base);
    font-weight: 700;
    color: var(--color-text-sub);
    border-bottom: 3px solid transparent;
    margin-bottom: -2px;
    transition: color var(--tr), border-color var(--tr);
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
}
.aesthetic-tab-btn.is-active { color: var(--color-primary); border-bottom-color: var(--color-primary); }
.aesthetic-tab-content { display: none; }
.aesthetic-tab-content.is-active { display: block; }

/* ================================================================
   30. ダウンロードリスト
================================================================ */
.download-list { display: flex; flex-direction: column; gap: .5rem; }
.download-list__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--sp-md) var(--sp-lg);
    background: var(--color-bg-light);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    gap: var(--sp-md);
    flex-wrap: wrap;
}
.download-list__name { font-size: var(--fs-sm); font-weight: 700; }
.download-list__btn {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    padding: .4rem 1rem;
    background: var(--color-primary);
    color: var(--color-white);
    font-size: var(--fs-xs);
    font-weight: 700;
    border-radius: var(--radius-full);
    flex-shrink: 0;
    white-space: nowrap;
}
.download-list__btn:hover { background: var(--color-primary-dark); opacity: 1; }

/* ================================================================
   31. ユーティリティ
================================================================ */
.text-center  { text-align: center; }
.text-left    { text-align: left; }
.text-primary { color: var(--color-primary); }
.text-accent  { color: var(--color-accent); }
.text-sub     { color: var(--color-text-sub); }
.fw-bold      { font-weight: 700; }
.mt-sm { margin-top: var(--sp-sm); }
.mt-md { margin-top: var(--sp-md); }
.mt-lg { margin-top: var(--sp-lg); }
.mt-xl { margin-top: var(--sp-xl); }
.mb-sm { margin-bottom: var(--sp-sm); }
.mb-md { margin-bottom: var(--sp-md); }
.mb-lg { margin-bottom: var(--sp-lg); }
.mb-xl { margin-bottom: var(--sp-xl); }
.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    white-space: nowrap;
}

/* ================================================================
   32. レスポンシブ（SP: max-width 768px）
================================================================ */
@media (max-width: 768px) {
    :root {
        --container-pad: 2rem;
        --sp-3xl: 3.5rem;
        --sp-4xl: 5rem;
        --header-h: 60px;
    }

    /* ─── ヘッダー ─── */
    /* SP ではサイドバー非表示のためヘッダーを全ページで表示 */
    body .site-header { display: flex; }
    body { padding-top: var(--header-h); }
    .site-header__inner { padding-inline: 1.5rem; }

    .site-header__tel     { display: none; }
    .site-header__booking { display: none; }
    .site-header__actions { display: none; }
    .global-nav           { display: none; }
    .menu-toggle          { display: flex; margin-left: auto; }

    /* ロゴを少し小さく */
    .site-header__logo-img--pc { display: none; }
    .site-header__logo .site-header__logo-img--sp { display: block; height: 39px; }
    .top-mv__sidebar-logo-img { height: 40px; }

    /* ─── MV ─── */
    /* サイドバーは非表示、スライダーをフル幅・高さで表示 */
    .top-mv {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        z-index: 1;
        height: 560px;
        min-height: 560px;
        max-height: 560px;
        overflow: hidden;
        width: 100%;
    }
    .top-mv__sidebar { display: none; }
    .top-mv__slider  {
        width: 100%;
        height: 100%;
        min-height: 0;
        max-height: none;
    }
    .top-intro {
        margin-top: 560px;
        background: #ffffff;
        backdrop-filter: none;
    }

    /* テキストオーバーレイ：画像上に重ねたまま、左端基準でフル幅 */
    .top-mv__text {
        position: absolute;
        left: 0;
        right: 0;
        bottom: 0;
        max-width: 100%;
        padding: 5.25rem var(--sp-md) 3.5rem;
        background: linear-gradient(to top, rgba(0,0,0,.72) 0%, rgba(0,0,0,.52) 42%, transparent 100%);
        pointer-events: none;
        padding-bottom: 2rem;
    }
    .top-mv__copy     { font-size: clamp(1.1rem, 4.5vw, 1.5rem); margin-bottom: .55rem; }
    .top-mv__copy-en  { font-size: 1rem; margin-top: .35rem; }
    .top-mv__vertical-col {
        font-size: clamp(2.4rem, 9.5vw, 3.6rem);
    }
    .sp-only-br {
        display: inline;
    }
    .top-mv__scroll {
        display: flex;
        left: auto;
        right: 8px;
        bottom: var(--sp-md);
        transform: none;
        flex-direction: row;
        align-items: center;
        gap: .42rem;
        z-index: 21;
    }
    .top-mv__scroll-track {
        height: 71px;
    }
    .top-mv__scroll-text {
        margin-left: .08rem;
        transform: translateY(20px);
    }
    .top-mv__scroll-circle {
        width: .45rem;
        height: .45rem;
    }
    .top-mv__scroll-label {
        writing-mode: vertical-rl;
        text-orientation: mixed;
        font-size: 1rem;
        line-height: 1;
        letter-spacing: .12em;
    }

    /* 診察時間フローティングドロワー — SP */
    .hours-floating-drawer {
        width: calc(100vw - 3.2rem);
    }
    .hours-floating-tab {
        left: -2.6rem;
        padding: .75rem .5rem;
        font-size: 1rem;
        gap: .3rem;
        min-height: 8.5rem;
    }
    .hours-floating-tab__icon { font-size: .9rem; }
    .hours-floating-panel {
        max-height: 76vh;
        padding: var(--sp-sm);
    }
    .hours-floating-panel__hours {
        overflow: hidden;
    }
    .hours-floating-panel__hours .clinic-hours__table {
        display: table;
        white-space: nowrap;
        width: max-content;
        transform: scale(0.78);
        transform-origin: top left;
    }
    .hours-floating-panel__hours .clinic-hours__note {
        font-size: var(--fs-xs);
        transform: scale(0.78);
        transform-origin: top left;
    }

    /* ─── 内ページ ─── */
    .inner-page-layout { padding: var(--sp-xl) var(--container-pad); gap: var(--sp-xl); }

    /* ─── ニュース詳細 ─── */
    .news-single__title { font-size: var(--fs-xl); }

    /* ─── テーブル横スクロール ─── */
    .price-table, .clinic-hours__table { display: block; overflow-x: auto; white-space: nowrap; }
}

@media (max-width: 560px) {
    .hours-floating-panel__body {
        grid-template-columns: 1fr;
        gap: var(--sp-md);
        padding-right: 0;
    }
}

@media (max-width: 480px) {
    .top-banners__grid { grid-template-columns: 1fr; }
}


/* ================================================================
   34. TOP オンラインショッピング
================================================================ */
.top-shop {
    background: var(--color-white);
    margin: -1px;
    padding-top: 1rem;
    padding-bottom: 5rem;
}

/* beige modifier for specific instances where outer area should be beige */
.top-shop__card-wrap.top-shop--beige {
    background: #f5f3f2;
    padding-top: 2rem;
    padding-left: 7rem;
    padding-right: 7rem;
    padding-bottom: 2rem;
    margin-bottom: 1rem;
}

/* ensure the card stays compact and centered inside the beige area */
.top-shop__card-wrap.top-shop--beige .top-shop__card {
    max-width: 940px;
    margin-inline: auto;
}
.top-shop__link {
    display: block;
    color: inherit;
    text-decoration: none;
}
.top-shop__link:hover {
    opacity: 1;
}

/* カード枠 */
.top-shop__card {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 4rem;
    border: 1.5px solid var(--color-primary);
    border-radius: var(--radius-md);
    padding: .1rem var(--sp-xl);
    background: var(--color-white);
    overflow: hidden;
    position: relative;
}

/* 左テキスト */
.top-shop__body {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .5rem;
    flex-shrink: 0;
}
.top-shop__title {
    font-size: var(--fs-xl);
    font-weight: 700;
    color: var(--color-text);
    line-height: 1.5;
    letter-spacing: 5%;
}
.top-shop__title--main {
    font-size: var(--fs-lg);
    font-weight: 700;
    color: var(--color-text);
    line-height: 1.5;
    letter-spacing: 5%;
}
.top-shop__en {
    font-size: var(--fs-sm);
    font-weight: 700;
    color: var(--color-primary);
    letter-spacing: .10%;
    text-transform: uppercase;
    align-self: center;
    font-family: 'Montserrat', sans serif;
}

/* 右：商品画像＋ボタン（ボタンは画像右下に重なる） */
.top-shop__img-wrap {
    position: relative;
    flex-shrink: 0;
    display: flex;
    align-items: center;
}
.top-shop__img {
    display: block;
    width: 460px;
    height: auto;
}

/* 詳しくはこちらボタン（画像右下に重なる） */
.top-shop__btn {
    position: absolute;
    bottom: 8px;
    right: -40px;
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    padding: .25rem 1rem;
    background: var(--color-primary);
    color: var(--color-white);
    font-size: var(--fs-base);
    font-weight: 700;
    border-radius: 4px;
    border: 2px solid var(--color-primary);
    transition: background var(--tr), color var(--tr), border-color var(--tr);
    text-decoration: none;
    white-space: nowrap;
}
#aesthetic-shop .top-shop__btn {
    right: -10px;
}
.top-shop__btn [aria-hidden="true"] {
    display: inline-block;
    width: 7px;
    height: 10px;   
    color: var(--color-white);
    background-color: currentColor;
    -webkit-mask: url('../images/arrows/online-banner-chevron.png') center / contain no-repeat;
    mask: url('../images/arrows/online-banner-chevron.png') center / contain no-repeat;
    transition: transform var(--tr), color var(--tr), background-color var(--tr);
    border-radius: 0;
    font-size: 0;
}
.top-shop__btn:hover {
    background: var(--color-white);
    color: var(--color-primary);
    opacity: 1;
}
.top-shop__btn:hover [aria-hidden="true"] {
    color: var(--color-primary);
    transform: translateX(4px);
}

/* 下部サブリンク */
.top-shop__sub {
    text-align: center;
    margin-top: var(--sp-xs);
}
.top-shop__sub-link {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    font-size: var(--fs-sm);
    color: var(--color-text);
    transition: color var(--tr);
}
.top-shop__sub-link:hover { color: var(--color-primary); opacity: 1; }
.top-shop__sub-arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.6rem;
    height: 1.6rem;
    background: var(--color-primary);
    color: var(--color-white);
    border-radius: 50%;
    font-size: .8rem;
    line-height: 1;
    flex-shrink: 0;
}

@media (max-width: 1180px) and (min-width: 769px) {
    /* iPad横向きなどの中間幅で文字が欠けないよう余白・画像サイズを縮小 */
    .top-shop__card-wrap.top-shop--beige {
        padding-left: 3rem;
        padding-right: 3rem;
    }
    .top-shop__card-wrap.top-shop--beige .top-shop__card {
        gap: 2.5rem;
        justify-content: center;
    }
    .top-shop__card-wrap.top-shop--beige .top-shop__img {
        width: 300px;
    }
    .top-shop__card-wrap.top-shop--beige .top-shop__title {
        font-size: var(--fs-lg);
    }
    .top-shop__card-wrap.top-shop--beige .top-shop__title--main {
        font-size: var(--fs-base);
    }
}

@media (max-width: 768px) {
    /* カード: 横並びのまま、左テキスト・右画像＋ボタン */
    .top-shop__card {
        flex-direction: row;
        align-items: center;
        padding: var(--sp-md);
        gap: var(--sp-md);
    }
    .top-shop__body { flex: 1; min-width: 0; }
    .top-shop__title { font-size: 18px; }
    .top-shop__img-wrap {
        width: 140px;
        flex-shrink: 0;
        position: relative;
    }
    .top-shop__img { width: 140px; }
    /* beige variant: break out of .container to go full-width on SP */
    .top-shop__card-wrap.top-shop--beige {
        margin-left: calc(-1 * var(--container-pad));
        margin-right: calc(-1 * var(--container-pad));
        padding-left: var(--sp-md);
        padding-right: var(--sp-md);
    }
    .top-shop__card-wrap.top-shop--beige .top-shop__card {
        position: relative;
        width: 330px;
        height: 240px;
        max-width: 100%;
        margin-inline: auto;
        padding: var(--sp-md);
        overflow: hidden;
    }
    .top-shop__en {
        align-self: end;
    }
    .top-shop__card-wrap.top-shop--beige .top-shop__img-wrap {
        position: absolute;
        top: -2%;
        left: -11%;
        width: 100%;
    }
    .top-shop__card-wrap.top-shop--beige .top-shop__img {
        width: 100%;
        height: auto;
    }
    .top-shop__card-wrap.top-shop--beige .top-shop__body {
        position: absolute;
        bottom: 26%;
        right: 5%;
        text-align: right;
    }
    .top-shop__card-wrap.top-shop--beige .top-shop__title--main {
        font-size: var(--fs-sm);
        z-index: 100;
    }
    .top-shop__card-wrap.top-shop--beige .top-shop__btn {
        position: absolute;
        bottom: -80%;
        right: -8%;
        margin-top: 0;
        justify-content: flex-end;
        padding: 3px 10px;
    }
    .top-shop__card-wrap.top-shop--beige .top-shop__sub {
        text-align: center;
    }
    .top-shop__card-wrap.top-shop--beige .top-shop__sub-link {
        font-size: var(--fs-xs);
    }
    /* ボタンは画像右下に重なったまま */
    .top-shop__btn {
        position: absolute;
        bottom: -30px;
        right: -1px;
        font-size: var(--fs-xs);
        padding: .5rem .75rem;
        border-radius: 4px;
    }
}

/* top-shop --compact (美容医療ページ用) */
.top-shop--compact {
    padding-block: var(--sp-lg);
}
.top-shop--compact .top-shop__card {
    max-width: 940px;
    margin-inline: auto;
    padding: 0 1rem 0 0;
}
@media (max-width: 768px) {
    /* compact variant（美容医療ページ） */
    .top-shop--compact .top-shop__card {
        padding: var(--sp-sm);
        gap: var(--sp-sm);
    }
    .top-shop--compact .top-shop__title {
        font-size: var(--fs-sm);
    }
    .top-shop--compact .top-shop__img-wrap {
        width: 110px;
    }
    .top-shop--compact .top-shop__img {
        width: 110px;
    }
}
.top-shop--compact .top-shop__title {
    font-size: var(--fs-lg);
}
.top-shop--compact .top-shop__img {
    width: 460px;
}
.top-shop--orange .top-shop__card {
    border-color: var(--color-accent);
}
.top-shop--orange .top-shop__en {
    color: var(--color-accent);
}
.top-shop--orange .top-shop__btn {
    background: var(--color-accent);
    border-color: var(--color-accent);
}
.top-shop--orange .top-shop__btn [aria-hidden="true"] {
    color: var(--color-white);
}
.top-shop--orange .top-shop__btn:hover {
    background: var(--color-white);
    color: var(--color-accent);
    border-color: var(--color-accent);
}
.top-shop--orange .top-shop__btn:hover [aria-hidden="true"] {
    color: var(--color-accent);
}

/* ================================================================
   36. Phase 4 — Contact / Footer / Page-top SP
================================================================ */
@media (max-width: 768px) {

    /* ─── お問い合わせ ─── */
    .top-contact__grid {
        grid-template-columns: 1fr;
        padding-top: 2.4rem;
    }
    .top-contact__phone-card {
        padding-top: var(--sp-md);
    }
    .top-contact__phone-number {
        font-size: 1.75rem;
    }
    .top-contact__right {
        flex-direction: column;
        gap: var(--sp-md);
    }
    .top-contact__online-card {
        padding: var(--sp-md);
        position: relative;
        justify-content: flex-start;
        min-height: unset;
        flex-direction: column;
        align-items: stretch;
    }
    .top-contact__online-icon-wrap {
        position: absolute;
        top: var(--sp-md);
        left: var(--sp-md);
        width: 2.5rem;
        height: 2.5rem;
    }
    .top-contact__online-icon {
        height: 1.8rem;
    }
    .top-contact__online-title {
        font-size: var(--fs-sm);
        padding-left: 3rem;
        text-align: left;
    }
    .top-contact__online-body {
        width: 100%;
        text-align: center;
        padding-left: 0;
        margin-top: 0;
    }
    .top-contact__online-note {
        font-size: var(--fs-xs);
        line-height: 1.5;
        text-align: start;
    }
    .top-contact__ai-card {
        padding: var(--sp-sm) var(--sp-md);
    }
    .top-contact__ai-title {
        font-size: var(--fs-sm);
    }
    .top-contact__ai-note {
        font-size: var(--fs-xs);
        line-height: 1.5;
    }
    .top-contact__banners {
        grid-template-columns: 1fr;
    }

    /* ─── フッター ─── */
    .site-footer__inner {
        grid-template-columns: 1fr;
        gap: var(--sp-lg);
        padding-top: var(--sp-xl);
        padding-bottom: var(--sp-xl);
        padding-left: var(--sp-sm);
        padding-right: var(--sp-sm);
    }
    .site-footer__info-map {
        grid-template-columns: 1fr;
        gap: var(--sp-md);
    }
    .site-footer__map {
        height: 200px;
        aspect-ratio: unset;
    }
    .site-footer__logo {
        text-align: center;
    }
    .site-footer__logo-img {
        height: 60  px;
        margin: 0 auto;
    }
    .site-footer__address {
        font-size: var(--fs-xs);
        line-height: 1.6;
    }
    .site-footer__address-org {
        font-size: var(--fs-xs);
    }
    .site-footer__access-note {
        font-size: var(--fs-xs);
        line-height: 1.8;
        padding: 1rem 0;
    }
    .site-footer__parking-note {
        font-size: var(--fs-xs);
    }
    .site-footer .clinic-hours__table-box {
        background: transparent;
        border: none;
        border-radius: 0;
        padding: 0;
    }
    .site-footer .clinic-hours__table {
        width: 100%;
        max-width: 100%;
        height: auto;
        display: table;
        table-layout: fixed;
        overflow: visible;
        white-space: normal;
        margin-right: 0;
        border: none;
        border-radius: 0;
        background: transparent;
        box-shadow: none;
    }
    .site-footer .clinic-hours__table th,
    .site-footer .clinic-hours__table td {
        border: none;
        background: transparent;
    }
    .site-footer .clinic-hours__table thead tr {
        border-bottom: 1px solid #F7F4F2;
        background-image: none;
    }
    .site-footer .clinic-hours__table tbody tr {
        border-bottom: 1px solid #F7F4F2;
        background-image: none;
    }
    .site-footer .clinic-hours__table th {
        font-size: var(--fs-xs);
        padding: .3rem .3rem;
    }
    .site-footer .clinic-hours__table td,
    .site-footer .clinic-hours__table .clinic-hours__td-label {
        font-size: var(--fs-sm);
        padding: .3rem 0rem;
        font-size:12px; 
    }

    .site-footer .clinic-hours__table th.clinic-hours__th-time,
    .site-footer .clinic-hours__table .clinic-hours__td-label {
        width: 3rem;
        padding-left: .2rem;
        white-space: normal;
        line-height: 1.3;
        /*font-size: var(--fs-xs);*/
        font-size:12px; 
    }
    .site-footer .clinic-hours__note {
        font-size: var(--fs-xs);
        line-height: 1.5;
    }
    .site-footer__affiliated {
        margin-top: var(--sp-xs);
    }
    .site-footer__affiliated-label {
        font-size: var(--fs-xs);
    }
    .site-footer__affiliated-list {
        font-size: var(--fs-xs);
    }
    /* Nav columns */
    .site-footer__nav-heading {
        font-size: var(--fs-sm);
    }
    .site-footer__nav-list a {
        font-size: var(--fs-xs);
    }
    .site-footer__nav-sub {
        font-size: var(--fs-xs);
    }
    .site-footer__nav-list--secondary a {
        font-size: var(--fs-xs);
    }
    .site-footer__copyright {
        font-size: var(--fs-xs);
    }

    /* ─── ページトップボタン：SP ではフッター最下部に静的配置 ─── */
    .pagetop-btn {
        display: flex;
        position: static;
        opacity: 1;
        pointer-events: auto;
        flex-direction: row;
        align-items: center;
        justify-content: center;
        width: 100%;
        background: var(--color-primary);
        color: var(--color-white);
        padding: var(--sp-md);
        gap: var(--sp-sm);
    }
    .pagetop-btn__track {
        position: relative;
        align-self: stretch;
        margin-top: calc(-1 * var(--sp-md));
        margin-bottom: calc(-1 * var(--sp-md));
        width: 2px;
        height: auto;
        flex-shrink: 0;
    }
    .pagetop-btn__line {
        width: 2px;
        height: 100%;
        background: rgba(255, 255, 255, .4) !important;
    }
    .pagetop-btn__line::after {
        background: #ffffff !important;
    }
    .pagetop-btn__text {
        flex-direction: column;
        align-items: center;
        gap: var(--sp-xs);
    }
    .pagetop-btn__arrow {
        display: inline-flex;
        align-items: center;
        justify-content: center;
    }
    .pagetop-btn__label {
        font-size: var(--fs-xs);
    }
    .site-footer__bottom-inner {
        justify-content: center;
    }
    .site-footer__copyright {
        text-align: center;
    }
}

/* ================================================================
   35. TOP アクセス追加スタイル
================================================================ */
.top-access__name {
    font-weight: 700;
    font-size: var(--fs-md);
    margin-bottom: .5rem;
}
.top-access__tel {
    font-size: 1.375rem;
    font-weight: 900;
    color: var(--color-primary);
    display: inline-block;
    margin-block: .5rem;
}
.top-access__hours {
    margin-block: var(--sp-md);
}
.top-access__transit-title {
    font-size: var(--fs-sm);
    font-weight: 700;
    color: var(--color-primary);
    margin-block: var(--sp-sm) .4rem;
}
.top-access__transit ul {
    font-size: var(--fs-sm);
    line-height: 1.75;
}
.top-access__transit ul li {
    padding-left: 1em;
    text-indent: -1em;
    margin-bottom: .25rem;
}
.top-access__transit ul li::before {
    content: '・';
    color: var(--color-primary);
}
.top-access__transit p {
    font-size: var(--fs-sm);
    line-height: 1.75;
    margin-bottom: var(--sp-md);
}

/* ================================================================
   37. 診療案内 リデザイン
================================================================ */

/* ─── イントロブロック ─── */
.medical-intro {
    background: #ffffff;
    padding-top: var(--sp-2xl);
    padding-bottom: 0;
}
.medical-intro__inner {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: var(--sp-2xl);
    align-items: center;
    max-width: 85%;
    margin-inline: auto;
}
.medical-intro__catch {
    font-size: var(--fs-2xl);
    font-weight: 500;
    color: var(--color-primary);
    letter-spacing: 0.25rem;
    line-height: 1.6;
}
.medical-intro__catch-sub {
    font-size: var(--fs-2xl);
    font-weight: 500;
    color: var(--color-primary);
    letter-spacing: 0.25rem;
    margin-top: .5rem;
}
.medical-intro__body {
    font-size: var(--fs-base);
    font-weight: 400;
    color: var(--color-text-sub);
    line-height: 2;
}
.medical-intro__body p + p { margin-top: .75rem; }

/* ─── 診療カードグリッド ─── */
.medical-dept-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(1rem, 1.5vw, 1.5rem);
    margin-top: var(--sp-lg);
}

/* ─── 個別カード ─── */
.medical-dept-card {
    background: var(--color-white);
    border-radius: var(--radius-md);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    min-height: 440px;
    max-width: 800px;
    width: 100%;
    justify-self: center;
}
#specialized .medical-dept-card {
    min-height: 300px;
}

/* カード上部メインエリア（テキスト側） */
.medical-dept-card__main {
    padding: clamp(2.25rem, 2vw, 1.5rem);
    flex: 0 0 auto;
    padding-bottom: 0.5rem;
}

/* アイコン ＋ タイトル行 */
.medical-dept-card__head {
    display: flex;
    align-items: center;
    gap: var(--sp-sm);
    margin-bottom: var(--sp-sm);
}
.medical-dept-card__icon {
    width: 4.4rem;
    height: 4.4rem;
    object-fit: cover;
    flex-shrink: 0;
}
.medical-dept-card__title {
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
    line-height: 1.4;
    letter-spacing: 0.1rem;
    padding-left: .5rem;
}

/* 説明文 */
.medical-dept-card__desc {
    font-size: 16px;
    color: var(--color-text-sub);
    line-height: 1.8;
    margin-bottom: var(--sp-md);
}

/* 対象疾患タグ */
.medical-dept-card__tags-wrap {
    margin-top: .85rem;
}
.medical-dept-card__tags-label {
    /*font-size: var(--fs-xs);*/
    font-weight: 300;
    color: var(--color-text-sub);
    margin-bottom: .45rem;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .2rem;
}
.medical-dept-card__tags-label::before {
    content: none;
}
.medical-dept-card__tags-label::after {
    content: '';
    display: inline-block;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: rgba(68,160,107,1);
    box-shadow:
        7px 0 0 rgba(68,160,107,.55),
        14px 0 0 rgba(68,160,107,.22);
    margin-top: .15rem;
    margin-left: .05rem;
}
#specialized.medical-index-section .medical-dept-card__tags-label::after {
    background: rgba(227,131,82,1);
    box-shadow:
        7px 0 0 rgba(227,131,82,.55),
        14px 0 0 rgba(227,131,82,.22);
}
.medical-dept-card__tags {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .35rem;
    list-style: none;
    padding: 0;
    margin: 0;
}
.medical-dept-card__tags li {
    font-size: 14px;
    color: var(--color-text);
    border-radius: 4px;
    padding: .35rem .45rem;
    background: #F2F7F5;
    min-height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    white-space: normal;
}
#specialized .medical-dept-card__tags li {
    background: #F7F4F2;
}

/* 画像のみカード */
.medical-dept-card--image {
    padding: 0;
    overflow: hidden;
    border: none;
    max-height: 340px;
}
#specialized .medical-dept-card--image {
    max-height: 400px;
}
.medical-dept-card--image .medical-dept-card__cover {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* ── セクション背景（ウェーブ区切り） ── */
#general {
    background: #f1f7f5;
    padding: var(--sp-2xl) clamp(2rem, 6vw, 6rem);
    position: relative;
    margin-bottom: 0;
    z-index: 2;
}
#general::after {
    display: none;
}
#specialized {
    background: #f6f4f1;
    padding: 0 clamp(2rem, 6vw, 6rem) var(--sp-2xl);
    position: relative;
    z-index: 1;
    margin-top: 0;
}
#specialized::before {
    content: '';
    display: block;
    width: 100vw;
    height: 150px;
    background: #f1f7f5 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 160' preserveAspectRatio='none'%3E%3Cpath fill='%23f6f4f1' d='M0,140 C360,10 1080,170 1440,25 L1440,160 L0,160 Z'/%3E%3C/svg%3E") center top / 100% 100% no-repeat;
    margin-left: calc(50% - 50vw);
    margin-bottom: var(--sp-2xl);
    pointer-events: none;
} */
#specialized > * {
    position: relative;
    z-index: 1;
}

/* ── 通常診療（General Care）はグリーン ── */
#general .medical-dept-card:hover { border-color: var(--color-primary); }
#general .medical-dept-card__tags-label::before,
#general .medical-dept-card__tags-label::after { background: var(--color-primary); }
#general .medical-dept-card__tags li { background: var(--color-bg-green); border-color: var(--color-primary-light); }
#general .medical-dept-card__btn { background: var(--color-primary); border-color: var(--color-primary); }
#general .medical-dept-card__btn:hover { background: var(--color-white); color: var(--color-primary); opacity: 1; }
#general .medical-dept-card__btn:hover .medical-dept-card__btn-arrow {
    background-color: var(--color-primary);
    background-image: url('../images/arrows/white-arrow-md.png');
    color: var(--color-white);
}
#general .medical-dept-card__btn-arrow {
    color: var(--color-primary);
    background-image: url('../images/arrows/green-arrow-md.png');
}

/* 詳しく見るボタン */
.medical-dept-card__btn {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: var(--color-accent);
    color: var(--color-white);
    font-size: var(--fs-sm);
    font-weight: 700;
    padding: .9rem 1.25rem;
    text-decoration: none;
    border: 2px solid var(--color-accent);
    transition: background var(--tr), color var(--tr), border-color var(--tr);
    flex-shrink: 0;
    width: auto;
    align-self: stretch;
    margin: .85rem var(--sp-lg) var(--sp-lg);
}
.medical-dept-card__btn::before {
    content: '';
    width: .8rem;
    flex-shrink: 0;
}
.medical-dept-card__btn-label {
    flex: 1;
    text-align: center;
    font-size: 16px;
    font-weight: 300;
}
.medical-dept-card__btn:hover {
    background: var(--color-white);
    color: var(--color-accent);
    opacity: 1;
}
.medical-dept-card__btn:hover .medical-dept-card__btn-arrow {
    background-color: var(--color-accent);
    background-image: url('../images/arrows/white-arrow-md.png');
    color: var(--color-white);
    transform: translateX(4px);
}
.medical-dept-card__btn-arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.6rem;
    height: 1.6rem;
    background-color: var(--color-white);
    background-image: url('../images/arrows/orange-arrow-md.png');
    background-repeat: no-repeat;
    background-position: center;
    background-size: 10px 9px;
    color: var(--color-accent);
    border-radius: 9999px;
    font-size: 0;
    font-weight: 900;
    flex-shrink: 0;
    line-height: 1;
    transition: background var(--tr), color var(--tr), transform var(--tr);
}

/* ─── フォトストリップ（CSS無限マーキー） ─── */
@keyframes photo-marquee {
    0%   { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}
.medical-photo-strip {
    overflow: hidden;
    padding-bottom: 6rem;
    background: linear-gradient(180deg, #f6f4f1 0%, #ffffff 100%);
    margin-top: -1px;
}
.medical-photo-strip__track {
    display: flex;
    gap: 20px;
    width: max-content;
    animation: photo-marquee 20s linear infinite;
}
.medical-photo-strip__track:hover { animation-play-state: paused; }
.medical-photo-strip__item {
    width: 280px;
    height: 200px;
    /*border-radius: var(--radius-sm);*/
    border-radius: 0.5rem;
    overflow: hidden;
    flex-shrink: 0;
}
.medical-photo-strip__item--up   { margin-bottom: 48px; }
.medical-photo-strip__item--down { margin-top: 48px; }
.medical-photo-strip__item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* ─── お問い合わせ（top-contact 流用） ─── */

/* ─── 問診票ダウンロード ─── */
.medical-download {
    background: #f5f3f2;
    padding-block: var(--sp-3xl);
    padding-inline: var(--sp-lg);
}
.medical-download__inner {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: var(--sp-3xl);
    align-items: start;
    border-top: 2px dotted var(--color-primary);
    padding-top: var(--sp-2xl);
}

/* 左カラム */
.medical-download__eyebrow {
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--color-primary);
    margin-bottom: var(--sp-sm);
}
.medical-download__title {
    font-size: clamp(1.75rem, 3vw, 2.5rem);
    font-weight: 700;
    line-height: 1.3;
    color: var(--color-text);
    margin-bottom: var(--sp-lg);
}
.medical-download__note {
    font-size: var(--fs-sm);
    color: var(--color-text-sub);
    line-height: 2;
    margin-bottom: var(--sp-sm);
}

/* 右カラム：カード */
.medical-download__card {
    background: var(--color-white);
    border-radius: var(--radius-md);
    box-shadow: 0 4px 24px rgba(0,0,0,.06);
    padding: var(--sp-md) var(--sp-lg);
    margin-bottom: var(--sp-sm);
}
.medical-download__list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: .25rem;
}
.medical-download__list li { border-bottom: none; }
.medical-download__link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-sm);
    padding: .4rem 0;
    text-decoration: none;
    transition: color var(--tr);
}
.medical-download__link::before {
    content: '';
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--color-primary);
    flex-shrink: 0;
}
.medical-download__link-name {
    flex: 1;
    font-size: var(--fs-sm);
    color: var(--color-primary);
    font-weight: 500;
    padding-left: .5rem;
}
.medical-download__link:hover .medical-download__link-name { text-decoration: underline; }
.medical-download__pdf {
    font-size: var(--fs-xs);
    color: var(--color-text-light);
    white-space: nowrap;
    letter-spacing: .02em;
}

/* Adobe Reader 注記 */
.medical-download__reader {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-sm);
    flex-wrap: wrap;
}
.medical-download__reader-note {
    font-size: var(--fs-xs);
    color: var(--color-text-sub);
    line-height: 1.7;
}
.medical-download__reader-note a {
    color: var(--color-primary);
    text-decoration: underline;
}
.medical-download__reader-btn { flex-shrink: 0; }

/* ─── フッター直前 バナー ─── */
.page-banners {
    background: #ffffff;
    padding-top: 5rem;
    padding-bottom: 8rem;
    margin-top: -1px;
}

/* ─── SP レスポンシブ ─── */
@media (max-width: 768px) {
    .page-hero--image .page-hero__inner { height: 200px; }
    .page-hero--image .page-hero__title { font-size: var(--fs-xl); }
    .page-hero__breadcrumb-bar { justify-content: flex-start; }
    .page-banners {
        padding-bottom: 2rem;
    }

    .medical-intro__inner {
        grid-template-columns: 1fr;
        gap: var(--sp-md);
    }
    .medical-intro__catch { font-size: var(--fs-lg); text-align: center; padding-left: .5rem; }
    .medical-intro__catch-sub { font-size: var(--fs-lg); text-align: center; padding-left: .5rem; }
    .medical-intro__body { font-size: var(--fs-sm); line-height: 1.8; }

    .medical-dept-grid {
        grid-template-columns: 1fr;
    }
    #general.medical-index-section .medical-dept-grid,
    #specialized.medical-index-section .medical-dept-grid {
        margin-left: 0;
        margin-right: 0;
    }
    .medical-dept-card {
        max-width: 100%;
        min-height: unset;
    }
    .medical-dept-card__main {
        padding: var(--sp-md);
    }
    .medical-dept-card__icon { width: 3rem; height: 3rem; }
    .medical-dept-card__title { font-size: var(--fs-md); }
    .medical-dept-card__desc { font-size: var(--fs-xs); }
    .medical-dept-card__tags {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .medical-dept-card__tags li { font-size: 1rem; }
    .medical-dept-card__btn {
        width: 100%;
        margin: 0;
        align-self: stretch;
        font-size: var(--fs-xs);
        padding: .6rem var(--sp-md);
    }

    .medical-photo-strip { padding-bottom: var(--sp-xl); }
    .medical-photo-strip__item {
        width: 160px;
        height: 120px;
    }
    .medical-photo-strip__item--up   { margin-bottom: 20px; margin-top: 0; }
    .medical-photo-strip__item--down { margin-top: 20px; margin-bottom: 0; }

    .medical-download__inner {
        grid-template-columns: 1fr;
        gap: var(--sp-xl);
    }
    .medical-download__title { font-size: var(--fs-xl); }
}


/* ================================================================
   38. 診療科目詳細ページ共通（dept-* コンポーネント）
================================================================ */

/* ── dept ヒーロー（アイコン＋タイトル中央、ミントグリーン背景） ── */
.page-hero--dept {
    background: var(--color-bg-green);
    border-bottom: none;
    padding-block: var(--sp-3xl) var(--sp-3xl);
    text-align: center;
}
.page-hero--dept .page-hero__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
    min-height: 180px;
}
/* icon sits absolutely centered behind the text */
.page-hero__icon {
    position: absolute;
    top: 50%;
    left: 49.5%;
    transform: translate(-95%, -50%);
    width: 240px;
    height: 240px;
    display: flex;
    align-items: center;
    justify-content: center;
    mix-blend-mode: multiply;
    z-index: 0;
    pointer-events: none;
}
.page-hero__icon img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    opacity: .45;
}
/* titles sit on top of the icon */
.page-hero--dept .page-hero__titles {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .3rem;
}
.page-hero--dept .page-hero__title {
    font-size: 3.375rem;
    font-weight: 500;
    color: var(--color-text);
    letter-spacing: 10%;
}
.page-hero--dept .page-hero__en {
    font-size: var(--fs-base);
    font-style: normal;
    color: var(--color-primary);
    letter-spacing: .2em;
    font-weight: 800;
}

/* ── イントロ + 症状テーブル ── */
.dept-intro {
    background: var(--color-white);
}
.dept-intro__inner {
    display: flex;
    flex-direction: column;
    gap: var(--sp-xl);
    padding-bottom: 5rem;
}
/* 上段：2カラム */
.dept-intro__top {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: var(--sp-xl);
    align-items: start;
    margin-block: 5rem 1rem;
}
.dept-intro__catch {
    font-size: var(--fs-2xl);
    font-weight: 500;
    color: var(--color-primary);
    letter-spacing: 0.25rem;
    line-height: 1.8;
}
.dept-intro__body {
    font-size: var(--fs-base);
    color: var(--color-text);
    line-height: 2;
}
.dept-intro__body p + p { /*margin-top: .75rem;*/ }
/* 下段：全幅 */
.dept-intro__bottom {
    width: 100%;
}

/* 症状グリッドボックス */
.dept-symptoms {
    margin-top: var(--sp-lg);
    border: 4px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: var(--sp-lg);
    background: var(--color-white);
    margin-bottom: 1rem;
}
.dept-symptoms__title {
    font-size: 20px;
    /*font-size: var(--fs-base);*/
    font-weight:500;
    color: var(--color-text);
    margin-bottom: var(--sp-md);
    padding-bottom: 1.5rem;
    border-bottom: 2px solid var(--color-border);
    padding-top: .5rem;
}
.dept-symptoms__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: .5rem 1rem;
}
.dept-symptoms__grid li {
    font-size: var(--fs-base);
    padding: .2rem .3rem;
    border-bottom: none;
    display: flex;
    align-items: center;
    color: var(--color-text);
    position: relative;
    padding-bottom: .6rem;
}
.dept-symptoms__grid li::before {
    content: '・';
    color: var(--color-primary);
    flex-shrink: 0;
    font-size: 1.2rem;
}
.dept-symptoms__grid li::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 2px;
    background: repeating-linear-gradient(
        to right,
        var(--color-border) 0 3px,
        transparent 2px 10px
    );
}
.dept-symptoms__grid-item--wide {
    grid-column: span 2;
}
.dept-symptoms__note {
    text-align: right;
    font-size: var(--fs-xs);
    color: var(--color-text-sub);
    margin-top: .5rem;
}

/* ── 選ばれる理由 ── */
.dept-reasons {
    padding-block: var(--sp-lg);
    padding-bottom: 5rem;
}
.dept-reasons.section--bg-green .section-header {
    position: relative;
    z-index: 2;
    margin-top: -9.8rem;
    margin-bottom: 4rem;
}
.dept-reasons.dept-reasons--accent.section--bg-light .section-header {
    position: relative;
    z-index: 2;
    margin-top: -9.5rem;
    margin-bottom: 4rem;
}
/* speech bubble label above the heading */
.dept-reasons__bubble {
    display: inline-block;
    background: var(--color-primary);
    color: var(--color-white);
    font-size: var(--fs-base);
    font-weight: 700;
    padding: .1rem 1.4rem;
    border-radius: var(--radius-full);
    position: relative;
    margin-bottom: .75rem;
}
/* downward pointing tail */
.dept-reasons__bubble::after {
    content: '';
    position: absolute;
    bottom: -10px;
    left: 50%;
    transform: translateX(-50%);
    border-left: 8px solid transparent;
    border-right: 8px solid transparent;
    border-top: 10px solid var(--color-primary);
}
.dept-reason {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--sp-2xl);
    align-items: flex-start;
    margin-bottom: var(--sp-3xl);
}
.dept-reason:last-child { margin-bottom: 0; }
.dept-reason--img-left  { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.dept-reason--img-right { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.dept-reason__num {
    display: flex;
    align-items: baseline;
    gap: 1rem;
    margin-bottom: var(--sp-sm);
    line-height: 1;
    font-size: 2rem;
    font-weight: 600;
    color: var(--color-primary);
    font-family: 'Montserrat', sans-serif;
    letter-spacing: 0.15rem;
}
.dept-reason__dots {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    flex-shrink: 0;
    line-height: 1;
    color: inherit;
}
.dept-reason__dots span {
    display: inline-block;
    width: .28rem;
    height: .28rem;
    border-radius: 9999px;
    background: currentColor;
    opacity: .35;
    line-height: 1;
}
.dept-reason__dots span:nth-child(1) { opacity: 1; }
.dept-reason__dots span:nth-child(2) { opacity: .6; }
.dept-reason__dots span:nth-child(3) { opacity: .35; }
.dept-reason__title {
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
    margin-bottom: var(--sp-md);
    line-height: 1.6;
    padding-bottom: var(--sp-md);
    border-bottom: 2px solid var(--color-border);
    font-family: inherit;
}
.dept-reason__link {
    display: flex;
    align-items: center;
    justify-content: space-around;
    width: min(100%, 320px);
    margin: var(--sp-md) auto 0;
    padding: .85rem 1.25rem;
    background: var(--color-primary);
    color: var(--color-white);
    font-size: var(--fs-sm);
    font-weight: 700;
    border-radius: var(--radius-sm);
    border: 2px solid var(--color-primary);
    text-decoration: none;
    transition: background var(--tr), color var(--tr), border-color var(--tr);
}
.dept-reason__link:hover {
    background: var(--color-white);
    color: var(--color-primary);
    opacity: 1;
}
.dept-reason__img,
.dept-reason__image {
    width: 100%;
    max-width: 710px;
}
.dept-reason--img-left .dept-reason__img,
.dept-reason--img-left .dept-reason__image {
    justify-self: start;
}
.dept-reason--img-right .dept-reason__img,
.dept-reason--img-right .dept-reason__image {
    justify-self: end;  
}
.dept-reason__img img,
.dept-reason__image img {
    width: 100%;
    border-radius: var(--radius-md);
    aspect-ratio: 710 / 439;
    object-fit: cover;
    display: block;
}
.dept-reason__img--border {
    --dept-reason-img-border: red;
}
.dept-reason__img--border img {
    /* border: solid 8px var(--dept-reason-img-border); */
}

.img--border-red {
    border: solid 8px red;
}

/* ── 診療の流れ（green bg） ── */
.dept-flow {
    padding-bottom: var(--sp-3xl);
    overflow: hidden;
    padding-top: 5rem;
    --dept-flow-sep-color: var(--color-border);
}
.dept-flow__card {
    background: var(--color-white);
    border-radius: 20px;
    padding: var(--sp-2xl) var(--sp-3xl);
    width: calc(100% + 44vw - 50% + var(--container-pad));
}
.dept-flow__list {
    display: flex;
    flex-direction: column;
    gap: 0;
}
.dept-flow__item {
    display: grid;
    grid-template-columns: 56px 1fr;
    gap: 0 var(--sp-3xl);
    align-items: start;
    padding-bottom: var(--sp-xl);
    position: relative;
}
.dept-flow__item:last-child { padding-bottom: 0; }

/* segmented vertical line: only in the gap between circles */
.dept-flow__item:not(:last-child)::after {
    content: '';
    position: absolute;
    left: 35px;        /* half of 56px circle */
    top: 80px;         /* bottom edge of current circle */
    bottom: 10px;         /* top edge of next circle (via padding-bottom) */
    width: 1px;
    background: var(--color-primary);
    z-index: 0;
}
.dept-flow__list {
    position: relative;
}

.dept-flow__num {
    width: 70px;
    height: 70px;
    border-radius: 50%;
    border: 1px solid var(--color-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--fs-xl);
    font-weight: 500;
    color: var(--color-primary);
    font-family: 'Montserrat', sans-serif;
    background: var(--color-white);
    position: relative;
    z-index: 1;
}
.dept-flow__connector { display: none; }
.dept-flow__body {
    position: relative;
    padding-bottom: var(--sp-lg);
    border-bottom: none;
}
.dept-flow__body::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 2px;
    background: repeating-linear-gradient(
        to right,
        var(--dept-flow-sep-color) 0 2px,
        transparent 2px 10px
    );
}
.dept-flow__item:last-child .dept-flow__body::after { display: none; }
.dept-flow__step-title {
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
    margin-bottom: 1rem;
}
.dept-flow__step-text {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
    font-weight: 400;
}
.dept-flow__step-text + .dept-flow__step-text {
    margin-top: .6em;
}
.dept-flow--accent .dept-flow__step-text a[href^="tel:"] {
    color: #44A06B;
    text-decoration: underline;
    text-underline-offset: .18em;
    text-decoration-thickness: 1px;
}
.dept-flow--accent .dept-flow__step-text a[href^="tel:"]:hover {
    color: var(--color-accent);
    opacity: 1;
}

/* ── FAQ アコーディオン ── */
.dept-faq {
    background: var(--color-white);
    padding-block: 7rem 7rem;
}
.dept-faq__list {
    display: flex;
    flex-direction: column;
    max-width: 960px;
    margin-inline: auto 0;
    margin-bottom: 1rem;
}
.dept-faq__item {
    border-bottom: 2px solid var(--color-border);
}
.dept-faq__item:first-child {
    border-top: 2px solid var(--color-border);
}
.dept-faq__question {
    display: flex;
    align-items: center;
    gap: var(--sp-lg);
    padding: var(--sp-md) var(--sp-sm);
    cursor: pointer;
    user-select: none;
    transition: background var(--tr);
    list-style: none;
}
.dept-faq__question:hover { background: var(--color-bg-light); }
.dept-faq__q-icon {
    font-size: var(--fs-md);
    font-weight: 900;
    color: var(--color-primary);
}
.dept-faq__q-text {
    flex: 1;
    font-size: var(--fs-md);
    font-weight: 500;
    color: var(--color-text);
    line-height: 1.5;
}
.dept-faq__toggle {
    font-size: var(--fs-lg);
    font-weight: 300;
    color: var(--color-primary);
    flex-shrink: 0;
    width: 26px;
    height: 26px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    line-height: 1;
}
.dept-faq__answer {
    display: none;
    padding: 0 var(--sp-xl) var(--sp-md) calc(25px + var(--sp-md) + var(--sp-sm));
    font-size: var(--fs-base);
    color: var(--color-text);
    line-height: 2;
}
.dept-faq__answer p + p {
    margin-top: 0.75em;
}
.dept-faq__answer.is-open { display: block; }

/* ── 問診票ダウンロード ── */
.dept-download {
    background: var(--color-bg-light);
    padding-top: var(--sp-2xl);
    border-bottom: 1px solid var(--color-border);
    margin-left: var(--sidebar-w);
    position: relative;
    z-index: 30;
    margin-top: -1px;
}
.dept-download__content {
    position: relative;
}
.dept-download__content .container {
    border-top: none;
    padding-top: var(--sp-2xl);
    position: relative;
    padding-bottom: var(--sp-2xl);
}
.dept-download__content .container::before {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 96%;
    height: 2px;
    background: repeating-linear-gradient(
        to right,
        #44A06B 0 3px,
        transparent 2px 10px
    );
}
.dept-download__inner {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-lg);
    align-items: start;
    width: 100%;
    max-width: var(--container-max);
    margin-inline: auto;
}
.dept-download__eyebrow {
    font-size: var(--fs-xs);
    font-weight: 800;
    letter-spacing: .15em;
    color: var(--color-primary);
    margin-bottom: .5rem;
}
.dept-download__title {
    font-size: var(--fs-2xl);
    font-weight: 700;
    color: var(--color-text);
    margin-bottom: var(--sp-lg);
}
.dept-download__note {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 1.8;
    margin-bottom: .4rem;
}
.dept-download__card {
    background: var(--color-white);
    border-radius: var(--radius-md);
    overflow: hidden;
    margin-bottom: var(--sp-md);
    width: 100%;
    max-width: 690px;
    padding: var(--sp-sm) var(--sp-xl);
}
.dept-download__list {
    display: flex;
    flex-direction: column;
}
.dept-download__list li {
    display: flex;
    align-items: stretch;
}
.dept-download__link {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    padding: .5rem 0;
    font-size: var(--fs-base);
    color: var(--color-primary);
    transition: background var(--tr);
    gap: 0;
    width: 100%;
    line-height: 2;
}
.dept-download__link::before {
    content: '•';
    flex-shrink: 0;
    color: var(--color-primary);
    font-size: 1.1em;
    line-height: 1;
    margin-right: .75rem;
}
.dept-download__list li:last-child .dept-download__link { border-bottom: none; }
.dept-download__link:hover { background: var(--color-bg-green); opacity: 1; }
.dept-download__link-name { flex: none; }
.dept-download__pdf-size {
    font-size: var(--fs-base);
    color: var(--color-primary);
    white-space: nowrap;
    flex-shrink: 0;
    margin-left: auto;
    text-align: right;
}
.dept-download__reader {
    display: flex;
    align-items: center;
    gap: var(--sp-md);
}
.dept-download__reader-note {
    font-size: var(--fs-sm);
    color: var(--color-text-sub);
    line-height: 1.7;
    flex: 1;
}
.dept-download__reader-note a { color: var(--color-primary); text-decoration: none; }
.dept-download__reader-btn { flex-shrink: 0; }
.dept-download__reader-btn img {
    width: 158px;
    height: auto;
}
.dept-download__breadcrumb {
    padding-top: var(--sp-sm);
    padding-bottom: var(--sp-sm);
}

/* ================================================================
   38-SP. 診療科目詳細 レスポンシブ
================================================================ */
@media (max-width: 768px) {
    /* hero */
    .page-hero--dept { padding-block: var(--sp-lg) var(--sp-md); }
    .page-hero--dept .page-hero__inner { min-height: 120px; }
    .page-hero__icon { width: 100px; height: 100px; }
    .page-hero--dept .page-hero__title { font-size: var(--fs-xl); }
    .page-hero--dept .page-hero__en { font-size: var(--fs-xs); }

    /* intro */
    .dept-intro__inner {
        gap: var(--sp-md);
        padding-bottom: var(--sp-xl);
    }
    .dept-intro__top {
        grid-template-columns: 1fr;
        gap: var(--sp-md);
        margin-block: var(--sp-xl) var(--sp-sm);
    }
    .dept-intro__catch { font-size: var(--fs-lg); line-height: 1.8; text-align: center; padding-left: .5rem; }
    .dept-intro__body { font-size: var(--fs-sm); line-height: 1.8; }

    /* symptoms */
    .dept-symptoms {
        padding: var(--sp-md);
        border-width: 2px;
    }
    .dept-symptoms__title { font-size: var(--fs-sm); padding-bottom: .5rem; }
    .dept-symptoms__grid { grid-template-columns: 1fr 1fr; gap: .3rem .5rem; }
    .dept-symptoms__grid li { font-size: var(--fs-xs); padding-bottom: .4rem; }
    .dept-symptoms__grid-item--wide { grid-column: auto; }

    /* reasons */
    .dept-reasons { padding-block: var(--sp-lg); padding-bottom: var(--sp-xl); }
    .dept-reasons.section--bg-green .section-header,
    .dept-reasons.dept-reasons--accent.section--bg-light .section-header {
        margin-top: -7.5rem;
        margin-bottom: var(--sp-xl);
    }
    .dept-reasons__bubble { font-size: var(--fs-sm); padding: .1rem 1rem; }
    .dept-reason {
        grid-template-columns: 1fr;
        gap: var(--sp-md);
        margin-bottom: var(--sp-xl);
    }
    .dept-reason__body  { order: 1; padding-top: 0; }
    .dept-reason__img   { order: 2; }
    .dept-reason__text  { order: 1; }
    .dept-reason__image { order: 2; }
    .dept-reason__num { font-size: 1.5rem; gap: .5rem; }
    .dept-reason__title { font-size: var(--fs-base); padding-bottom: var(--sp-sm); margin-bottom: var(--sp-sm); }
    .dept-reason__text { font-size: var(--fs-sm); line-height: 1.8; }
    .dept-reason__link { width: 100%; max-width: 100%; font-size: var(--fs-xs); padding: .7rem 1rem; }

    /* flow */
    .dept-flow { padding-top: 0px; padding-bottom: var(--sp-xl); }
    .dept-flow__card {
        padding: var(--sp-md);
        margin-right: 0;
        width: 100%;
        border-radius: var(--radius-sm);
    }
    .dept-flow__item { grid-template-columns: 40px 1fr; gap: 0 var(--sp-md); }
    .dept-flow__num { width: 40px; height: 40px; font-size: var(--fs-sm); }
    .dept-flow__item:not(:last-child)::after { left: 19px; top: 40px; bottom: 20px; }
    .dept-flow__step-title { font-size: var(--fs-base); margin-bottom: .5rem; }
    .dept-flow__step-text { font-size: var(--fs-sm); line-height: 1.8; }
    .dept-flow__body { padding-bottom: var(--sp-md); }

    /* faq */
    .dept-faq { padding-block: var(--sp-xl); }
    .dept-faq__question { gap: var(--sp-sm); padding: var(--sp-sm) var(--sp-xs); }
    .dept-faq__q-icon { font-size: var(--fs-sm); }
    .dept-faq__q-text { font-size: var(--fs-sm); }
    .dept-faq__toggle { width: 20px; height: 20px; font-size: var(--fs-base); }
    .dept-faq__answer { padding: 0 var(--sp-sm) var(--sp-sm) calc(20px + var(--sp-sm)); font-size: var(--fs-sm); line-height: 1.8; }

    /* download */
    .dept-download { margin-left: 0; }
    .dept-download__inner { grid-template-columns: 1fr; gap: var(--sp-md); }
    .dept-download__content .container {
        padding-top: var(--sp-lg);
        padding-bottom: var(--sp-lg);
    }
    .dept-download__title {
        font-size: var(--fs-lg);
        margin-bottom: var(--sp-md);
    }
    .dept-download__note {
        font-size: var(--fs-xs);
    }
    .dept-download__card {
        padding: var(--sp-sm) var(--sp-md);
        overflow: visible;
        max-width: 100%;
    }
    .dept-download__link {
        display: block;
        font-size: var(--fs-xs);
        line-height: 1.6;
        padding: var(--sp-xs) 0;
    }
    .dept-download__link::before {
        display: inline-block;
        vertical-align: baseline;
    }
    .dept-download__link-name {
        display: inline;
        font-size: var(--fs-xs);
        word-break: break-word;
        overflow-wrap: break-word;
    }
    .dept-download__pdf-size {
        display: inline;
        font-size: var(--fs-xs);
        margin-left: .4em;
        white-space: nowrap;
    }
    .dept-download__reader {
        flex-direction: column;
        align-items: flex-start;
        gap: var(--sp-sm);
    }
    .dept-download__reader-note {
        font-size: var(--fs-xs);
    }
    .dept-download__reader-btn img {
        width: 120px;
    }
}

@media (max-width: 480px) {
    .dept-symptoms__grid { grid-template-columns: 1fr; }
    .dept-symptoms__grid-item--wide { grid-column: auto; }
}

/* ================================================================
   39. 小児科：予防接種テーブル
================================================================ */
.dept-vaccination {
    padding: 5rem;
}

.dept-vaccination__lead {
    font-size: var(--fs-sm);
    color: var(--color-text);
    line-height: 1.85;
    margin-bottom: var(--sp-lg);
    max-width: 760px;
}
.dept-vaccination__table-wrap {
    overflow-x: auto;
    border-radius: var(--radius-md);
    border: 2px solid var(--color-primary-light);
    margin-bottom: 1rem;
}
.dept-vaccination__table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--fs-sm);
}
.dept-vaccination__table td {
    padding: .85rem var(--sp-md);
    border: 1px solid var(--color-primary-light);
    vertical-align: middle;
    color: var(--color-text);
    line-height: 1.5;
}
/* columns 1 & 3 — vaccine name, green bg */
.dept-vaccination__name {
    background: var(--color-bg-green);
    font-weight: 700;
    width: 32%;
}
/* columns 2 & 4 — price + dose, white bg */
.dept-vaccination__detail {
    background: var(--color-white);
    width: 18%;
    text-align: center;
}
/* dose note sits on its own line, smaller */
.dept-vaccination__detail span {
    display: block;
    font-size: var(--fs-xs);
    color: var(--color-text-sub);
    margin-top: .2rem;
}

@media (max-width: 768px) {
    .dept-vaccination__table { min-width: 0; }
    /* stack each pair: name full-width, detail full-width below */
    .dept-vaccination__table tr {
        display: grid;
        grid-template-columns: 1fr 1fr;
        border-bottom: 2px solid var(--color-primary-light);
    }
    .dept-vaccination__table tr:last-child { border-bottom: none; }
    .dept-vaccination__table td {
        padding: .6rem var(--sp-sm);
        font-size: var(--fs-xs);
        border: none;
        border-right: 1px solid var(--color-primary-light);
    }
    .dept-vaccination__table td:nth-child(2),
    .dept-vaccination__table td:nth-child(4) {
        border-right: none;
    }
    .dept-vaccination__name { width: auto; }
    .dept-vaccination__detail { width: auto; }
}

/* ================================================================
   40. リハビリ：設備紹介セクション
================================================================ */
.dept-facility {
    background: var(--color-bg-green-dark);
    padding-bottom: var(--sp-lg);
    position: relative;
}
/* SVG S-wave — light green (#EFF7F2) flows into darker green (#E1ECE7) */
.dept-facility::before {
    content: '';
    display: block;
    width: 100%;
    height: 500px;
    background: url('../images/green-sliding-arc.png');
    margin-bottom: var(--sp-xl);
}
.dept-facility__lead-wrap {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--sp-sm);
    margin-bottom: var(--sp-2xl);
    text-align: center;
    margin-top: 1.5rem;
}
.dept-facility__lead-icon {
    width: 94px;
    height: 94px;
    object-fit: contain;
}
.dept-facility__lead-text {
    font-size: var(--fs-xl);
    font-weight: 500;
    color: var(--color-text);
    line-height: 1.875;
}
.dept-facility__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--sp-lg);
    margin-bottom: var(--sp-2xl);
}
.dept-facility__card {
    background: var(--color-white);
    border-radius: var(--radius-md);
    border: 1px solid var(--color-primary-light);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.dept-facility__img-wrap {
    background: var(--color-white);
    padding: var(--sp-lg);
    display: flex;
    align-items: center;
    justify-content: center;
    aspect-ratio: 4 / 3;
    /* no border-bottom — image flows into info */
}
.dept-facility__img-wrap img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}
/* NO border between image and info — removed */
.dept-facility__info {
    padding: var(--sp-md);
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: .4rem;
}
.dept-facility__name {
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
    line-height: 1.875;
}
.dept-facility__desc {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
}
/* 6th card — illustration, fully transparent, no border */
.dept-facility__card--illust {
    background: transparent;
    border: none;
    box-shadow: none;
}
.dept-facility__img-wrap--illust {
    background: transparent;
    aspect-ratio: unset;
    padding: 0;
    align-items: flex-end;
    justify-content: center;
    height: 100%;
}
.dept-facility__img-wrap--illust img {
    max-height: 260px;
    object-fit: contain;
    mix-blend-mode: multiply;
}

/* Rehab-only split between reasons and facility
   Keep the wave inside the reason section so the facility block starts beneath it. */
.dept-reasons--rehab.section--bg-green {
    position: relative;
    isolation: isolate;
    overflow: visible;
    z-index: 2;
}
.dept-reasons--rehab.section--bg-green::before {
    content: none;
}
.dept-reasons--rehab.section--bg-green::after {
    content: '';
    position: absolute;
    left: 50%;
    bottom: -30px;
    width: 100vw;
    height: clamp(20rem, 28vw, 30rem);
    background: url('../images/green-sliding-arc.png') center bottom / 100% 100% no-repeat;
    transform: translateX(-50%);
    z-index: 0;
    pointer-events: none;
}
.dept-reasons--rehab > .container {
    position: relative;
    z-index: 1;
}
.dept-facility--rehab {
    position: relative;
    z-index: 1;
}
.dept-facility--rehab::before {
    content: none;
}

@media (max-width: 768px) {
    .dept-facility__grid {
        grid-template-columns: repeat(2, 1fr);
        gap: var(--sp-md);
    }
    .dept-facility__card--illust { display: none; }
    .dept-facility::before { height: 50px; }
    .dept-reasons--rehab.section--bg-green::after {
        height: clamp(10rem, 30vw, 14rem);
        bottom: 0px;
    }
    .dept-facility--rehab {
        margin-top: -2rem;
        padding-top: var(--sp-xl);
    }
    .dept-facility--rehab::before {
        content: none;
    }
}
@media (max-width: 480px) {
    .dept-facility__grid { grid-template-columns: 1fr; }
}

/* ================================================================
   41. 専門外来共通：アクセントカラー（オレンジ）テーマ
   スコープ: .dept-reasons--accent / .dept-flow--accent / .dept-faq--accent
================================================================ */

/* orange catch copy */
.dept-intro__catch--accent,
.dept-intro__catch--accent p { color: var(--color-accent); }

/* outpatient hero — warm beige bg instead of green */
.hero--outpatient-smoking.page-hero--dept,
.hero--outpatient-sas.page-hero--dept,
.page-hero--dept.hero--outpatient {
    background: #F6F4F1;
}
/* outpatient hero — en text and breadcrumb links use accent instead of primary */
.hero--outpatient-smoking.page-hero--dept .page-hero__en,
.hero--outpatient-sas.page-hero--dept .page-hero__en,
.page-hero--dept.hero--outpatient .page-hero__en {
    color: var(--color-accent);
}
.hero--outpatient-smoking ~ .page-hero__breadcrumb-bar .breadcrumb a,
.hero--outpatient-sas ~ .page-hero__breadcrumb-bar .breadcrumb a,
.hero--outpatient ~ .page-hero__breadcrumb-bar .breadcrumb a {
    color: var(--color-text-light);
}

/* orange bubble */
.dept-reasons__bubble--accent {
    background: var(--color-accent);
}
.dept-reasons__bubble--accent::after {
    border-top-color: var(--color-accent);
}

.dept-reason__num--accent { color: var(--color-accent); }
.dept-reasons--accent .dept-reason__title {
    border-bottom-color: #EBD5C9;
}
.dept-reasons--accent .dept-reason__dots {
    color: var(--color-accent);
}

/* orange flow bg */
.section--bg-accent { background: var(--color-accent); }

/* orange flow circle + vertical line */
.dept-flow--accent .dept-flow__num--accent {
    border-color: var(--color-accent);
    color: var(--color-accent);
}
.dept-flow--accent .dept-flow__list::before {
    background: var(--color-accent);
    opacity: .3;
    top: 28px;
    bottom: 28px;
}
.dept-flow--accent .dept-flow__item:not(:last-child)::after {
    background: color-mix(in srgb, var(--color-accent) 80%, var(--color-white));
}
.dept-flow--accent { --dept-flow-sep-color: #EBD5C9; }

/* orange FAQ Q icon + toggle +/- sign */
.dept-faq__q-icon--accent {
    border-color: var(--color-accent);
    color: var(--color-accent);
}
.dept-faq--accent .dept-faq__toggle {
    color: var(--color-accent);
}
.dept-faq--accent .dept-faq__item {
    border-bottom-color: color-mix(in srgb, var(--color-accent) 28%, var(--color-white));
}
.dept-faq--accent .dept-faq__item:first-child {
    border-top-color: color-mix(in srgb, var(--color-accent) 28%, var(--color-white));
}

/* orange section-header__en for treatment + faq */
.smoking-treatment .section-header__en,
.sas-treatment .section-header__en,
.aga-medication .section-header__en,
.gastro-exam .section-header__en,
.aesthetic-menu .section-header__en,
.dept-faq--accent .section-header__en {
    color: var(--color-accent);
}
/* white section-header text on colored bg flow sections */
.dept-flow .section-header__title,
.dept-flow--accent .section-header__title,
.section--bg-primary .section-header__title {
    color: var(--color-white);
}
.dept-flow .section-header__en,
.dept-flow--accent .section-header__en,
.section--bg-primary .section-header__en {
    color: rgba(255,255,255,.7);
}

/* ================================================================
   42. 禁煙外来：固有セクション
================================================================ */

/* ── こんな症状はありませんか？ ── */
.smoking-symptoms {
    background: var(--color-accent);
    text-align: center;
    margin-top: 2px;
}
.smoking-symptoms__head {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--sp-xs);
    margin-bottom: var(--sp-xl);
    padding-top: 3rem;
}
.smoking-symptoms__icon {
    width: 80px;
    height: 80px;
    object-fit: cover;
}
.smoking-symptoms__title {
    font-size: var(--fs-2xl);
    font-weight: 500;
    color: var(--color-white);
    letter-spacing: .1em;
}
.smoking-symptoms__grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: clamp(.75rem, 1.25vw, var(--sp-md));
    width: 100%;
    max-width: 100%;
    position: relative;
    left: auto;
    transform: none;
    padding-bottom: 5rem;
}
.smoking-symptoms__card {
    background: var(--color-white);
    border-radius: var(--radius-full);
    padding: var(--sp-lg) var(--sp-md);
    font-size: var(--fs-md);
    font-weight: 500;
    line-height: 27px;
    color: var(--color-text);
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    min-height: 90px;
    width: 100%;
}
/* even cards = rectangle with small radius */
.smoking-symptoms__card:nth-child(even) {
    border-radius: 8px;
}
.smoking-symptoms__card strong { color: var(--color-accent); }

/* pointed callout below orange section */
.smoking-symptoms__callout {
    background: #ffffff;
    position: relative;
    padding-block: var(--sp-lg);
    text-align: center;
}
.smoking-symptoms__callout::before {
    content: '';
    position: absolute;
    top: -1px;
    left: 50%;
    transform: translateX(-50%);
    border-left: 20px solid transparent;
    border-right: 20px solid transparent;
    border-top: 20px solid var(--color-accent);
}
.smoking-symptoms__callout-text {
    position: relative;
    font-size: var(--fs-2xl);
    font-weight: 500;
    color: var(--color-text);
    display: inline-block;
    letter-spacing: .1em;
    padding: .05rem .1rem 1rem;
    border-bottom: 0;
    background:
    linear-gradient(#F4E8E1, #F4E8E1) 0 0 / 100% calc(100% - .9rem) no-repeat;
    line-height: normal;
    margin-top: 1.5rem;
}
.smoking-symptoms__callout-text::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 2px;
    background: repeating-linear-gradient(
        to right,
        var(--color-accent) 0 3px,
        transparent 2px 10px
    );
}

/* ── 禁煙情報セクション共通 ── */
.smoking-info {
    padding-block: 3rem;
}
.smoking-info__block {
    /* margin-bottom: var(--sp-3xl); */
}
.smoking-info__block + .smoking-info__block {
    margin-top: clamp(var(--sp-xl), 3vw, var(--sp-3xl));
}
.smoking-info__block:last-child { margin-bottom: 0; }
.smoking-info__heading {
    font-size: var(--fs-xl);
    font-weight: 500;
    color: var(--color-text);
    margin-bottom: var(--sp-md);
    display: flex;
    align-items: center;
    gap: .6rem;
    margin-top: 1.5rem;
}
/* mastercard-style double circle before the heading */
.smoking-info__heading::before {
    content: '';
    display: inline-flex;
    flex-shrink: 0;
    width: 28px;
    height: 18px;
    position: relative;
    background: url('../images/dual-circle-orange.png') center / contain no-repeat;
}
.smoking-info__heading-dot { display: none; }
.sas-treatment__body .smoking-info__heading-dot {
    display: inline-flex;
    flex: 0 0 auto;
    width: 28px;
    height: 18px;
    background: url('../images/dual-circle-orange.png') center / contain no-repeat;
    font-size: 0;
    line-height: 0;
    color: transparent;
}
.smoking-info__lead {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    margin-bottom: var(--sp-lg);
    line-height: 32px;
}
.smoking-info__two-col {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-2xl);
    align-items: start;
}
.smoking-info__text p {
    font-size: var(--fs-base);
    line-height: 2;
    margin-bottom: var(--sp-md);
}
.smoking-info__img img {
    width: 100%;
    border-radius: var(--radius-md);
    /* aspect-ratio: 4/3; */
    object-fit: cover;
}

/* ── 禁煙メリットカード ── */
.smoking-benefits {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-md);
}
.smoking-benefits__card {
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    padding: var(--sp-lg);
}
.smoking-benefits__card--full { grid-column: 1 / -1; }
.smoking-benefits__title {
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
    margin-bottom: var(--sp-sm);
    padding-bottom: 1rem;
    border-bottom: 2px solid #EBD5C9;
    line-height: 30px;
}
.smoking-benefits__list {
    display: flex;
    flex-direction: column;
    gap: .4rem;
}
.smoking-benefits__list li {
    font-size: var(--fs-base);
    color: var(--color-text);
    line-height: 32px;
    padding-left: 1em;
    position: relative;
}
.smoking-benefits__list li::before {
    content: '・';
    position: absolute;
    left: 0;
}

/* ── 保険適用チェックリスト ── */
.smoking-checklist {
    background: var(--color-white);
    border: 4px solid #EBD5C9;
    border-radius: var(--radius-md);
    padding: var(--sp-xl);
    position: relative;
    margin-bottom: 1rem;
}
.smoking-checklist__header {
    font-size: var(--fs-lg);
    font-weight: 500;
    text-align: center;
    color: var(--color-text);
    margin-bottom: var(--sp-lg);
    padding-bottom: var(--sp-md);
    border-bottom: 2px solid #EBD5C9;
    line-height: 30px;
}
.smoking-checklist__list {
    display: flex;
    flex-direction: column;
    gap: var(--sp-sm);
    margin-bottom: var(--sp-lg);
}
.smoking-checklist__list li {
    font-size: var(--fs-base);
    color: var(--color-text);
    line-height: 32px;
    padding-left: 2em;
    position: relative;
    border-bottom: none;
    padding-bottom: 0.5rem;
}
.smoking-checklist__list li {
    position: relative;
    border-bottom: none;
    padding-bottom: .6rem;
}

.smoking-checklist__list li::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 2px;
    background: repeating-linear-gradient(
        to right,
        #EBD5C9 0 3px,
        transparent 2px 10px
    );
}
.smoking-checklist__list li:last-child::after {
    right: 11rem; /* stop before the illustration on the final item only */
}
/* checkbox icon — orange bordered box with checkmark inside */
.smoking-checklist__list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: .5em;
    width: 1.3em;
    height: 1.3em;
    background: url('../images/checkbox-icon-orange.png') center / contain no-repeat;
}
.smoking-checklist__note {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 32px;
}
.smoking-checklist__img-wrap {
    position: absolute;
    bottom: var(--sp-lg);
    right: var(--sp-lg);
    width: 120px;
}
.smoking-checklist__img-wrap img { width: 100%; }

/* ── 治療の内容 ── */
.smoking-treatment {
    padding-block: 3rem;
}
.smoking-treatment__layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    margin-bottom: var(--sp-xl);
    gap: var(--sp-2xl);
    align-items: start;
}
.smoking-treatment__text p {
    font-size: var(--fs-base);
    line-height: 2;
    margin-bottom: var(--sp-md);
}

/* medicine card — left title+desc / right image */
.smoking-treatment__medicine-card {
    border: 4px solid #EBD5C9;
    border-radius: var(--radius-md);
    overflow: hidden;
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: stretch;
    width: min(100%, 700px);
    min-height: 320px;
}
.smoking-treatment__medicine-left {
    padding: var(--sp-lg);
    display: flex;
    flex-direction: column;
    gap: var(--sp-sm);
    /* no right border */
}
.smoking-treatment__medicine-name {
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
    padding-bottom: .5rem;
    border-bottom: 2px solid #EBD5C9;
}
.smoking-treatment__medicine-desc {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
}
/* right — image with padding, no background, square */
.smoking-treatment__medicine-right {
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--sp-lg);
}
.smoking-treatment__medicine-right img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
}

/* ── SP ── */
@media (max-width: 768px) {
    /* Symptoms section */
    .smoking-symptoms__head { padding-top: var(--sp-lg); }
    .smoking-symptoms__icon { width: 50px; height: 50px; }
    .smoking-symptoms__title { font-size: var(--fs-lg); }
    .smoking-symptoms__grid { grid-template-columns: 1fr; gap: var(--sp-sm); padding-bottom: var(--sp-xl); }
    .smoking-symptoms__card { padding: var(--sp-sm); font-size: var(--fs-xs); min-height: auto; }
    .smoking-symptoms__callout-text {
        font-size: var(--fs-base);
        padding: var(--sp-sm) var(--sp-md);
        background-size: 100% 100%;
        background-position: 0 0;
    }

    /* Info section */
    .smoking-info { padding-block: var(--sp-lg); }
    .smoking-info__heading { font-size: var(--fs-base); }
    .smoking-info__lead { font-size: var(--fs-sm); line-height: 1.7; }
    .smoking-info__two-col { grid-template-columns: 1fr; gap: var(--sp-md); margin-bottom: 1rem; }
    .smoking-info__text p { font-size: var(--fs-sm); line-height: 1.8; }

    /* Benefits */
    .smoking-benefits { grid-template-columns: 1fr; }
    .smoking-benefits__card { padding: var(--sp-md); }
    .smoking-benefits__card--full { grid-column: auto; }
    .smoking-benefits__title { font-size: var(--fs-base); }
    .smoking-benefits__list li { font-size: var(--fs-sm); }

    /* Checklist */
    .smoking-checklist { padding: var(--sp-md); border-width: 2px; }
    .smoking-checklist__header { font-size: var(--fs-base); }
    .smoking-checklist__list li { font-size: var(--fs-sm); }
    .smoking-checklist__note { font-size: var(--fs-xs); line-height: 1.7; }
    .smoking-checklist__img-wrap { display: none; }
    .smoking-checklist__list li:last-child::after { right: 0; }

    /* Treatment */
    .smoking-treatment { padding-block: var(--sp-lg); }
    .smoking-treatment__layout { grid-template-columns: 1fr; gap: var(--sp-lg); }
    .smoking-treatment__text p { font-size: var(--fs-sm); line-height: 1.8; }
    .smoking-treatment__medicine-card { grid-template-columns: 1fr; border-width: 2px; min-height: auto; }
    .smoking-treatment__medicine-right { aspect-ratio: 16/9; }
    .smoking-treatment__medicine-left { border-right: none; border-bottom: 1px solid var(--color-border); padding: var(--sp-md); }
    .smoking-treatment__medicine-name { font-size: var(--fs-base); }
    .smoking-treatment__medicine-desc { font-size: var(--fs-sm); }
}
@media (max-width: 1200px) and (min-width: 769px) {
    .smoking-symptoms__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ================================================================
   SAS（睡眠時無呼吸症候群）専用スタイル
================================================================ */

/* ── 症状チェックボックス（smoking-checklist スタイルを流用） ── */
.sas-symptom-boxes {
    display: flex;
    flex-direction: column;
    gap: var(--sp-lg);
    margin-top: var(--sp-xl);
}
.sas-symptom-box {
    background: var(--color-white);
    border: 4px solid #EBD5C9;
    border-radius: var(--radius-md);
    padding: var(--sp-xl);
    margin-bottom: 1rem;
}
.sas-symptom-box__title {
    font-size: var(--fs-lg);
    font-weight: 500;
    text-align: center;
    color: var(--color-text);
    margin-bottom: var(--sp-lg);
    padding-bottom: var(--sp-md);
    border-bottom: 2px solid #EBD5C9;
    line-height: 30px;
}
.sas-symptom-box__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: var(--sp-2xl);
    row-gap: var(--sp-sm);
    align-items: start;
}
.sas-symptom-box__list li {
    font-size: var(--fs-base);
    color: var(--color-text);
    line-height: 32px;
    padding: 0 0 .6rem 2em;
    position: relative;
    min-width: 0;
}
.sas-symptom-box__list li::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 2px;
    background: repeating-linear-gradient(
        to right,
        #EBD5C9 0 3px,
        transparent 3px 10px
    );
}
.sas-symptom-box__list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: .5em;
    width: 1.3em;
    height: 1.3em;
    background: url('../images/checkbox-icon-orange.png') center / contain no-repeat;
}

/* ── 治療の内容（Treatment cards） ── */
.sas-treatment { background: var(--color-bg); }
.sas-treatment__lead {
    font-size: var(--fs-sm);
    line-height: 1.9;
    color: var(--color-text-sub);
    margin-bottom: var(--sp-2xl);
}
.sas-treatment__list {
    display: flex;
    flex-direction: column;
    gap: var(--sp-2xl);
    margin-bottom: 6rem;
}
.sas-treatment__item {
    display: grid;
    grid-template-columns: minmax(0, 473px) minmax(0, 1fr);
    gap: var(--sp-2xl);
    align-items: start;
    padding-bottom: 1rem;
}
.sas-treatment__img {
    border-radius: var(--radius-md);
    overflow: hidden;
    width: 100%;
    aspect-ratio: 473 / 293;
}
.sas-treatment__img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.sas-treatment__body {
    display: grid;
    grid-template-columns: 28px 1fr;
    column-gap: .5rem;
    row-gap: var(--sp-xs);
    align-items: start;
}
.sas-treatment__body > .smoking-info__heading-dot {
    grid-column: 1;
    grid-row: 1;
    align-self: center;
    margin-top: .15rem;
}
.sas-treatment__name {
    grid-column: 2;
    grid-row: 1;
    font-size: var(--fs-xl);
    font-weight: 700;
    color: var(--color-text);
    margin-bottom: 0;
    align-self: center;
}
.sas-treatment__tags {
    grid-column: 1 / -1;
    grid-row: 2;
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-xs);
    margin-bottom: var(--sp-md);
}
.sas-treatment__tag {
    display: inline-block;
    background: var(--color-accent);
    color: var(--color-white);
    font-size: var(--fs-sm);
    font-weight: 500;
    padding: 0.25em 0.9em;
    border-radius: 4px;
}
.sas-treatment__desc {
    grid-column: 1 / -1;
    grid-row: 3;
    font-size: var(--fs-base);
    line-height: 2;
    color: var(--color-text);
    margin-bottom: var(--sp-sm);
}
.sas-treatment__note {
    grid-column: 1 / -1;
    grid-row: 4;
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
}

/* ── 診療の流れ — sub-items (step 02 内の詳細) ── */
.dept-flow__sub-items {
    margin-top: var(--sp-md);
    display: flex;
    flex-direction: column;
    gap: var(--sp-md);
}

.dept-flow__sub-title {
    font-size: var(--fs-base);
    font-weight: 700;
    margin-bottom: 0.25em;
    line-height: 32px;
}
.dept-flow__sub-item p {
    font-size: var(--fs-base);
    line-height: 32px;
    color: var(--color-text-sub);
    margin: 0;
}

/* ── SAS SP ── */
@media (max-width: 768px) {
    /* Symptom boxes */
    .sas-symptom-boxes { gap: var(--sp-md); }
    .sas-symptom-box { padding: var(--sp-md); border-width: 2px; }
    .sas-symptom-box__title { font-size: var(--fs-base); }
    .sas-symptom-box__list { grid-template-columns: 1fr; }
    .sas-symptom-box__list li { font-size: var(--fs-sm); }

    /* Treatment section */
    .sas-treatment__lead { font-size: var(--fs-xs); margin-bottom: var(--sp-lg); }
    .sas-treatment__list { gap: var(--sp-xl); margin-bottom: var(--sp-xl); }
    .sas-treatment__item { grid-template-columns: 1fr; gap: var(--sp-md); }
    .sas-treatment__img { aspect-ratio: 16/9; }
    .sas-treatment__name { font-size: var(--fs-base); }
    .sas-treatment__tag { font-size: var(--fs-xs); }
    .sas-treatment__desc { font-size: var(--fs-sm); line-height: 1.7; }
    .sas-treatment__note { font-size: var(--fs-xs); }

    /* Flow sub-items */
    .dept-flow__sub-items { gap: var(--sp-md); }
    .dept-flow__sub-item p { font-size: var(--fs-sm); line-height: 1.7; }
    .dept-flow__sub-title { font-size: var(--fs-sm); }
}

/* ================================================================
   AGA（男性型脱毛症）専用スタイル
================================================================ */

/* ── チェックリスト 2カラム（左7 / 右3+画像） ── */
.aga-checklist__two-col {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: var(--sp-2xl);
    align-items: stretch;
}
.aga-checklist__col {
    display: flex !important;
    flex-direction: column !important;
    margin-bottom: 0 !important;
}

/* right column: list + image stacked, image pushed to bottom */
.aga-checklist__right {
    display: flex;
    flex-direction: column;
    height: 100%;
}
.aga-checklist__img {
    margin-top: auto;
    margin-left: auto;
    padding-top: var(--sp-lg);
    width: 100px;
}
.aga-checklist__img img {
    width: 100%;
    display: block;
}
/* center checkbox vertically — override smoking-checklist top:.1em */
.aga-checklist__col li::before {
    top: 50%;
    transform: translateY(-50%);
}

/* ── 治療薬カード ── */
.aga-medication { background: var(--color-bg); }
.aga-medication__lead {
    font-size: var(--fs-base);
    line-height: 2;
    margin-bottom: var(--sp-2xl);
}
.aga-medication__note {
    display: block;
    margin-top: var(--sp-xs);
    color: var(--color-text-sub);
    font-size: var(--fs-base);
}
.aga-medication__cards {
    display: grid;
    grid-template-columns: repeat(2, minmax(320px, 700px));
    justify-content: center;
    gap: var(--sp-xl);
    margin-bottom: var(--sp-md);
}
.aga-medication__card {
    border: 4px solid #EBD5C9;
    border-radius: var(--radius-md);
    display: grid;
    grid-template-columns: 1fr 1fr;
    overflow: hidden;
    min-height: 320px;
}
.aga-medication__card-body {
    padding: var(--sp-lg) var(--sp-sm) var(--sp-lg) var(--sp-lg);
    display: flex;
    flex-direction: column;
    gap: var(--sp-sm);
}
.aga-medication__card-name {
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
    padding-bottom: var(--sp-sm);
    border-bottom: 2px solid #EBD5C9;
}
.aga-medication__card-desc {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
}
.aga-medication__card-img {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--sp-lg) var(--sp-lg) var(--sp-lg) var(--sp-md);
}
.aga-medication__card-img img {
    width: 100%;
    max-height: 240px;
    object-fit: contain;
    display: block;
}

/* ── 安全性と注意点 ── */
.aga-safety {
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    padding: var(--sp-md) var(--sp-md);
    display: grid;
    grid-template-columns: 145px 1fr;
    gap: var(--sp-sm);
    align-items: center;
    margin-bottom: 3rem;
    margin-top: 1.5rem;
}
.aga-safety__left {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
}
.aga-safety__icon {
    width: 36px;
    height: 32px;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    flex-shrink: 0;
}
.aga-safety__icon img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: contain;
}
.aga-safety__title {
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
}
.aga-safety__right {
    padding-left: var(--sp-xs);
}
.aga-safety__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0;
}
.aga-safety__list li {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
    padding-left: 1em;
    position: relative;
}
.aga-safety__list li::before {
    content: '・';
    position: absolute;
    left: 0;
}

/* ── AGA — outpatient hero accent ── */
.hero--outpatient-aga.page-hero--dept { background: #F6F4F1; }
.hero--outpatient-aga.page-hero--dept .page-hero__en { color: var(--color-accent); }
.hero--outpatient-aga ~ .page-hero__breadcrumb-bar .breadcrumb a { color: var(--color-text-light); }

/* ── AGA SP ── */
@media (max-width: 768px) {
    /* Checklist */
    .aga-checklist__two-col { grid-template-columns: 1fr; }
    .aga-checklist__img { display: none; }
    .aga-checklist__col li { font-size: var(--fs-sm); }

    /* Medication cards */
    .aga-medication__lead { font-size: var(--fs-sm); line-height: 1.8; }
    .aga-medication__note { font-size: var(--fs-xs); }
    .aga-medication__cards { 
        grid-template-columns: 1fr !important; 
        gap: var(--sp-md);
        max-width: 100%;
    }
    .aga-medication__card { 
        grid-template-columns: 1fr !important; 
        grid-template-rows: auto auto;
        min-height: auto; 
        border-width: 2px;
        max-width: 100%;
    }
    .aga-medication__card-body {
        border-right: none;
        border-bottom: 1px solid #EBD5C9;
        padding: var(--sp-md);
    }
    .aga-medication__card-name { font-size: var(--fs-base); }
    .aga-medication__card-desc { font-size: var(--fs-sm); line-height: 1.7; }
    .aga-medication__card-img {
        /*aspect-ratio: 4/3;*/
        padding: var(--sp-md);
        max-height: 200px;
    }
    .aga-medication__card-img img {
        max-height: 100%;
        width: auto;
        margin: 0 auto;
    }

    /* Safety */
    .aga-safety { grid-template-columns: 1fr; padding: var(--sp-md); }
    .aga-safety__left { flex-direction: row; gap: var(--sp-sm); align-items: center; }
    .aga-safety__title { font-size: var(--fs-base); }
    .aga-safety__right { padding-left: 0; padding-top: var(--sp-sm); }
    .aga-safety__list li { font-size: var(--fs-sm); line-height: 1.7; }
}

/* ── ED — outpatient hero accent ── */
.hero--outpatient-ed.page-hero--dept { background: #F6F4F1; }
.hero--outpatient-ed.page-hero--dept .page-hero__en { color: var(--color-accent); }
.hero--outpatient-ed ~ .page-hero__breadcrumb-bar .breadcrumb a { color: var(--color-text-light); }

/* ── ED — cause cards ── */
.ed-cause__cards {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-md);
    margin-top: var(--sp-xl);
    margin-bottom: 1rem;
}
.ed-cause__card {
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    padding: var(--sp-lg);
    display: flex;
    flex-direction: column;
}
.ed-cause__card-title {
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
    padding-bottom: var(--sp-sm);
    border-bottom: 2px solid #EBD5C9;
    margin-bottom: var(--sp-md);
}
.ed-cause__card-desc {
    flex: 1;
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
    margin-bottom: var(--sp-lg);
}
.ed-cause__card-sub {
    font-size: var(--fs-base);
    font-weight: 500;
    color: var(--color-text);
    margin-bottom: var(--sp-xs);
}
.ed-cause__dots {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    flex-shrink: 0;
    line-height: 1;
    color: var(--color-accent);
    margin-bottom: var(--sp-sm);
}
.ed-cause__dots span {
    display: inline-block;
    width: .28rem;
    height: .28rem;
    border-radius: 9999px;
    background: currentColor;
    opacity: .35;
    line-height: 1;
}
.ed-cause__dots span:nth-child(1) { opacity: 1; }
.ed-cause__dots span:nth-child(2) { opacity: .6; }
.ed-cause__dots span:nth-child(3) { opacity: .35; }
.ed-cause__dots[aria-hidden="true"] {
    font-size: 0;
}
.ed-cause__pills {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.3rem;
}
.ed-cause__pills li {
    background: var(--color-white);
    border-radius: var(--radius-sm);
    padding: .8rem 0.25rem;
    font-size: 0.875rem;
    color: var(--color-text);
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 2em;
    line-height: 1.3;
}
.ed-safety {
    margin-top: 3rem;
    margin-bottom: 0rem;
}

/* ── ED SP ── */
@media (max-width: 768px) {
    .ed-cause__cards { grid-template-columns: 1fr; gap: var(--sp-md); }
    .ed-cause__card { padding: var(--sp-md); }
    .ed-cause__card-title { font-size: var(--fs-base); }
    .ed-cause__card-desc { font-size: var(--fs-sm); line-height: 1.7; margin-bottom: var(--sp-md); }
    .ed-cause__card-sub { font-size: var(--fs-sm); }
    .ed-cause__pills { gap: .25rem; }
    .ed-cause__pills li { font-size: var(--fs-xs); padding: .4rem .8rem; }
}

/* ════════════════════════════════════════════
   消化器内科
   ════════════════════════════════════════════ */

/* ── hero accent ── */
.hero--outpatient-gastroenterology.page-hero--dept { background: #F6F4F1; }
.hero--outpatient-gastroenterology.page-hero--dept .page-hero__en { color: var(--color-accent); }
.hero--outpatient-gastroenterology ~ .page-hero__breadcrumb-bar .breadcrumb a { color: var(--color-text-light); }

.hero--outpatient-med-check.page-hero--dept { background: #F6F4F1; }
.hero--outpatient-med-check.page-hero--dept .page-hero__en { color: var(--color-accent); }
.hero--outpatient-med-check ~ .page-hero__breadcrumb-bar .breadcrumb a { color: var(--color-text-light); }

.hero--outpatient-home-med.page-hero--dept { background: #F6F4F1; }
.hero--outpatient-home-med.page-hero--dept .page-hero__en { color: var(--color-accent); }
.hero--outpatient-home-med ~ .page-hero__breadcrumb-bar .breadcrumb a { color: var(--color-text-light); }

/* ── Aesthetic Medicine — hero accent ── */
.hero--aesthetic-medicine.page-hero--dept { background: #F6F4F1; }
.hero--aesthetic-medicine.page-hero--dept .page-hero__en { color: var(--color-accent); }
.hero--aesthetic-medicine ~ .page-hero__breadcrumb-bar .breadcrumb a { color: var(--color-text-light); }

/* ── Aesthetic Medicine — treatment menu tabs ── */
.aesthetic-menu { background: #fff; }

.aesthetic-tabs {
    display: flex;
    flex-direction: column;
}
.aesthetic-tabs__header {
    position: relative;
    display: grid;
    grid-template-columns: 1fr 1fr;
    border-radius: var(--radius-md) var(--radius-md) 0 0;
    background: #F7F4F2;
    overflow: hidden;
    margin-bottom: 0;
}
.aesthetic-tabs__header::before {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: 1rem;
    transform: translateX(-50%);
    background: #fff;
    pointer-events: none;
    z-index: 3;
    border-right:4px solid #F7F4F2;
    border-left: 4px solid #F7F4F2;
}
.aesthetic-tabs__btn {
    background: #fff;
    border-top: 4px solid #F7F4F2;
    border-left: 4px solid #F7F4F2;
    border-right: 4px solid #F7F4F2;
    padding: 1rem var(--sp-md);
    font-size: var(--fs-lg);
    font-weight: 500;
    color: #4A4A4A;
    cursor: pointer;
    transition: background .2s, color .2s;
    position: relative;
    z-index: 2;
}
.aesthetic-tabs__btn.is-active {
    background: #F7F4F2;
}

.aesthetic-tabs__panel {
    display: none;
    background: #F7F4F2;
    border-radius: 0 0 var(--radius-md) var(--radius-md);
    padding: var(--sp-xl);
}
.aesthetic-tabs__panel.is-active { display: block; }

.aesthetic-section-divider {
    width: 100%;
    height: 2px;
    margin-bottom: 3rem;
    background: repeating-linear-gradient(
        to right,
        #E38352 0 3px,
        transparent 2px 10px
    );
}

/* Concern buttons */
.aesthetic-concern__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--sp-xs);
}
.aesthetic-concern__btn {
    background: #fff;
    border: 1px solid #EBD5C9;
    border-radius: var(--radius-sm);
    padding: .75rem var(--sp-md);
    font-size: var(--fs-base);
    font-weight: 400;
    color: var(--color-text);
    cursor: pointer;
    text-align: left;
    transition: background .2s, border-color .2s, color .2s;
}
.aesthetic-concern__btn:hover,
.aesthetic-concern__btn.is-active {
    background: #ebd5c8;
    border-color: #ebd5c8;
    color: #363533;
}

@media (max-width: 768px) {
    .aesthetic-concern__grid { grid-template-columns: repeat(2, 1fr); }
    .aesthetic-concern__btn { padding: .6rem var(--sp-sm); font-size: var(--fs-xs); }
}

/* ── Aesthetic Medicine — treatment reveal panel ── */
.aesthetic-treatment-reveal {
    position: relative;
    margin-top: var(--sp-lg);
    background: #ebd5c8;
    border-radius: var(--radius-md);
    padding: var(--sp-md);
}
/* Speech-bubble upward arrow — position driven by JS via --arrow-x */
.aesthetic-treatment-reveal::before {
    content: '';
    position: absolute;
    top: -10px;
    left: var(--arrow-x, 50%);
    transform: translateX(-50%);
    transition: left .2s ease;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 10px solid #ebd5c8;;
}
.aesthetic-treatment__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: .5rem;
}
.aesthetic-treatment__btn {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-xs);
    background: #fff;
    border: none;
    border-radius: var(--radius-sm);
    padding: .75rem 1rem;
    font-size: var(--fs-base);
    font-weight: 500;
    color: #4A4A4A;
    text-decoration: none;
    transition: background .2s, color .2s;
}
/* image-based treatment arrow: keep the existing motion, swap the CSS chevron for the asset */
.aesthetic-treatment__btn .aesthetic-anchor-nav__icon {
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background-color: var(--color-bg-light);
    background-image: url('../images/arrows/black-down.png');
    background-repeat: no-repeat;
    background-position: center;
    background-size: 9px 10px;
    transition: background-color var(--tr), background-image var(--tr), transform var(--tr);
}
.aesthetic-treatment__btn .aesthetic-anchor-nav__icon::after {
    content: none;
}
.aesthetic-treatment__btn:hover {
    background: var(--color-accent);
    color: #fff;
    opacity: 1;
}
.aesthetic-treatment__btn:hover .aesthetic-anchor-nav__icon {
    background-color: #fff;
    background-image: url('../images/arrows/orange-down.png');
    transform: translateY(3px);
}

@media (max-width: 768px) {
    .aesthetic-treatment__grid { grid-template-columns: 1fr; }
    .aesthetic-treatment__btn { padding: .6rem var(--sp-sm); font-size: var(--fs-xs); }
}

/* ── Aesthetic Medicine — treatment detail accordions ── */
.aesthetic-detail {
    /* background: var(--color-bg-light); */
}
.aesthetic-accordion {
    background: var(--color-bg-light);
    margin-bottom: var(--sp-lg);
    border-radius: 4px;
}
.aesthetic-accordion:last-child { margin-bottom: 0; }
.aesthetic-accordion__header {
    display: flex;
    align-items: center;
    gap: var(--sp-sm);
    width: 100%;
    background: none;
    border: none;
    padding: var(--sp-lg) var(--sp-xl);
    cursor: pointer;
    text-align: left;
    margin-bottom: 1rem;
}
.aesthetic-accordion__header:hover { background: #EBD5C9; border-radius: 4px; }
.aesthetic-accordion__title {
    flex: 1;
    font-size: var(--fs-xl);
    font-weight: 500;
    color: var(--color-text);
}
.aesthetic-accordion__toggle {
    font-size: var(--fs-xl);
    color: var(--color-accent);
    font-weight: 300;
    line-height: 1;
    flex-shrink: 0;
    width: 28px;
    text-align: center;
}
.aesthetic-accordion__body {
    display: none;
    padding: 0 var(--sp-2xl) var(--sp-2xl);
    margin-bottom: 1rem;
}
.aesthetic-accordion__body.is-open { display: block; }
.aesthetic-accordion__tags {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-xs);
    margin-bottom: var(--sp-lg);
    margin-top: var(--sp-sm);
}
.aesthetic-tag {
    display: inline-block;
    background: #ebd5c8;
    border: none;
    border-radius: 4px;
    padding: .1rem .4rem;
    font-size: var(--fs-sm);
    color: var(--color-text-sub);
}
.aesthetic-tag.is-active {
    background: var(--color-accent);
    border-color: var(--color-accent);
    color: #fff;
}
.aesthetic-accordion__content {
    display: grid;
    grid-template-columns: 1fr 380px;
    gap: var(--sp-xl);
    align-items: start;
    margin-bottom: var(--sp-xl);
}
.aesthetic-accordion__text p {
    font-size: var(--fs-base);
    line-height: 2;
    color: var(--color-text);
    margin: 0;
}
.aesthetic-accordion__image img {
    width: 100%;
    border-radius: var(--radius-sm);
    display: block;
}
.aesthetic-accordion__features {
    margin-bottom: 5rem;
}
.aesthetic-accordion__features-title {
    font-size: var(--fs-lg);
    font-weight: 700;
    color: var(--color-text);
    padding-bottom: var(--sp-xs);
    border-bottom: 2px solid #ebd5c8;
    margin: 0 0 var(--sp-md);
}
.aesthetic-accordion__feature-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: var(--sp-md);
}
.aesthetic-accordion__feature-list li {
    padding-left: 1.2rem;
    position: relative;
}
.aesthetic-accordion__feature-list li::before {
    content: '•';
    position: absolute;
    left: 0;
    top: .05em;
    color: var(--color-accent);
    font-size: 1.2em;
    line-height: 1;
}
.aesthetic-accordion__feature-list strong {
    display: block;
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
    margin-bottom: .2rem;
}
.aesthetic-accordion__feature-list p {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    margin: 0;
    line-height: 2;
}

/* numbered feature list (HIFU style) */
.aesthetic-accordion__feature-num-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: var(--sp-lg);
}
.aesthetic-feature-num__header {
    display: flex;
    align-items: baseline;
    gap: .4rem;
    margin-bottom: .5rem;
}
.aesthetic-feature-num__n {
    font-size: 2.5rem;
    font-weight: 500;
    font-family: 'Montserrat', sans-serif;
    color: var(--color-accent);
    line-height: 0.9;
    letter-spacing: 10%;
}
.aesthetic-feature-num__dots {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    margin-left: .35rem;
    margin-right: .35rem;
    font-size: 0;
    line-height: 1;
}
.aesthetic-feature-num__dots span {
    display: inline-block;
    width: .28rem;
    height: .28rem;
    border-radius: 50%;
    background: var(--color-accent);
    line-height: 1;
}
.aesthetic-feature-num__dots span:nth-child(1) { opacity: 1; }
.aesthetic-feature-num__dots span:nth-child(2) { opacity: .6; }
.aesthetic-feature-num__dots span:nth-child(3) { opacity: .35; }

.aesthetic-feature-num__title {
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
}
.aesthetic-accordion__feature-num-list p {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
    margin: 0;
}

@media (max-width: 768px) {
    .aesthetic-tabs__panel { padding: var(--sp-sm); }
    .aesthetic-tabs__btn { padding: .7rem var(--sp-sm); font-size: var(--fs-xs); }
    .aesthetic-accordion__header { padding: var(--sp-sm) var(--sp-md); }
    .aesthetic-accordion__body { padding: 0 var(--sp-sm) var(--sp-sm); }
    .aesthetic-accordion__content { grid-template-columns: 1fr; }
    .aesthetic-accordion__image { order: -1; }
    .aesthetic-accordion__title { font-size: var(--fs-base); }
}

/* ── Aesthetic Medicine — treatment flow steps ── */
.aesthetic-accordion__flow { margin-top: var(--sp-xl); }
.aesthetic-flow {
    display: flex;
    flex-direction: column;
}
.aesthetic-flow__step {
    display: grid;
    grid-template-columns: 64px 1fr;
    gap: var(--sp-sm);
    align-items: start;
    padding: var(--sp-sm) 0;
}
.aesthetic-flow__left {
    display: flex;
    justify-content: center;
}
.aesthetic-flow__num {
    width: 70px;
    height: 70px;
    border-radius: 50%;
    border: 2px solid #EBD5C9;
    color: #4A4A4A;
    font-size: var(--fs-xl);
    font-family: 'Montserrat', sans-serif;
    font-weight: 500;
    line-height: 1.5;
    letter-spacing: 10%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.aesthetic-flow__body strong {
    display: block;
    font-size: var(--fs-lg);
    font-weight: 700;
    line-height: 1.5;
    color: var(--color-text);
    margin-bottom: .3rem;
}
.aesthetic-flow__body p {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    margin: 0;
    line-height: 2;
}
/* separator: vertical line left + dotted line right */
.aesthetic-flow__sep {
    display: grid;
    grid-template-columns: 64px 1fr;
    gap: var(--sp-sm);
    align-items: center;
}
.aesthetic-flow__sep > div:first-child {
    display: flex;
    justify-content: center;
}
.aesthetic-flow__sep > div:first-child::before {
    content: '';
    display: block;
    width: 2px;
    height: 40px;
    background: #EBD5C9;
}
.aesthetic-flow__sep > div:last-child {
    height: 2px;
    background: repeating-linear-gradient(
        to right,
        #d0c4bc 0 2px,
        transparent 2px 10px
    );
}

/* ── Aesthetic Medicine — pricing cards ── */
.aesthetic-accordion__pricing { margin-top: var(--sp-xl); }
.aesthetic-pricing__note {
    font-size: var(--fs-sm);
    font-weight: 400;
    color: var(--color-text-sub);
    margin-left: .5rem;
}
.aesthetic-pricing__grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--sp-xs);
    padding-top: 1rem;
}
.aesthetic-pricing__card {
    background: #fff;
    border-radius: var(--radius-sm);
    padding: var(--sp-lg);
    display: flex;
    flex-direction: column;
    gap: var(--sp-xs);
}
.aesthetic-pricing__course {
    font-size: var(--fs-base);
    font-weight: 500;
    color: var(--color-text);
    margin: 0;
    padding-left: 1rem;
    position: relative;
}
.aesthetic-pricing__course::before {
    content: '•';
    position: absolute;
    left: 0;
    color: var(--color-accent);
    font-size: 1.1em;
}
.aesthetic-pricing__specs {
    list-style: none;
    padding: 0 0 0 .5rem;
    margin: 0;
}
.aesthetic-pricing__specs li {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
}
.aesthetic-pricing__remark {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    margin: 0 0 0 .5rem;
}
.aesthetic-pricing__card--simple {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    padding: var(--sp-md) var(--sp-lg);
}
.aesthetic-pricing__card--simple .aesthetic-pricing__rows {
    margin-top: 0;
    padding-top: 0;
    flex-shrink: 0;
}
.aesthetic-pricing__rows {
    margin-top: auto;
    padding-top: var(--sp-md);
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.aesthetic-pricing__row {
    display: flex;
    justify-content: flex-end;
    align-items: baseline;
    gap: var(--sp-md);
}
.aesthetic-pricing__label {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
}
.aesthetic-pricing__price {
    font-size: var(--fs-base);
    font-weight: 500;
    color: var(--color-text);
}
.aesthetic-pricing__tax {
    font-size: var(--fs-xs);
    font-weight: 400;
    color: var(--color-text-sub);
    margin-left: .5rem;
}
@media (max-width: 768px) {
    .aesthetic-pricing__grid { grid-template-columns: 1fr; }
    .aesthetic-pricing__card { padding: var(--sp-sm); }
    .aesthetic-pricing__card--simple { padding: .65rem var(--sp-sm); }
    .aesthetic-pricing__row { justify-content: space-between; }
    .aesthetic-pricing__price { font-size: var(--fs-base); }
}

/* ── Aesthetic Medicine — caution table ── */
.aesthetic-accordion__caution { margin-top: var(--sp-xl); }
.aesthetic-caution-table-wrap {
    border-radius: var(--radius-sm);
    overflow: hidden;
    margin-top: 2.5rem;
}
.aesthetic-caution-table {
    width: 100%;
    border-collapse: collapse;
}
.aesthetic-caution-table th {
    background: #EBD5C9;
    width: 200px;
    padding: var(--sp-md) var(--sp-lg);
    font-size: var(--fs-base);
    font-weight: 500;
    color: var(--color-text);
    text-align: left;
    vertical-align: middle;
    border-bottom: 1px solid #F7F4F2;
    border-right: none;
}
.aesthetic-caution-table td {
    background: #fff;
    padding: var(--sp-sm) var(--sp-md);
    font-size: var(--fs-base);
    color: var(--color-text);
    line-height: 2;
    border-bottom: 1px solid #EBD5C9;
    border-right: none;
}
.aesthetic-caution-table tr:first-child > * {
    border-top: none;
    border-right: none;
}
.aesthetic-caution-table tr:last-child > * {
    border-bottom: none;
    border-right: none;
}
.aesthetic-caution-table td p { margin: 0 0 .3rem; }
.aesthetic-caution__contraindication-header {
    font-weight: 500;
    margin: var(--sp-lg) 0 0 !important;
}
.aesthetic-caution__contraindication-header2 {
    font-weight: 500;
}
.aesthetic-caution__list {
    list-style: none;
    padding: 0;
    margin: 0;
}
.aesthetic-caution__list li {
    padding-left: 1rem;
    position: relative;
    line-height: 2;
}
.aesthetic-caution__list li::before {
    content: '-';
    position: absolute;
    left: 0;
    color: var(--color-text-sub);
}
@media (max-width: 768px) {
    .aesthetic-caution-table th {
        display: block;
        width: 100%;
        border-bottom: none;
    }
    .aesthetic-caution-table td {
        display: block;
        width: 100%;
    }
    .aesthetic-caution-table tr { display: block; border-bottom: 1px solid #EBD5C9; }
    .aesthetic-caution-table tr:last-child { border-bottom: none; }
}

/* ── Aesthetic Medicine — reasons badge ── */
.aesthetic-reasons__badge {
    display: inline-block;
    background: var(--color-accent);
    color: #fff;
    font-size: var(--fs-xs);
    font-weight: 700;
    padding: .3rem 1.2rem;
    border-radius: 2rem;
    margin-bottom: var(--sp-xs);
    position: relative;
}
.aesthetic-reasons__badge::after {
    content: '';
    position: absolute;
    bottom: -7px;
    left: 50%;
    transform: translateX(-50%);
    border-left: 7px solid transparent;
    border-right: 7px solid transparent;
    border-top: 8px solid var(--color-accent);
}
.dept-reason__divider {
    border: none;
    border-top: 1px solid #d4c8c2;
    margin: var(--sp-sm) 0 var(--sp-md);
}

/* ── Aesthetic Medicine — anchor nav ── */
.aesthetic-anchor-nav {
    background: #fff;
    padding: var(--sp-lg) 0 6rem 0;
}
.aesthetic-anchor-nav__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--sp-sm);
}
.aesthetic-anchor-nav__btn {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: var(--color-accent);
    color: #fff;
    font-size: var(--fs-base);
    font-weight: 500;
    padding: .9rem 1.2rem;
    border-radius: var(--radius-sm);
    border: 2px solid var(--color-accent);
    text-decoration: none;
    gap: var(--sp-sm);
    transition: background var(--tr), color var(--tr), border-color var(--tr);
}
.aesthetic-anchor-nav__btn:hover {
    background: var(--color-white);
    color: var(--color-accent);
    opacity: 1;
}
.aesthetic-anchor-nav__arrow {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #fff;
    flex-shrink: 0;
    position: relative;
    transition: background var(--tr), transform var(--tr);
}
.aesthetic-anchor-nav__arrow::before {
    content: '';
    position: absolute;
    inset: 0;
    background: url('../images/arrows/orange-down.png') center / 9px 10px no-repeat;
    transition: filter var(--tr), transform var(--tr);
}
.aesthetic-anchor-nav__btn:hover .aesthetic-anchor-nav__arrow {
    background: var(--color-accent);
    transform: translateY(3px);
}
.aesthetic-anchor-nav__btn:hover .aesthetic-anchor-nav__arrow::before {
    filter: brightness(0) invert(1);
}
.aesthetic-anchor-nav__icon {
    width: 24px;
    height: 24px;
    background: #fff;
    border-radius: 50%;
    flex-shrink: 0;
    position: relative;
    transition: background var(--tr), transform var(--tr);
}
.aesthetic-anchor-nav__btn:hover .aesthetic-anchor-nav__icon {
    background: var(--color-accent);
    transform: translateY(3px);
}
.aesthetic-anchor-nav__icon::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -60%) rotate(45deg);
    width: 6px;
    height: 6px;
    border-right: 2px solid var(--color-accent);
    border-bottom: 2px solid var(--color-accent);
    transition: border-color var(--tr);
}
.aesthetic-anchor-nav__btn:hover .aesthetic-anchor-nav__icon::after {
    border-color: #fff;
}
@media (max-width: 768px) {
    .aesthetic-anchor-nav__grid { grid-template-columns: repeat(2, 1fr); }
}

/* ── Vaccination — outpatient hero accent ── */
.hero--outpatient-vaccination.page-hero--dept { background: #F6F4F1; }
.hero--outpatient-vaccination.page-hero--dept .page-hero__en { color: var(--color-accent); }
.hero--outpatient-vaccination ~ .page-hero__breadcrumb-bar .breadcrumb a { color: var(--color-text-light); }

/* ── Vaccination — reservation section ── */
.vacc-reservation {
    background: url('../images/about-our-service-bg-home-med1.png') center top / cover no-repeat;
    border-top-left-radius: 10rem;
    border-top-right-radius: 10rem;
    padding-bottom: 4rem;
    padding-top: 7rem;
    margin-bottom: 6rem;
}
.vacc-reservation .section-header__en { color: var(--color-accent); }

.vacc-reservation__top {
    display: flex;
    gap: var(--sp-xl);
    align-items: flex-start;
    margin-bottom: var(--sp-xl);
}
.vacc-reservation__info { flex: 1; }
.vacc-reservation__lead { margin-bottom: var(--sp-xs); font-size: var(--fs-base); margin-top: var(--sp-md); }
.vacc-reservation__note-strong { font-weight: 700; margin-bottom: 2rem; color: var(--color-text); font-size: var(--fs-sm); }
.vacc-reservation__notes { list-style: none; padding: 0; margin: 0; }
.vacc-reservation__notes li { font-size: var(--fs-sm); color: var(--color-text); line-height: 1.5; }

/* CTA right — standalone orange card inside reservation top */
.vacc-reservation__top .home-med-cta__right {
    background: var(--color-accent);
    border-radius: 20px;
    padding: var(--sp-lg) var(--sp-xl);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    width: 50%;
    flex-shrink: 0;
    gap: var(--sp-xs);
}
.vacc-reservation__info .section-header { margin-bottom: var(--sp-sm); }
.vacc-reservation__top .home-med-cta__title {
    font-size: var(--fs-xl);
    line-height: 1.25;
    font-weight: 500;
}
.home-med-cta__title.home-med-cta__no-margin-bottom {
    margin-bottom: 0;
}
.home-med-cta__tel.home-med-cta__no-margin-bottom {
    margin-bottom: 0;
}
.vacc-reservation__top .home-med-cta__hours {
    justify-content: center;
    text-align: left;
}

/* Divider */
.vacc-divider {
    display: block;
    width: 100%;
    height: 2px;
    border: 0;
    background: repeating-linear-gradient(
        to right,
        #E38352 0 2px,
        transparent 4px 10px
    );
}
.vacc-divider--inner {
    margin: var(--sp-lg) 0;
}

/* White container */
.vacc-type--white {
    background: #fff;
    border-radius: 16px;
    padding: .1rem var(--sp-2xl) var(--sp-2xl) var(--sp-2xl);
    margin-top: 5rem;
}
.vacc-type--white .vacc-type { padding: 0; }

/* Type block (定期 / 任意) */
.vacc-type__title {
    display: flex;
    align-items: center;
    gap: var(--sp-sm);
    font-size: var(--fs-xl);
    font-weight: 500;
    margin-bottom: var(--sp-md);
    margin-top: var(--sp-2xl);
}
.vacc-type__dot {
    width: 28px;
    height: 18px;
    flex-shrink: 0;
    display: inline-block;
    vertical-align: middle;
    object-fit: contain;
    margin-right: .25rem;
}

.vacc-type__badge {
    font-size: var(--fs-sm);
    font-weight: 500;
    padding: 0 .4rem;
    border-radius: .3rem;
    line-height: 2.286;
}
.vacc-type__badge--public  { background: var(--color-accent); color: #fff; }
.vacc-type__badge--subsidy { background: var(--color-accent); color: #fff; }

.vacc-type__body { margin-bottom: var(--sp-lg); line-height: 1.8; }

/* Checklist card */
.vacc-type__card {
    background: #fff;
    border: 4px solid #EBD5C9;
    border-radius: var(--radius-md);
    padding: var(--sp-lg) var(--sp-xl);
    margin-bottom: var(--sp-lg);
}
.vacc-type__card-title {
    font-size: var(--fs-lg);
    font-weight: 500;
    line-height: 1.5;
    color: var(--color-text);
    padding-bottom: var(--sp-sm);
    border-bottom: 2px solid #EBD5C9;
    margin-bottom: var(--sp-xs);
}
.vacc-type__checklist {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: var(--sp-xl);
    row-gap: 0;
}
.vacc-type__checklist li {
    display: flex;
    align-items: flex-start;
    gap: .6rem;
    position: relative;
    padding: .8rem 0 .6rem 0;
    border-bottom: none;
    font-size: var(--fs-base);
    line-height: 2;
}

.vacc-type__checklist li::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 2px;
    background: repeating-linear-gradient(
        to right,
        #EBD5C9 0 2px,
        transparent 2px 10px
    );
}

.vacc-type__check {
    width: 1.3em;
    height: 1.3em;
    flex-shrink: 0;
    display: block;
    object-fit: contain;
    align-self: flex-start;
    margin-top: .15rem;
}

.vacc-check__text {
    display: block;
    line-height: 1.6;
    padding-top: .04rem;
}

/* Schedule image */
.vacc-type__schedule {
    display: flex;
    justify-content: center;
    margin-bottom: var(--sp-lg);
}
.vacc-type__schedule img {
    max-width: 680px;
    width: 100%;
    height: auto;
    border: 2px solid #c9a97a;
    border-radius: var(--radius-sm);
    margin-block: 1rem;
}

/* Price table */
.vacc-price-table-wrap {
    border: 4px solid #EBD5C9;
    border-radius: var(--radius-md);
    overflow: hidden;
}
.vacc-price-table {
    width: 100%;
    border-collapse: collapse;
}
.vacc-price-table__name  {
    padding: .9rem 1.2rem;
    font-size: var(--fs-base);
    line-height: 2;
    font-weight: 500;
    width: 28%;
    background: var(--color-bg-light);
    border-bottom: 2px solid #EBD5C9;
}
.vacc-price-table__price {
    padding: .9rem 1.2rem;
    font-size: var(--fs-base);
    line-height: 2;
    font-weight: 500;
    text-align: right;
    width: 22%;
    background: #fff;
    border-bottom: 2px solid #EBD5C9;
}
.vacc-price-table__price--note {
    display: block;
    font-size: var(--fs-xs);
    line-height: 1.2;
    font-weight: 400;
    margin-top: .1rem;
}
.vacc-price-table__tax   { font-size: var(--fs-xs); color: var(--color-text-light); }
.vacc-price-table tbody tr:last-child td { border-bottom: none; }

/* ── Vaccination — caution section ── */
.vacc-caution { background: #fff; }
.vacc-caution .section-header__en { color: var(--color-accent); }

.vacc-caution__row {
    display: grid;
    grid-template-columns: 500px 1fr;
    gap: var(--sp-xl);
    align-items: start;
    padding-block: 2rem 2rem;
}
.vacc-caution__row.vacc-caution__row-padding-bottom {
    padding-bottom: 6rem;
}
.vacc-caution__label {
    display: flex;
    align-items: center;
    gap: var(--sp-sm);
}
.vacc-caution__title {
    font-size: var(--fs-xl);
    font-weight: 500;
    line-height: 1.25;
    color: var(--color-text);
}
.vacc-caution__checklist {
    list-style: none;
    padding: 0;
    margin: 0;
}
.vacc-caution__checklist li {
    display: flex;
    align-items: flex-start;
    gap: .6rem;
    padding: .4rem 0 .4rem 0;
    border-bottom: 1px solid #EBD5C9;
    font-size: var(--fs-base);
    line-height: 2;
}
.vacc-caution__checklist li:first-child { border-top: 1px solid #EBD5C9;}
.vacc-caution__note {
    font-size: var(--fs-sm);
    color: var(--color-text);
    margin-top: var(--sp-sm);
    line-height: 1.7;
}
.vacc-caution__bullets {
    list-style: none;
    padding: var(--sp-md) var(--sp-lg);
    margin: 0;
    background: var(--color-bg-light);
    border-radius: var(--radius-sm);
}
.vacc-caution__bullets li {
    position: relative;
    padding: .4rem 0 .1rem 1rem;
    font-size: var(--fs-base);
    line-height: 2;
    border-bottom: 1px solid #EBD5C9;
}
.vacc-caution__bullets li:last-child { padding-bottom: var(--sp-sm); }
.vacc-caution__bullets li::before {
    content: '•';
    position: absolute;
    left: 0;
    color: var(--color-accent);
    font-weight: 700;
}

/* SP */
@media (max-width: 768px) {
    .vacc-caution__row { grid-template-columns: 1fr; gap: var(--sp-md); padding-block: var(--sp-md); }
    .vacc-caution__row.vacc-caution__row-padding-bottom { padding-bottom: var(--sp-xl); }
    .vacc-caution__title { font-size: var(--fs-base); }
    .vacc-caution__checklist li { font-size: var(--fs-sm); line-height: 1.8; }
    .vacc-caution__note { font-size: var(--fs-xs); }
    .vacc-caution__bullets { padding: var(--sp-sm) var(--sp-md); }
    .vacc-caution__bullets li { font-size: var(--fs-sm); }

    /* Reservation section */
    .vacc-reservation {
        border-top-left-radius: 3rem;
        border-top-right-radius: 3rem;
        padding: var(--sp-lg) 0;
        margin-bottom: var(--sp-xl);
    }
    .vacc-reservation__top { flex-direction: column; gap: var(--sp-md); }
    .vacc-reservation__top .home-med-cta__right { width: 100%; box-sizing: border-box; padding: var(--sp-md); }
    .vacc-reservation__top .home-med-cta__tel { font-size: 1.5rem !important; }
    .vacc-reservation__top .home-med-cta__tel-icon { width: 28px; }
    .vacc-reservation__top .home-med-cta__title { font-size: var(--fs-base); }
    .vacc-reservation__lead { font-size: var(--fs-sm); }
    .vacc-reservation__note-strong { font-size: var(--fs-xs); }
    .vacc-reservation__notes li { font-size: var(--fs-xs); }

    /* Vaccination table (pediatrics) */
    .dept-vaccination { padding: 1rem 0; }
    .dept-vaccination__lead { font-size: var(--fs-xs); }

    /* Vacc types */
    .vacc-type--white { margin-top: var(--sp-xl); padding: var(--sp-md); border-radius: var(--radius-md); }
    .vacc-type__title { font-size: var(--fs-base); gap: var(--sp-xs); margin-top: var(--sp-lg); }
    .vacc-type__badge { font-size: var(--fs-xs); }
    .vacc-type__body { font-size: var(--fs-sm); line-height: 1.7; }
    .vacc-type__card-title { font-size: var(--fs-base); }

    /* 対象ワクチン checklist — 1 col, less padding so it breathes */
    .vacc-type__card { padding: var(--sp-md); border-width: 2px; }
    .vacc-type__checklist { grid-template-columns: 1fr; column-gap: 0; }
    .vacc-type__checklist li { align-items: flex-start; font-size: var(--fs-sm); }
    .vacc-type__checklist li:nth-last-child(-n+2) { border-bottom: 1px dashed #EBD5C9; }
    .vacc-type__checklist li:last-child { border-bottom: none; }
    .vacc-type__check { margin-top: .15rem; }

    /* 任意接種 price table — each row becomes 2 name+price lines */
    .vacc-price-table-wrap { overflow: visible; border-width: 2px; }
    .vacc-price-table,
    .vacc-price-table tbody { display: block; width: 100%; }
    .vacc-price-table tr {
        display: flex;
        flex-wrap: wrap;
        border-bottom: 2px solid var(--color-accent);
    }
    .vacc-price-table tr:last-child { border-bottom: none; }
    .vacc-price-table__name  { width: 55%; border-bottom: 1px solid #EBD5C9; padding: .6rem .8rem; font-size: var(--fs-sm); }
    .vacc-price-table__price { width: 45%; border-bottom: 1px solid #EBD5C9; text-align: right; padding: .6rem .8rem; font-size: var(--fs-sm); }
    /* remove inner border only on 3rd & 4th td (2nd pair — bottom of each tr) */
    .vacc-price-table tr > td:nth-child(3),
    .vacc-price-table tr > td:nth-child(4) { border-bottom: none; }
    /* restore inner border on last tr's 1st pair */
    .vacc-price-table tbody tr:last-child td { border-bottom: 1px solid #EBD5C9; }
    .vacc-price-table tbody tr:last-child td:nth-child(3),
    .vacc-price-table tbody tr:last-child td:nth-child(4) { border-bottom: none; }
}

/* ── home-med about section ── */
.home-med-about {
    background: url('../images/about-our-service-bg-home-med1.png') center top / cover no-repeat;
    border-top-left-radius: 10rem;
    border-top-right-radius: 10rem;
    padding-bottom: 1rem;
    margin-bottom: 6rem;
}
.home-med-about .section-header__en {
    color: var(--color-accent);
    padding-top: 6rem;
}
.home-med-about__lead {
    text-align: center;
    color: var(--color-text);
    line-height: 1.8;
    margin-bottom: var(--sp-xl);
}
.home-med-about__divider,
.home-med-detail__sep,
.home-med-team__sep,
.home-med-fees__sep {
    display: block;
    width: 100%;
    height: 2px;
    border: 0;
    background: repeating-linear-gradient(
        to right,
        #E38352 0 2px,
        transparent 4px 10px
    );
}

.home-med-about__divider {
    margin: 0 0 var(--sp-xl);
}
.home-med-about__photos {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--sp-sm);
    margin-bottom: var(--sp-xl);
}
.home-med-about__photos img {
    width: 100%;
    aspect-ratio: 468 / 307;
    height: auto;
    object-fit: cover;
    border-radius: var(--radius-sm);
}
.home-med-about__summary {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 632px);
    gap: var(--sp-xl);
    align-items: end;
    margin-bottom: var(--sp-xl);
}
.home-med-about__summary-text p {
    /* margin-bottom: var(--sp-xs); */
    line-height: 2;
    color: var(--color-text);
    font-size: var(--fs-base);
}
.home-med-about__summary-text p:last-child { 
    margin-bottom: 0;
    line-height: 1.5;
    font-weight: 500;
    letter-spacing: 10%;
    text-align: center;
}
.home-med-about__note {
    border-radius: var(--radius-sm);
    padding: var(--sp-sm) var(--sp-md);
    color: var(--color-accent) !important;
    font-size: var(--fs-sm);
    background: #fff;
    margin-top: var(--sp-sm) !important;
}
.home-med-about__summary-img {
    display: flex;
    align-items: flex-end;
    justify-content: flex-end;
}
@media (max-width: 1180px) and (min-width: 769px) {
    /* iPad：スマホと同じ縦並びにして不要な空白を防ぐ */
    .home-med-about__summary {
        grid-template-columns: 1fr;
        gap: var(--sp-md);
    }
    .home-med-about__summary-img {
        text-align: center;
        justify-content: center;
    }
    .home-med-about__summary-img img {
        max-width: 280px;
        margin: 0 auto;
    }
}
.home-med-about__summary-img img {
    width: 100%;
    max-width: 632px;
    aspect-ratio: 632 / 300;
    height: auto;
    object-fit: contain;
    object-position: bottom center;
    display: block;
}

/* ── home-med white detail card ── */
.home-med-detail {
    background: #fff;
    border-radius: 20px;
    padding: var(--sp-xl) var(--sp-2xl);
    margin-bottom: var(--sp-xl);
}
.home-med-detail__block {
    display: grid;
    grid-template-columns: 345px 1fr;
    gap: var(--sp-xl);
    padding: var(--sp-xl) 0;
}
.home-med-detail__block:first-child { padding-top: 0; }
.home-med-detail__sep {
    margin: 0;
}
.home-med-detail__icon {
    width: 60px;
    height: 60px;
    object-fit: cover;
    margin-bottom: var(--sp-sm);
    display: block;
}
.home-med-detail__title {
    font-size: var(--fs-xl);
    font-weight: 500;
    line-height: 1.25;
    color: var(--color-text);
    margin-bottom: var(--sp-sm);
    display: flex;
    align-items: center;
    gap: var(--sp-xs);
}
.home-med-detail__dual-circle {
    width: 28px;
    height: 18px;
    flex-shrink: 0;
    display: block;
    object-fit: contain;
}
.home-med-detail__desc {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
    padding-left: 2.25rem;
}
.home-med-detail__tag {
    display: inline-block;
    background: var(--color-accent);
    color: #fff;
    font-size: var(--fs-sm);
    font-weight: 500;
    padding: .3rem 1.5rem;
    border-radius: 4px;
    margin-bottom: var(--sp-md);
}
.home-med-detail__list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0;
}
.home-med-detail__list--service {
    background: #F7F4F2;
    border-radius: var(--radius-sm);
    padding: 0 var(--sp-md);
}
.home-med-detail__list--service .home-med-detail__item {
    display: grid;
    grid-template-columns: 8px 1fr;
    column-gap: var(--sp-sm);
    row-gap: .15rem;
    align-items: start;
}
.home-med-detail__item.home-med-detail__item--equipment {
    margin-bottom: calc(var(--sp-md) + .5rem);
}
.home-med-detail__list--service .home-med-detail__item > div {
    display: contents;
}
.home-med-detail__item {
    display: flex;
    gap: var(--sp-sm);
    align-items: flex-start;
    padding: var(--sp-md) 0;
    border-bottom: 1px solid #EBD5CA;
}
.home-med-detail__list:not(.home-med-detail__list--service) .home-med-detail__item {
    display: grid;
    grid-template-columns: 1.3em 1fr;
    column-gap: var(--sp-sm);
    row-gap: .15rem;
    align-items: start;
}
.home-med-detail__list:not(.home-med-detail__list--service) .home-med-detail__item > div {
    display: contents;
}

.home-med-detail__check {
    width: 1.3em;
    height: 1.3em;
    flex-shrink: 0;
    display: block;
    object-fit: contain;
    align-self: flex-start;
    margin-top: .15em;
}
.home-med-detail__bullet {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--color-accent);
    flex-shrink: 0;
    margin-top: .7em;
}
.home-med-detail__item-title {
    font-size: var(--fs-base);
    line-height: 2;
    color: var(--color-text);
    margin: 0;
    grid-column: 2;
    grid-row: 1;
}
.home-med-detail__item-desc {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
    margin: 0;
    grid-column: 1 / -1;
    grid-row: 2;
}
.home-med-detail__list--service .home-med-detail__item-title {
    grid-column: 2;
    grid-row: 1;
}
.home-med-detail__list--service .home-med-detail__item-desc {
    grid-column: 1 / -1;
    grid-row: 2;
}

/* Visit subsection (3rd block) */
.home-med-detail__block--visit {
    grid-template-columns: 1fr 1fr;
    align-items: end;
}
.home-med-detail__visit-text .home-med-detail__title--dot {
    margin-bottom: var(--sp-md);
}
.home-med-detail__visit-photo {
    width: 100%;
    aspect-ratio: 630 / 389;
    height: auto;
    object-fit: cover;
    border-radius: var(--radius-sm);
    display: block;
}
.home-med-detail__visit-body {
    padding-bottom: 3rem;
}
.home-med-detail__visit-body p {
    line-height: 1.8;
    color: var(--color-text);
    margin-bottom: var(--sp-md);
}
.home-med-detail__visit-body p:last-child { margin-bottom: 0; }
@media (max-width: 1180px) and (min-width: 769px) {
    /* iPad（縦横問わず）：スマホと同じ1カラム表示にして文字の縦潰れを防ぐ */
    .home-med-detail {
        padding: var(--sp-md);
        border-radius: var(--radius-md);
    }
    .home-med-detail__block {
        grid-template-columns: 1fr;
        gap: var(--sp-md);
    }
    .home-med-detail__block--visit {
        grid-template-columns: 1fr;
    }
    .home-med-detail__title { font-size: var(--fs-base); }
    .home-med-detail__desc { font-size: var(--fs-sm); line-height: 1.8; }
    .home-med-detail__item-title { font-size: var(--fs-sm); }
    .home-med-detail__item-desc { font-size: var(--fs-xs); }
    .home-med-detail__visit-body p { font-size: var(--fs-sm); }
}

/* ── home-med CTA card ── */
.home-med-cta {
    background: var(--color-accent);
    border-radius: 20px;
    padding: var(--sp-xl) var(--sp-2xl);
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-xl);
    align-items: center;
    margin-bottom: 5rem;
}
.home-med-cta__reduced--margin-bottom {
    margin-bottom: 0;
}
.home-med-cta__left {
    display: flex;
    flex-direction: column;
    align-items: center;
}
.home-med-cta__title {
    color: #fff;
    font-weight: 500;
    font-size: var(--fs-xl);
    line-height: 1.25;
    margin-bottom: var(--sp-md);
    text-align: center;
}
.home-med-cta__bubbles {
    display: flex;
    gap: var(--sp-sm);
    flex-wrap: wrap;
    margin-bottom: var(--sp-sm);
}
.home-med-cta__bubble {
    background: #fff;
    color: var(--color-accent);
    font-size: var(--fs-base);
    font-weight: 500;
    line-height: 1.875;
    padding: 6px 18px;
    border-radius: 20px;
    position: relative;
}
.home-med-cta__bubble::after {
    content: '';
    position: absolute;
    bottom: -6px;
    left: 50%;
    transform: translateX(-50%);
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
    border-top: 7px solid #fff;
}
.home-med-cta__sub {
    color: #fff;
    font-size: var(--fs-base);
    margin-top: var(--sp-xs);
    text-align: center;
    line-height: 1.5;
    width: 100%;
}
.home-med-cta__tel {
    display: flex;
    align-items: center;
    gap: var(--sp-sm);
    font-size: 3.75rem;
    font-weight: 700;
    ling-height: 0.733;
    letter-spacing: 10%;
    font-family: 'Montserrat', sans-serif;
    color: #fff;
    text-decoration: none;
    white-space: nowrap;
    margin-bottom: var(--sp-sm);
}
@media (max-width: 1180px) and (min-width: 769px) {
    .home-med-cta__tel {
        font-size: 2rem;
    }
}
.home-med-cta__tel-icon {
    width: 50px;
    height: auto;
}
.home-med-cta__hours {
    display: flex;
    align-items: flex-start;
    gap: var(--sp-sm);
}
.home-med-cta__hours-badge {
    background: #fff;
    color: var(--color-accent);
    font-size: var(--fs-base);
    font-weight: 500;
    padding: 3px 10px;
    border-radius: 20px;
    white-space: nowrap;
    flex-shrink: 0;
    margin-top: 2px;
}
.home-med-cta__hours-text p {
    color: #fff;
    font-size: var(--fs-base);
    line-height: 1.5;
    font-weight: 500;
}
.home-med-cta__hours-text {
    text-align: left;
}
.home-med-cta__hours-text p {
    display: grid;
    grid-template-columns: 4.5em 1fr;
    column-gap: .75rem;
    align-items: start;
}
.home-med-cta__hours-day {
    white-space: nowrap;
}
.home-med-cta__hours-time {
    white-space: nowrap;
}
.home-med-cta__hours-note {
    display: block;
    grid-template-columns: none;
    grid-column: 1 / -1;
    white-space: nowrap;
}

/* ── home-med team section ── */
.home-med-team .section-header--left {
    text-align: left;
    align-items: flex-start;
}
.home-med-team .section-header__en {
    color: var(--color-accent);
}
.home-med-team__subtitle {
    font-size: var(--fs-xl);
    font-weight: 500;
    line-height: 1.25;
    margin-bottom: var(--sp-xs);
}
.home-med-team .section-header__title {
    font-size: 2rem;
    margin-bottom: var(--sp-lg);
}
.home-med-team__lead {
    line-height: 1.9;
    color: var(--color-text);
    margin-bottom: var(--sp-xl);
}
.home-med-team__sep {
    margin: var(--sp-xl) 0;
}
.home-med-team__block-title {
    display: flex;
    align-items: center;
    gap: var(--sp-xs);
    font-size: var(--fs-xl);
    font-weight: 500;
    color: var(--color-text);
    margin-bottom: var(--sp-lg);
}
.home-med-team__block-title::before {
    content: '';
    display: inline-block;
    width: 28px;
    height: 18px;
    background: url('../images/dual-circle-orange.png') center / contain no-repeat;
    flex-shrink: 0;
}
.home-med-team__cards {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--sp-md);
}
.home-med-team__card {
    border: 1px solid #EBD5C9;
    border-radius: var(--radius-sm);
    padding: var(--sp-lg) var(--sp-md);
}
.home-med-team__card-head {
    display: flex;
    align-items: center;
    gap: var(--sp-sm);
    margin-bottom: var(--sp-md);
}
.home-med-team__card-icon {
    width: 60px;
    height: 60px;
    object-fit: contain;
    flex-shrink: 0;
}
.home-med-team__card-icon--accent {
    filter: brightness(0) saturate(100%) invert(55%) sepia(60%) saturate(500%) hue-rotate(330deg) brightness(100%);
}
.home-med-team__card-title {
    font-size: var(--fs-xl);
    font-weight: 500;
    color: var(--color-text);
}
.home-med-team__card-title small {
    display: inline;
    font-size: 0.875rem;
    font-weight: 400;
    line-height: 1.5;
    color: var(--color-text-sub);
    margin-left: .35em;
    white-space: nowrap;
}
.home-med-team__card-desc {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
}
.home-med-team__collab {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-2xl);
    align-items: center;
    padding-bottom: var(--sp-3xl);
}
.home-med-team__collab-img img {
    width: 100%;
    aspect-ratio: 630 / 389;
    height: auto;
    object-fit: cover;
    border-radius: var(--radius-sm);
    display: block;
}
.home-med-team__collab-body .home-med-team__block-title {
    margin-bottom: var(--sp-lg);
}
.home-med-team__collab-body p {
    line-height: 2;
    color: var(--color-text);
    margin-bottom: var(--sp-md);
}
.home-med-team__collab-body p:last-child { margin-bottom: 0; }

.home-med-cta--in-reasons {
    margin-top: var(--sp-2xl);
}

/* ── home-med fees section ── */
.home-med-fees .section-header--left {
    text-align: left;
    align-items: flex-start;
}
.home-med-fees .section-header__en {
    color: var(--color-accent);
}
.home-med-fees__lead {
    line-height: 1.9;
    color: var(--color-text);
    margin-bottom: var(--sp-xl);
}
.home-med-fees__sep {
    margin: var(--sp-sm) 0;
}
.home-med-fees__block {
    display: grid;
    grid-template-columns: 395px 1fr;
    gap: var(--sp-xl);
    padding: var(--sp-xl) 0;
}
.home-med-fees__block.home-med-fees__block--margin-bottom {
    margin-bottom: 3rem;
}
.home-med-fees__icon {
    width: 60px;
    height: 60px;
    object-fit: contain;
    margin-bottom: var(--sp-sm);
    display: block;
}
.home-med-fees__title {
    font-size: var(--fs-xl);
    font-weight: 500;
    color: var(--color-text);
    display: flex;
    align-items: center;
    gap: var(--sp-xs);
}
.home-med-fees__title::before {
    content: '';
    display: inline-block;
    width: 28px;
    height: 18px;
    background: url('../images/dual-circle-orange.png') center / contain no-repeat;
    flex-shrink: 0;
}
.home-med-fees__item {
    padding-bottom: var(--sp-md);
    margin-bottom: var(--sp-lg);
    border-bottom: 1px solid #f0e8e2;
}
.home-med-fees__item:last-child {
    border-bottom: none;
    margin-bottom: 0;
    padding-bottom: 0;
}
.home-med-fees__item-head {
    display: flex;
    align-items: center;
    gap: var(--sp-sm);
    margin-bottom: var(--sp-sm);
}
.home-med-fees__item-icon {
    width: 40px;
    height: 40px;
    object-fit: contain;
    flex-shrink: 0;
}
.home-med-fees__item-label {
    font-weight: 500;
    color: var(--color-text);
    font-size: var(--fs-base);
}
.home-med-fees__item-text {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
    margin-bottom: var(--sp-sm);
}
.home-med-fees__item-text.home-med-fees__no-margin {
    margin-bottom: 0;
}
.home-med-fees__item-text--small {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 1.5;
}
.home-med-fees__infobox {
    background: var(--color-bg-light);
    border-radius: var(--radius-sm);
    padding: var(--sp-sm) var(--sp-md);
    margin: var(--sp-sm) 0;
}
.home-med-fees__infobox p {
    font-size: var(--fs-sm);
    color: var(--color-text);
    line-height: 1.8;
}
.home-med-fees__table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    border: 0;
    margin-bottom: var(--sp-md);
    font-size: var(--fs-base);
    table-layout: fixed;
}
.home-med-fees__table th,
.home-med-fees__table td {
    padding: 1rem 1.25rem;
    border: 0;
    text-align: center;
    vertical-align: middle;
}
.home-med-fees__table thead th {
    background: #EBD5CA;
    color: var(--color-text);
    font-size: var(--fs-base);
    font-weight: 400;
    line-height: 2;
}
.home-med-fees__table thead th:nth-child(2) {
    border-left: 1px solid #F8F4F2;
    border-right: 1px solid #F8F4F2;
}
.home-med-fees__table tbody td {
    background: #F7F4F2;
    font-size: 1.25rem;
    line-height: 1.5;
    font-weight: 400;
}
.home-med-fees__table tbody tr:first-child td:first-child {
    font-weight: 500;
    color: var(--color-text);
    border: 0;
}
.home-med-fees__table tbody tr:first-child td:nth-child(2) {
    border-left: 1px solid #EBD5C9;
    border-right: 1px solid #EBD5C9;
    border-bottom: 1px solid #EBD5C9;
}
.home-med-fees__table tbody tr:first-child td:nth-child(3) {
    border-bottom: 1px solid #EBD5C9;
}
.home-med-fees__table tbody tr:last-child td:first-child {
    border-left: 1px solid #EBD5C9;
    border-right: 1px solid #EBD5C9;
}
.home-med-fees__table tbody tr:last-child td:last-child {
    border: 0;
}
.home-med-fees__note-title {
    color: var(--color-text);
    margin-bottom: var(--sp-xs);
    font-size: var(--fs-base);
}
.home-med-fees__extra-list {
    list-style: none;
    padding: 0;
}
.home-med-fees__extra-list li {
    font-size: var(--fs-sm);
    color: var(--color-text-sub);
    line-height: 2;
}
.home-med-fees__highlight {
    background: var(--color-accent);
    border-radius: var(--radius-sm);
    padding: var(--sp-md) var(--sp-lg);
    margin-top: var(--sp-md);
}
.home-med-fees__highlight p {
    color: #fff;
    font-size: var(--fs-base);
    line-height: 2;
}
p.home-med-fees__highlight-title {
    font-weight: 500;
    color: #fff;
    margin-bottom: var(--sp-xs);
    /*font-size: var(--fs-lg);*/
    font-size: 20px;
}

@media (max-width: 768px) {
    .home-med-fees__block {
        grid-template-columns: 1fr;
        gap: var(--sp-md);
    }
    .home-med-fees__block.home-med-fees__block--margin-bottom { margin-bottom: var(--sp-lg); }
    .home-med-fees__lead { font-size: var(--fs-sm); line-height: 1.7; }
    .home-med-fees__title { font-size: var(--fs-base); }
    .home-med-fees__icon { width: 40px; height: 40px; }
    .home-med-fees__item-label { font-size: var(--fs-sm); }
    .home-med-fees__item-text { font-size: var(--fs-sm); line-height: 1.7; }
    .home-med-fees__item-text--small { font-size: var(--fs-xs); }
    .home-med-fees__infobox p { font-size: var(--fs-xs); }
    .home-med-fees__table th,
    .home-med-fees__table td { padding: .6rem .8rem; font-size: var(--fs-sm); }
    .home-med-fees__table tbody td { font-size: var(--fs-sm); }
    .home-med-fees__note-title { font-size: var(--fs-sm); }
    .home-med-fees__extra-list li { font-size: var(--fs-xs); }
    .home-med-fees__highlight { padding: var(--sp-md); }
    .home-med-fees__highlight-title { font-size: var(--fs-base); }
    .home-med-fees__highlight p { font-size: var(--fs-sm); }
}

/* SP */
@media (max-width: 768px) {
    /* About section */
    .home-med-about {
        border-top-left-radius: 5rem;
        border-top-right-radius: 5rem;
        margin-bottom: var(--sp-xl);
    }
    .home-med-about .section-header__en { padding-top: var(--sp-xl); }
    .home-med-about__lead { font-size: var(--fs-sm); line-height: 1.7; }
    .home-med-about__photos {
        grid-template-columns: 1fr;
        gap: var(--sp-xs);
    }
    .home-med-about__photos img { height: 180px; }
    .home-med-about__summary {
        grid-template-columns: 1fr;
        gap: var(--sp-md);
    }
    .home-med-about__summary-text p { font-size: var(--fs-sm); line-height: 1.8; }
    .home-med-about__summary-img {
        text-align: center;
        justify-content: center;
    }
    .home-med-about__summary-img img { max-width: 280px; margin: 0 auto; }

    /* Detail card */
    .home-med-detail {
        padding: var(--sp-md);
        border-radius: var(--radius-md);
    }
    .home-med-detail__block {
        grid-template-columns: 1fr;
        gap: var(--sp-md);
    }
    .home-med-detail__block--visit {
        grid-template-columns: 1fr;
    }
    .home-med-detail__title { font-size: var(--fs-base); }
    .home-med-detail__desc { font-size: var(--fs-sm); line-height: 1.8; }
    .home-med-detail__item-title { font-size: var(--fs-sm); }
    .home-med-detail__item-desc { font-size: var(--fs-xs); }
    .home-med-detail__visit-body p { font-size: var(--fs-sm); }

    /* CTA card */
    .home-med-cta {
        grid-template-columns: 1fr;
        padding: var(--sp-md);
        gap: var(--sp-md);
        text-align: center;
        margin-bottom: var(--sp-xl);
        border-radius: var(--radius-md);
    }
    .home-med-cta__title { font-size: var(--fs-base); }
    .home-med-cta__bubbles { justify-content: center; flex-wrap: wrap; }
    .home-med-cta__bubble { font-size: var(--fs-xs); }
    .home-med-cta__sub { font-size: var(--fs-sm); }
    .home-med-cta__tel { font-size: 1.5rem; justify-content: center; }
    .home-med-cta__tel-icon { width: 32px; }
    .home-med-cta__hours { justify-content: center; flex-wrap: wrap; }
    .home-med-cta__hours-badge { font-size: var(--fs-xs); }
    .home-med-cta__hours-text p { font-size: var(--fs-xs); }
    .home-med-cta__hours-text p {
        grid-template-columns: 5.8em 1fr;
        column-gap: .5rem;
    }
    .home-med-cta__right { display: flex; flex-direction: column; align-items: center; }

    /* Team cards */
    .home-med-team .section-header__title { font-size: var(--fs-lg); }
    .home-med-team__subtitle { font-size: var(--fs-base); }
    .home-med-team__lead { font-size: var(--fs-sm); line-height: 1.7; }
    .home-med-team__block-title { font-size: var(--fs-base); }
    .home-med-team__cards {
        grid-template-columns: 1fr;
        gap: var(--sp-sm);
    }
    .home-med-team__card { padding: var(--sp-md); }
    .home-med-team__card-icon { width: 40px; height: 40px; }
    .home-med-team__card-title { font-size: var(--fs-base); }
    .home-med-team__card-desc { font-size: var(--fs-sm); line-height: 1.7; }
    .home-med-team__collab {
        grid-template-columns: 1fr;
        gap: var(--sp-md);
        padding-bottom: var(--sp-xl);
    }
    .home-med-team__collab-body p { font-size: var(--fs-sm); line-height: 1.8; }
}

/* ── checkup compare table ── */
.checkup-compare__heading-wrap {
    text-align: center;
    margin-bottom: var(--sp-lg);
}
.checkup-compare__heading-wrap .checkup-compare__heading {
    position: relative;
    font-size: var(--fs-2xl);
    font-weight: 500;
    color: var(--color-text);
    display: inline-block;
    letter-spacing: .1em;
    padding: .05rem .1rem 1rem;
    margin: 0;
    border-bottom: 0;
    background: linear-gradient(#F4E8E1, #F4E8E1) 0 0 / 100% calc(100% - .9rem) no-repeat;
    line-height: normal;
    margin-top: 5rem;
}
.checkup-compare__heading-wrap .checkup-compare__heading::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 2px;
    background: repeating-linear-gradient(
        to right,
        var(--color-accent) 0 3px,
        transparent 2px 10px
    );
}
.checkup-compare ~ .dept-reasons--accent .dept-reason__num {
    color: var(--color-accent);
}
.checkup-price .section-header__en {
    color: var(--color-accent);
}
.checkup-compare__lead {
    text-align: center;
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
    margin-bottom: var(--sp-xl);
}
.checkup-compare__table-wrap {
    overflow-x: auto;
    overflow-y: visible;
    padding-top: 20px;
    margin-bottom: var(--sp-xl);
    padding-inline: 5.9rem;
}
.checkup-compare__table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    overflow: visible;
}
.checkup-compare__table thead,
.checkup-compare__table thead tr {
    overflow: visible;
}
.checkup-compare__col--label  { width: 16%; }
.checkup-compare__col--orange { width: 41%; }
.checkup-compare__col--gap    { width: 1%; }
.checkup-compare__col--green  { width: 42%; }
/* Wide-screen rounding can leave a 1px seam on the left; nudge the split so it lands on the green side instead. */
@media (min-width: 1440px) {
    /* Higher-resolution viewports can round table columns by a pixel, so keep the split slightly tighter. */
    .checkup-compare__col--label  { width: 15%; }
    .checkup-compare__col--orange { width: 42%; }
    .checkup-compare__col--gap    { width: 1.5%; }
    .checkup-compare__col--green  { width: 42%; }
}
/* badge row */
.checkup-compare__th {
    padding: 22px var(--sp-sm) var(--sp-sm);
    text-align: center;
    vertical-align: top;
    border-left: 1px solid #ebd5c8;
    position: relative;
    overflow: visible;
}
.checkup-compare__th-label {
    border: none;
    background: transparent;
}
.checkup-compare__badge {
    display: inline-block;
    font-size: 1.125rem;
    font-weight: 500;
    padding: 5px 14px;
    border-radius: 20px;
    position: absolute;
    top: 0;
    left: 50%;
    transform: translate(-50%, -50%);
    white-space: nowrap;
}
@media (max-width: 1180px) and (min-width: 769px) {
    .checkup-compare__badge {
        font-size: .8rem;
    }
}
.checkup-compare__badge::after {
    content: '';
    position: absolute;
    bottom: -9px;
    left: 50%;
    transform: translateX(-50%);
    border-left: 7px solid transparent;
    border-right: 7px solid transparent;
}
.checkup-compare__badge--orange {
    background: var(--color-accent);
    color: var(--color-white);
}
.checkup-compare__badge--orange::after {
    border-top: 10px solid var(--color-accent);
}
.checkup-compare__badge--green {
    background: #5a9e7c;
    color: var(--color-white);
}
.checkup-compare__badge--green::after {
    border-top: 10px solid #5a9e7c;
}
.checkup-compare__col-title {
    display: block;
    font-size: var(--fs-xl);
    font-weight: 500;
    color: var(--color-text);
    padding: var(--sp-xs) 0 var(--sp-xs);
}
/* column bg + borders */
.checkup-compare__th--orange {
    background: #EBD5C9;
    border: 4px solid #EBD5C9;
    border-bottom: none;
}
.checkup-compare__th--green {
    background: #D5E3DB;
    border: 4px solid #D5E3DB;
    border-bottom: none;
}
.checkup-compare__th-gap { background: transparent; border: none; }

/* alternating row backgrounds — label and gap columns only */
.checkup-compare__row--light th { background: var(--color-bg-light); }
.checkup-compare__row--white th { background: var(--color-white); }
.checkup-compare__row--light .checkup-compare__td-gap { background: var(--color-bg-light); }
.checkup-compare__row--white .checkup-compare__td-gap { background: var(--color-white); }

/* gap cell: no borders */
.checkup-compare__td-gap { border: none !important; }

/* orange column body cells */
.checkup-compare__table tbody tr td:nth-child(2) {
    border-left: 4px solid #EBD5C9;
    border-right: 4px solid #EBD5C9;
}
/* last row bottom border */
.checkup-compare__table tbody tr:last-child td:nth-child(2) { border-bottom: 4px solid #EBD5C9; }
.checkup-compare__table tbody tr:last-child td:nth-child(4) { border-bottom: 4px solid #D5E3DB; }

/* green column body cells */
.checkup-compare__table tbody tr td:nth-child(4) {
    border-left: 4px solid #D5E3DB;
    border-right: 4px solid #D5E3DB;
}

/* body rows */
.checkup-compare__table tbody tr th {
    padding: var(--sp-sm) var(--sp-sm);
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
    text-align: left;
    vertical-align: middle;
    line-height: 1.875;
}
.checkup-compare__table tbody tr td {
    padding: var(--sp-sm) var(--sp-md);
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    vertical-align: middle;
    line-height: 2;
}
.checkup-compare__table tbody tr + tr td {
    border-top: 0;
    background: repeating-linear-gradient(
        to right,
        #ebd5c8 0 2px,
        transparent 2px 10px
    ) top left / 100% 2px no-repeat;
}
.checkup-compare__table tbody tr td ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
.checkup-compare__table tbody tr td ul li::before {
    content: '- ';
}
.checkup-compare__note {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
    margin-top: var(--sp-lg);
    margin-bottom: 12rem;
}

/* SP stacked cards — hidden on desktop */
.checkup-flow__tel-link {
    color: #44A06B;
    text-decoration: underline;
    text-underline-offset: .18em;
    text-decoration-thickness: 1px;
}
.checkup-flow__tel-link:hover {
    color: var(--color-accent);
}
.checkup-compare__sp { display: none; }

@media (max-width: 768px) {
    .checkup-compare__table-wrap { display: none; }
    .checkup-compare__sp { display: block; }
}

.checkup-compare__sp-card {
    margin-bottom: var(--sp-sm);
    border-radius: var(--radius-sm);
    overflow: hidden;
    border: 1px solid #ebd5c8;
}
.checkup-compare__sp-label {
    background: var(--color-bg-light);
    font-size: var(--fs-xs);
    font-weight: 700;
    color: var(--color-text);
    padding: var(--sp-xs) var(--sp-sm);
    border-bottom: 1px dashed #ebd5c8;
}
.checkup-compare__sp-cols {
    display: grid;
    grid-template-columns: 1fr 1fr;
}
.checkup-compare__sp-col {
    padding: var(--sp-sm);
    font-size: var(--fs-xs);
    color: var(--color-text-sub);
    line-height: 1.7;
}
.checkup-compare__sp-col--orange { background: #fdf3ee; }
.checkup-compare__sp-col--green  { background: #eef5f0; border-left: 1px solid #c5ddd0; }
.checkup-compare__sp-col ul { list-style: none; margin: 0; padding: 0; }
.checkup-compare__sp-col ul li::before { content: '- '; }

/* ── symptom box ── */
.gastro-symptoms {
    border: 4px solid #EBD5C9;
    border-radius: var(--radius-md);
    padding: var(--sp-xl);
    margin-bottom: 12rem;
    margin-top: 1.5rem;
}
.gastro-symptoms__title {
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
    padding-bottom: var(--sp-md);
    border-bottom: 2px solid #EBD5C9;
    margin-bottom: 0;
}
.gastro-symptoms__grid {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: .5rem 1rem;
}
.gastro-symptoms__item {
    position: relative;
    padding-bottom: .6rem;
    border-bottom: none;
    font-size: var(--fs-base);
    color: var(--color-text);
    display: flex;
    align-items: center;
    gap: var(--sp-xs);
}
@media (min-width: 769px) {
    .gastro-symptoms__item:nth-child(-n + 4) { padding-top: 1.5rem; }
}
.gastro-symptoms__item::before {
    content: '・';
    color: var(--color-accent);
    flex-shrink: 0;
}
.gastro-symptoms__item::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 2px;
    background: repeating-linear-gradient(
        to right,
        #ebd5c8 0 3px,
        transparent 2px 10px
    );
}
.gastro-symptoms__note {
    text-align: right;
    font-size: var(--fs-sm);
    color: var(--color-text-sub);
    margin-top: var(--sp-sm);
}

/* ── exam section ── */
.gastro-exam__sub-head {
    margin-bottom: 1rem;
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
}
.gastro-exam__sub-icon { display: block; }

.gastro-exam__block--bordered {
    position: relative;
    border-top: none;
    padding-top: calc(var(--sp-xl) + 2px);
    padding-bottom: 6rem;
}
.gastro-exam__block--bordered::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    height: 2px;
    background: repeating-linear-gradient(
        to right,
        var(--color-accent) 0 3px,
        transparent 2px 10px
    );
}
.gastro-exam .gastro-exam__block--bordered {
    padding-top: 1rem;
}
.gastro-exam__list {
    list-style: none;
    margin: var(--sp-md) 0 1rem;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--sp-xs);
}
.gastro-exam__list li {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    padding-left: 1.2em;
    position: relative;
}
.gastro-exam__list li::before {
    content: '・';
    position: absolute;
    left: 0;
    color: var(--color-accent);
}

/* ── overlapping image composite (mirrors top-about__overlap) ── */
.gastro-exam__img-wrap {
    position: relative;
    align-self: start;
    aspect-ratio: 5 / 4;
}
.gastro-exam__overlap-img {
    position: absolute;
    border-radius: var(--radius-md);
    object-fit: cover;
    display: block;
}
/* gastro overlap: square top-left, landscape bottom-right */
.gastro-exam__overlap-img--back {
    width: min(100%, 450px);
    aspect-ratio: 3 / 2;
    top: auto;
    right: 0;
    bottom: -20px;
    left: auto;
    z-index: 1;
}
/* square on top: top-left */
.gastro-exam__overlap-img--front {
    width: min(100%, 450px);
    aspect-ratio: 1 / 1;
    top: -100px;
    left: 0;
    right: auto;
    bottom: auto;
    z-index: 2;
}

/* ── gastro SP ── */
@media (max-width: 768px) {
    /* Symptoms box */
    .gastro-symptoms { padding: var(--sp-md); border-width: 2px; }
    .gastro-symptoms__title { font-size: var(--fs-base); padding-top: 1rem; }
    .gastro-symptoms__grid { grid-template-columns: 1fr 1fr; gap: .3rem .5rem; padding-top: 1rem;1rem; }
    .gastro-symptoms__item { font-size: var(--fs-xs); padding-bottom: .4rem; }

    /* Exam section */
    .gastro-exam__sub-head { font-size: var(--fs-base); }
    .gastro-exam__block--bordered { padding-bottom: var(--sp-xl); }
    .gastro-exam__list li { font-size: var(--fs-sm); }

    /* overlapping images: stack or shrink */
    .gastro-exam__img-wrap {
        aspect-ratio: 4/3;
        margin-top: var(--sp-md);
    }
    .gastro-exam__overlap-img--back {
        width: 70%;
        bottom: 0;
        left: auto;
        right: 0;
    }
    .gastro-exam__overlap-img--front {
        width: 55%;
        top: 0;
        left: 0;
        right: auto;
    }
}

/* ── checkup reserve card ── */
.checkup-reserve__card {
    background: var(--color-accent);
    border-radius: 20px;
    padding: 2.5rem;
    text-align: center;
    max-width: 800px;
    margin: auto;
    margin-top: 5rem;
}
.checkup-reserve__label {
    font-size: var(--fs-xl);
    color: var(--color-white);
    margin-bottom: var(--sp-md);
}
.checkup-reserve__tel {
    display: inline-flex;
    align-items: center;
    gap: var(--sp-sm);
    font-size: 3.75rem;
    font-weight: 700;
    color: var(--color-white);
    text-decoration: none;
    margin-bottom: var(--sp-lg);
    line-height: 0.733;
    letter-spacing: 10%;
    font-family: 'Montserrat', sans-serif;
}
.checkup-reserve__tel-icon {
    width: 2.5rem;
    height: 2.5rem;
    object-fit:cover;
}
.checkup-reserve__hours {
    display: inline-flex;
    align-items: flex-start;
    gap: var(--sp-md);
    margin-bottom: var(--sp-lg);
}
.checkup-reserve__hours-badge {
    background: var(--color-white);
    color: var(--color-accent);
    font-size: var(--fs-base);
    font-weight: 500;
    line-height: 1.5;
    padding: 3px 10px;
    border-radius: var(--radius-full);
    white-space: nowrap;
    margin-top: 2px;
}
.checkup-reserve__hours-text p {
    font-size: var(--fs-base);
    font-weight: 500;
    line-height: 1.5;
    color: var(--color-white);
    text-align: left;
}
.checkup-reserve__note {
    font-size: var(--fs-sm);
    color: rgba(255,255,255,0.85);
    line-height: 1.5;
}

@media (max-width: 768px) {
    .checkup-reserve__card { 
        padding: var(--sp-md); 
        margin-top: var(--sp-xl); 
        border-radius: 20px;
        max-width: 100%;
    }
    .checkup-reserve__label { font-size: var(--fs-base); margin-bottom: var(--sp-sm); }
    .checkup-reserve__tel { font-size: 1.5rem; gap: var(--sp-xs); margin-bottom: var(--sp-md); }
    .checkup-reserve__tel-icon { width: 1.5rem; height: 1.5rem; }
    .checkup-reserve__hours { flex-direction: column; align-items: center; gap: var(--sp-xs); margin-bottom: var(--sp-sm); }
    .checkup-reserve__hours-badge { font-size: var(--fs-xs); }
    .checkup-reserve__hours-text p { text-align: center; font-size: var(--fs-xs); }
    .checkup-reserve__note { font-size: var(--fs-xs); }

    /* reduce gap after breadcrumb and between intro/compare */
    .dept-intro.section { padding-top: var(--sp-md); padding-bottom: 0; }
    .checkup-compare.section { padding-top: var(--sp-md); }
}

/* ── checkup price ── */
.checkup-price__lead {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
    margin-bottom: var(--sp-xl);
}
.checkup-price__divider {
    border: 0;
    height: 2px;
    background: repeating-linear-gradient(
        to right,
        #E38352 0 2px,
        transparent 2px 10px
    );
    margin: var(--sp-md) 0;
}
.checkup-price__divider--spacer {
    background: transparent;
    height: 2rem;
}
.checkup-price__category {
    display: grid;
    grid-template-columns: 350px 1fr;
    gap: var(--sp-lg);
    align-items: start;
    margin-block: 3rem;
}
.checkup-price__category-label {
    display: flex;
    align-items: center;
    gap: var(--sp-sm);
    /* padding-top: var(--sp-sm); */
}
/* double-circle (mastercard-style) icon */
.checkup-price__dual-circle {
    position: relative;
    width: 22px;
    height: 12px;
    flex-shrink: 0;
}
.checkup-price__dual-circle::before,
.checkup-price__dual-circle::after {
    content: '';
    position: absolute;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    top: 0;
}
.checkup-price__dual-circle--orange { background: none; }
.checkup-price__dual-circle--green::before  { background: #5a9e7c; left: 0; opacity: 1; }
.checkup-price__dual-circle--green::after   { background: #5a9e7c; left: 10px; opacity: 0.5; }
.checkup-price__category-name {
    font-size: var(--fs-xl);
    font-weight: 500;
    color: var(--color-text);
}
.checkup-price__cards {
    display: flex;
    flex-direction: column;
    gap: var(--sp-sm);
}
.checkup-price__card {
    background: var(--color-bg-light);
    border-radius: var(--radius-sm);
    padding: var(--sp-md) var(--sp-lg);
}
/* remove default details marker */
.checkup-price__card summary { list-style: none; }
.checkup-price__card summary::-webkit-details-marker { display: none; }

.checkup-price__card-header {
    display: flex;
    align-items: baseline;
    gap: var(--sp-sm);
    cursor: pointer;
    position: relative;
}
/* +/- toggle icon via ::after */
.checkup-price__card-header::after {
    content: '−';
    margin-left: auto;
    color: #E38352;
    font-size: var(--fs-lg);
    font-weight: 500;
    line-height: 1;
    flex-shrink: 0;
}
.checkup-price__card:not([open]) .checkup-price__card-header::after {
    content: '+';
}
.checkup-price__course {
    font-size: var(--fs-md);
    font-weight: 500;
    color: var(--color-text);
    line-height: 1.5;
}
.checkup-price__amount {
    font-size: var(--fs-md);
    font-weight: 500;
    color: var(--color-text);
    margin-left: var(--sp-sm);
    line-height: 1.778;
}
.checkup-price__amount small {
    font-size: var(--fs-xs);
    color: var(--color-text-sub);
}
.checkup-price__card-divider {
    border: none;
    border-top: 2px solid #EBD5C9;
    margin: var(--sp-sm) 0;
}
.checkup-price__card-desc {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
}
.checkup-price__note-inline {
    font-size: var(--fs-xs);
    font-weight: 400;
    color: var(--color-text-sub);
    margin-left: var(--sp-xs);
}
.checkup-price__list {
    list-style: none;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.checkup-price__list li {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
}
.checkup-price__list li::before {
    content: '- ';
}
.checkup-price__link {
    color: var(--color-primary);
    font-size: var(--fs-base);
    text-decoration: underline;
}
.checkup-price__link:hover {
    color: var(--color-accent);
    opacity: 0.8;
}
.checkup-price__footnote {
    font-size: var(--fs-base);
    color: var(--color-text-sub);
    line-height: 2;
    padding-top: var(--sp-md);
    padding-bottom: 2rem;
}

@media (max-width: 768px) {
    .checkup-price__category { grid-template-columns: 1fr; gap: var(--sp-sm); margin-block: var(--sp-lg); }
    .checkup-price__category-name { font-size: var(--fs-base); }
    .checkup-price__card { padding: var(--sp-sm) var(--sp-md); }
    .checkup-price__course { font-size: var(--fs-sm); }
    .checkup-price__amount { font-size: var(--fs-sm); }
    .checkup-price__card-desc { font-size: var(--fs-sm); line-height: 1.7; }
    .checkup-price__lead { font-size: var(--fs-sm); line-height: 1.7; }
    .checkup-price__footnote { font-size: var(--fs-xs); line-height: 1.7; }
    .checkup-price__list li { font-size: var(--fs-sm); }
    .checkup-price__link { font-size: var(--fs-sm); }
    .checkup-compare__heading-wrap .checkup-compare__heading { font-size: var(--fs-lg); margin-top: var(--sp-xl); }
    .checkup-compare__lead { font-size: var(--fs-sm); line-height: 1.7; }
    .checkup-compare__note { font-size: var(--fs-sm); line-height: 1.7; }
}

/* ── Aesthetic Medicine — Price section ── */
.aesthetic-price {
    background: var(--color-accent);
    padding-bottom: 7rem;
}
.aesthetic-price .section-header__en,
.aesthetic-price .section-header__title {
    color: #fff;
}
.aesthetic-price__card {
    background: #fff;
    border-top-left-radius: 1.25rem;
    border-bottom-left-radius: 1.25rem;
    padding: var(--sp-3xl) 10rem var(--sp-3xl) var(--sp-3xl);
    display: flex;
    flex-direction: column;
    gap: var(--sp-2xl);
    width: calc(100% + 44vw - 50% + var(--container-pad));
}
.aesthetic-price__group-title {
    font-size: var(--fs-lg);
    font-weight: 500;
    color: var(--color-text);
    padding-bottom: var(--sp-sm);
    border-bottom: 1px solid #EBD5C9;
    margin: 0 0 var(--sp-md);
}
.aesthetic-price__group-note {
    font-size: var(--fs-sm);
    font-weight: 400;
    color: var(--color-text-sub);
    margin-left: .5rem;
}
.aesthetic-price__note {
    font-size: var(--fs-xs);
    color: var(--color-text-sub);
    margin-top: var(--sp-sm);
}
.aesthetic-price__table {
    width: 100%;
    border-collapse: collapse;
}
.aesthetic-price__table thead th {
    background: #EBD5C9;
    padding: var(--sp-sm) var(--sp-md);
    font-size: var(--fs-base);
    font-weight: 500;
    color: var(--color-text);
    border-bottom: 1px solid #EBD5C9;
}
.aesthetic-price__table thead th:first-child {
    text-align: center;
    width: 51%;
    border-right: 1px solid #F7F4F2;
}
.aesthetic-price__table thead th:last-child {
    text-align: center;
}
.aesthetic-price__table tbody td {
    padding: var(--sp-sm) var(--sp-sm) var(--sp-sm) var(--sp-xl);
    border-bottom: 1px solid #EBD5C9;
    font-size: var(--fs-base);
    font-weight: 500;
    color: var(--color-text);
    vertical-align: middle;
}
.aesthetic-price__table tbody td:first-child {
    background: #F7F4F2;
}
.aesthetic-price__table tbody td:last-child {
    text-align: right;
    line-height: 2;
    font-weight: 400;
    padding: var(--sp-sm) var(--sp-xl) var(--sp-sm) var(--sp-sm);
}
@media (max-width: 768px) {
    .aesthetic-price__card { padding: var(--sp-sm); }
    .aesthetic-price__table thead th,
    .aesthetic-price__table thead th:first-child,
    .aesthetic-price__table thead th:last-child { font-size: var(--fs-xs); padding: .4rem .5rem; width: auto; text-align: left; }
    .aesthetic-price__table tbody td { font-size: var(--fs-xs); padding: .5rem .5rem; line-height: 1.6; }
    .aesthetic-price__table tbody td:last-child { text-align: left; line-height: 1.6; }
}

/* ================================================================
   プライバシーポリシー
================================================================ */
.policy-content {
    background: var(--color-white);
}
/* .policy-content .container {
    max-width: 1100px;
} */

/* 個人情報保護方針 2カラムintro */
.policy-intro {
    display: grid;
    grid-template-columns: 300px 1fr;
    gap: var(--sp-xl);
    align-items: start;
    padding-block: var(--sp-xl);
    margin-bottom: var(--sp-lg);
}
.policy-intro__title {
    font-size: var(--fs-2xl);
    font-weight: 500;
    color: var(--color-primary);
    line-height: 1.5;
}
.policy-intro__body {
    font-size: var(--fs-base);
    line-height: 2;
    color: var(--color-text);
}

.policy-section {
    padding-block: var(--sp-xl);
}

.policy-section.policy-section--margin-bottom {
    margin-bottom: 8rem;
}

.policy-section__title {
    font-size: var(--fs-lg);
    font-weight: 500;
    margin-bottom: var(--sp-md);
    padding-bottom: var(--sp-md);
    border-bottom: 1px solid var(--color-border);
}
.policy-section__title.policy-section__title--border-bottom-none {
    border-bottom: none;
    padding-bottom: 0;
}

.policy-section__body {
    font-size: var(--fs-base);
    line-height: 2;
    color: var(--color-text);
}
.policy-section__body p + p,
.policy-section__body p + h3,
.policy-section__body ul + p { margin-top: var(--sp-md); }

.policy-section__sub {
    font-size: var(--fs-sm);
    font-weight: 700;
    color: var(--color-text);
    margin: var(--sp-md) 0 var(--sp-xs);
}
.policy-section__sub::before {
    content: '■';
    margin-right: .25em;
    color: var(--color-text);
}

.policy-list {
    list-style: none;
    padding: 0;
    margin-top: var(--sp-sm);
    display: flex;
    flex-direction: column;
}
.policy-list li {
    list-style: none;
    padding-left: 1.25rem;
    position: relative;
    font-size: var(--fs-base);
    line-height: 1.8;
}
.policy-list li::before {
    content: '-';
    position: absolute;
    left: 0;
    color: var(--color-text-sub);
}

.policy-list--num {
    list-style: none;
    counter-reset: policy-num;
}
.policy-list--num li {
    counter-increment: policy-num;
    padding-left: 2rem;
    margin-left: 2rem;
}
.policy-list--num li::before {
    content: counter(policy-num) ')';
    color: var(--color-text-sub);
    font-size: var(--fs-sm);
}

@media (max-width: 768px) {
    .policy-intro {
        grid-template-columns: 1fr;
        gap: var(--sp-md);
    }
    .policy-intro__title { font-size: var(--fs-lg); }
    .policy-intro__body { font-size: var(--fs-sm); line-height: 1.8; }
    .policy-section { padding-block: var(--sp-md); }
    .policy-section.policy-section--margin-bottom { margin-bottom: var(--sp-xl); }
    .policy-section__title { font-size: var(--fs-base); padding-bottom: var(--sp-xs); }
    .policy-section__body { font-size: var(--fs-sm); line-height: 1.8; }
    .policy-section__sub { font-size: var(--fs-xs); }
    .policy-list li { font-size: var(--fs-sm); }
    .policy-list--num li { padding-left: 1.5rem; margin-left: 1rem; }
}

/* ================================================================
   Shared Curved Section Overrides
================================================================ */
.clinic-greeting,
#general.medical-index-section,
.dept-reasons.section--bg-green,
.dept-reasons.dept-reasons--accent.section--bg-light,
.guide-section--online {
    --section-curve-bg: var(--color-bg-green);
    --section-curve-width: max(180vw, 2400px);
    --section-curve-height: clamp(14rem, 20vw, 16rem);
    --section-curve-top: clamp(-3rem, -4vw, -2.25rem);
    --section-curve-bottom: clamp(-4rem, -4vw, -2.25rem);
    position: relative;
    isolation: isolate;
    overflow: visible;
    margin-top: clamp(2.5rem, 7vw, 6rem);
    padding-top: clamp(3rem, 5vw, 4.5rem);
}
#general.medical-index-section {
    --section-curve-bg: var(--color-bg-green);
    background: linear-gradient(to bottom, #f1f7f5 85%, #ffffff 100%);
    width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    padding-left: clamp(2.5rem, 6vw, 6rem);
    padding-right: clamp(2.5rem, 6vw, 6rem);
    z-index: 2;
    padding-top: 1rem;
}
.clinic-greeting {
    width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    border-radius: 0;
    padding-left: clamp(2rem, 6vw, 6rem);
    padding-right: clamp(2rem, 6vw, 6rem);
}
.clinic-greeting > .section-header,
.clinic-greeting__inner {
    max-width: var(--container-max);
    margin-left: auto;
    margin-right: auto;
}
.clinic-greeting__inner {
    padding-left: clamp(1rem, 3vw, 3rem);
    padding-right: clamp(1rem, 3vw, 3rem);
}
#general.medical-index-section .medical-dept-grid,
#specialized.medical-index-section .medical-dept-grid {
    margin-left: clamp(2rem, 4vw, 4.5rem);
    margin-right: clamp(2rem, 4vw, 4.5rem);
    max-width: 85%;
    margin-inline: auto;
}
.dept-reasons.dept-reasons--accent.section--bg-light {
    --section-curve-bg: var(--color-bg-light);
}
.clinic-greeting::before,
#general.medical-index-section::before,
.dept-reasons.section--bg-green::before,
.dept-reasons.dept-reasons--accent.section--bg-light::before,
.guide-section--online::before {
    content: '';
    position: absolute;
    z-index: -1;
    left: 50%;
    top: var(--section-curve-top);
    width: var(--section-curve-width);
    height: var(--section-curve-height);
    background: var(--section-curve-bg);
    border-radius: 50% 50% 0 0 / 100% 100% 0 0;
    transform: translateX(-50%);
}
.clinic-greeting,
.dept-reasons.dept-reasons--accent.section--bg-light,
.guide-section--online {
    margin-bottom: clamp(3.5rem, 8vw, 9rem);
    padding-bottom: clamp(3rem, 5vw, 4.5rem);
}
.clinic-greeting::after,
.dept-reasons.dept-reasons--accent.section--bg-light::after,
.guide-section--online::after {
    content: '';
    position: absolute;
    z-index: -1;
    left: 50%;
    bottom: var(--section-curve-bottom);
    width: var(--section-curve-width);
    height: var(--section-curve-height);
    background: var(--section-curve-bg);
    border-radius: 0 0 50% 50% / 0 0 100% 100%;
    transform: translateX(-50%);
}
/* .vacc-reservation {
    border-radius: clamp(2rem, 6vw, 5rem) clamp(2rem, 6vw, 5rem) 0 0;
    overflow: hidden;
} */
#general.medical-index-section::after {
    content: '';
    display: block;
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    bottom: -1px;
    width: 100vw;
    height: 535px;
    background: url('../images/sliding-image-bg.png') center bottom / 100% 100% no-repeat;
    z-index: -1;
    pointer-events: none;
    top: 73%
}
#specialized.medical-index-section::before {
    content: none;
}
#specialized.medical-index-section {
    width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    padding-left: clamp(2rem, 6vw, 6rem);
    padding-right: clamp(2rem, 6vw, 6rem);
    z-index: 1;
    margin-top: 5rem;
}
#specialized.medical-index-section .section-header__en {
    color: var(--color-accent);
}
#specialized.medical-index-section > * {
    position: relative;
    z-index: 1;
}

@media (max-width: 768px) {
    .clinic-greeting,
    #general.medical-index-section,
    .dept-reasons.section--bg-green,
    .dept-reasons.dept-reasons--accent.section--bg-light,
    .guide-section--online {
        --section-curve-width: 180vw;
        --section-curve-height: 3rem;
        --section-curve-top: -2.25rem;
        --section-curve-bottom: -2.25rem;
    }
    #general.medical-index-section,
    #specialized.medical-index-section {
        padding-left: var(--sp-md);
        padding-right: var(--sp-md);
    }
    .clinic-greeting {
        padding-left: var(--sp-md);
        padding-right: var(--sp-md);
    }
    .clinic-greeting__inner {
        padding-left: 0;
        padding-right: 0;
    }
    #general.medical-index-section .medical-dept-grid,
    #specialized.medical-index-section .medical-dept-grid {
        margin-left: 0;
        margin-right: 0;
    }
}

/* Final arrow asset overrides: use one icon layer per span and keep the existing hover motion. */
.btn [aria-hidden="true"],
.top-about__btn-arrow,
.top-feature__btn-arrow,
.guide-online-card__btn-arrow,
.top-shop__sub-arrow,
.medical-dept-card__btn-arrow,
.dept-reason__link [aria-hidden="true"] {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    color: transparent;
    font-size: 0;
    background-image: none !important;
}
.btn [aria-hidden="true"]::before,
.top-about__btn-arrow::before,
.top-feature__btn-arrow::before,
.guide-online-card__btn-arrow::before,
.top-shop__sub-arrow::before,
.medical-dept-card__btn-arrow::before,
.dept-reason__link [aria-hidden="true"]::before {
    content: '';
    display: block;
    width: 10px;
    height: 9px;
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
    transition: background-image var(--tr), transform var(--tr), filter var(--tr);
}
.btn [aria-hidden="true"]::before,
.top-about__btn-arrow::before,
.guide-online-card__btn-arrow::before {
    background-image: url('../images/arrows/green-arrow-md.png');
}
.top-feature__btn-arrow::before {
    background-image: url('../images/arrows/green-arrow-md.png');
}
.top-feature--orange .top-feature__btn-arrow::before,
.medical-dept-card__btn-arrow::before {
    background-image: url('../images/arrows/orange-arrow-md.png');
}
#general .medical-dept-card__btn-arrow::before {
    background-image: url('../images/arrows/green-arrow-md.png');
}
.top-shop__btn [aria-hidden="true"]::before,
.dept-reason__link [aria-hidden="true"]::before,
.top-shop__sub-arrow::before {
    background-image: url('../images/arrows/white-arrow-md.png');
}
.btn--primary:hover [aria-hidden="true"]::before,
.top-about__btn:hover .top-about__btn-arrow::before,
.guide-online-card__btn:hover .guide-online-card__btn-arrow::before,
.top-feature__btn:hover .top-feature__btn-arrow::before,
.top-feature--orange .top-feature__btn:hover .top-feature__btn-arrow::before,
#general .medical-dept-card__btn:hover .medical-dept-card__btn-arrow::before,
.medical-dept-card__btn:hover .medical-dept-card__btn-arrow::before {
    background-image: url('../images/arrows/white-arrow-md.png');
}
.guide-anchor-nav__arrow {
    color: transparent;
    font-size: 0;
    background-image: none;
    filter: none;
}
.guide-anchor-nav__arrow::before {
    content: '';
    position: absolute;
    inset: 0;
    width: auto;
    height: auto;
    transform: none;
    background: url('../images/arrows/green-down.png') center / 9px 10px no-repeat;
    filter: none;
}
.guide-anchor-nav__arrow::after {
    content: none;
}
.guide-anchor-nav__btn:hover .guide-anchor-nav__arrow {
    background-image: none;
    filter: none;
}
.guide-anchor-nav__btn:hover .guide-anchor-nav__arrow::before {
    background: url('../images/arrows/green-down.png') center / 9px 10px no-repeat;
    filter: brightness(0) invert(1);
}

.dept-reason__link [aria-hidden="true"] {
    width: 1.6rem;
    height: 1.6rem;
    background: var(--color-white);
    color: var(--color-primary);
    border-radius: 9999px;
    flex-shrink: 0;
    transition: background var(--tr), color var(--tr), transform var(--tr);
}
.dept-reason__link [aria-hidden="true"]::before {
    background-image: url('../images/arrows/green-arrow-md.png');
}
.dept-reason__link:hover [aria-hidden="true"] {
    background: var(--color-primary);
    color: var(--color-white);
    transform: translateX(4px);
}
.dept-reason__link:hover [aria-hidden="true"]::before {
    background-image: url('../images/arrows/white-arrow-md.png');
}
.dept-download .page-banners {
    margin-top: 0;
}

/* ================================================================
   SP: 1rem未満のテキストを最低1remに引き上げ（可読性確保）
   ※アイコン・装飾記号（before/after の矢印・ドット等）は対象外
================================================================ */
@media (max-width: 768px) {
    .site-footer__parking,
    .pagetop-btn__label,
    .hours-floating-panel__notice p:not(.hours-floating-panel__notice-title),
    .top-intro__label,
    .top-news__tab,
    .top-news__cat,
    .top-contact__phone-hours,
    .top-contact__phone-note,
    .top-contact__online-note,
    .top-contact__ai-note,
    .top-contact__banner-desc,
    .clinic-progress__media .top-about__img-caption,
    .clinic-mvv__sublabel,
    .medical-card__badge,
    .ed-cause__pills li,
    .home-med-team__card-title small {
        font-size: 1rem;
    }
}
