/* 共通の文字組みとページ幅。 */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; --header-height: 97.2px; }
#content, .home-section, .doctor-profile { scroll-margin-top: calc(var(--header-height) + 16px); }
.menu-open, .menu-open body { overflow: hidden; }
body { margin: 0; color: #272626; background: #fff; font: 16px/1.7 Arial, Helvetica, sans-serif; -webkit-font-smoothing: antialiased; display: flex; flex-direction: column; min-height: 100vh; }
main { flex: 1; min-width: 0; }
h1,h2,h3,h4,h5,h6,p,ul,ol,figure { margin: 0; }
h1 { font-size: 2em; line-height: 1.1; }
h2 { font-size: 1.75em; line-height: 1.2; }
h3 { font-size: 1.5em; line-height: 1.4; margin-bottom: .8rem; }
h4 { font-size: 1.25em; line-height: 1.5; }
p { margin-bottom: 30px; }
a { color: #2f5aae; text-decoration: none; }
a:hover { opacity: .9; }
img { height: auto; max-width: 100%; vertical-align: middle; }
button,input,textarea,select { font: inherit; }
button,a { -webkit-tap-highlight-color: transparent; }
button { cursor: pointer; }
:focus-visible { outline: 3px solid #2f5aae; outline-offset: 4px; }
[hidden] { display: none !important; }
.container { width: 100%; max-width: 1170px; padding: 0 15px; margin: 0 auto; }
.screen-reader-text { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.skip-link:focus { clip: auto; width: auto; height: auto; padding: 12px 20px; background: #fff; z-index: 100; left: 10px; top: 10px; }
.btn { background: #2f5aae; color: #fff; padding: 13px 15px; border-radius: 3px; font-weight: 700; font-size: 16px; line-height: 1.6; text-decoration: none; }
.btn:hover { color: #fff; }
.no-margin { margin: 0; }
.caution_msg { color: red; }

/* ヘッダー・モバイルメニュー。 */
.site-header { position: sticky; top: 0; background: #fff; box-shadow: 0 -1px 3px rgba(0,0,0,.1); z-index: 5; }
.header-inner { min-height: 92.65625px; display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.site-brand { display: flex; flex-direction: column; color: #272626; padding: 18px 0; }
.site-title { font-size: 20px; line-height: 1.7; font-weight: 700; }
.site-tagline { font-size: 16px; line-height: 1.7; margin-top: 0; }
.primary-menu { list-style: none; display: flex; gap: 20px; padding: 0; margin: 0; }
.primary-menu a { color: #000; font-weight: 500; line-height: 1.6; }
.primary-menu a:hover { color: #000; }
.menu-toggle,.menu-close { display: none; align-items: center; width: 47px; height: 34px; border: 1px solid #f0f0f0; border-radius: 0; background: #fff; color: #272626; padding: 10px 15px; }
.menu-toggle:focus,.menu-close:focus { outline: 1px solid; outline-offset: 0; }
.menu-bars { display: block; }
.menu-bar { display: block; position: relative; width: 15px; height: 2px; background: currentColor; transition: all .1s ease; }
.menu-bar:nth-child(2) { margin: 3px 0; }
.menu-open .menu-bar:first-child { transform: rotate(45deg); top: 5px; }
.menu-open .menu-bar:nth-child(2) { opacity: 0; }
.menu-open .menu-bar:last-child { transform: rotate(-45deg); bottom: 5px; }
.menu-first-visit,.menu-overlay { display: none; }
.site-footer { background: #121212; color: white; text-align: center; padding: 12px 0; }
.site-footer p { font-size: 16px; line-height: 27.2px; margin: 0; padding: 0 15px; }

/* トップページ。 */
/* PCでは元画像（2400×1000）の縦横比を保ち、下側の顔まで全体を表示する。 */
.hero { aspect-ratio: 12 / 5; background: var(--hero-desktop) top center/cover no-repeat; }
.home-container { width: 100%; max-width: 1140px; padding: 10px; margin: 0 auto; display: flex; flex-direction: column; }
.section-heading { display: flex; flex-direction: column; gap: 20px; margin-bottom: 20px; text-align: center; }
.section-number { font: 700 273px/1 Poppins, sans-serif; color: rgba(224,224,224,.3); margin: -20px 0 -150px; pointer-events: none; }
.section-heading h2 { position: relative; color: #313131; font: 600 50px/75px 'Libre Baskerville', sans-serif; margin: 0; padding: 0 82px; }
.section-subtitle { font: 400 18px/18px Poppins, sans-serif; color: #616161; margin: 0; }
.information { background: #f7f7f7; padding-bottom: 125px; }
.information .section-subtitle, .doctor-message .section-subtitle { margin-bottom: 35px; }
.clinic-alert { background: #f2dede; border-left: 5px solid #ebcccc; color: #a94442; padding: 15px; margin-bottom: 20px; font: 400 16px/1.7 Roboto, sans-serif; }
.clinic-alert strong { display: block; font-size: 16px; line-height: 27.2px; font-weight: 600; }
.clinic-alert p { margin-bottom: 0; }
.information-grid { display: grid; grid-template-columns: 1fr 1fr; margin-top: 50px; }
.clinic-card { margin: 0 13px; align-self: start; }
.clinic-card > img { width: 100%; }
.clinic-card-body { background: #fff; padding: 24px 20px 27px; border-bottom: 3px solid #fc5f45; }
.clinic-card h3 { color: #313131; font: 500 20px/33px Poppins,sans-serif; margin-bottom: 8px; }
.clinic-card p,.clinic-details { font: 400 16px/27px Poppins,sans-serif; color: #616161; margin: 0; }
.clinic_info { width: 64px; display: inline-block; }
.home-news { padding-left: 25px; }
.news-card { padding: 20px 35px 23px; box-shadow: 0 -3px #fc5f45 inset; background: #fff; margin-bottom: 25px; font: 400 16px/27px Poppins,sans-serif; color: #616161; }
.news-card h3 { font: 500 18px/26px Poppins,sans-serif; margin: 0; }
.news-card h3 { color: #313131; }
.news-card time { display: block; color: #fc5f45; }
/* 旧カレンダーのSVGパスを背景に使用。Font Awesome Free 5.15.3 by @fontawesome / CC BY 4.0: https://fontawesome.com/license/free */
.calendar-icon { display: inline-block; width: .875em; height: 1em; vertical-align: -.125em; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath fill='%23fc5f45' d='M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z'/%3E%3C/svg%3E") center/contain no-repeat; }
.news-content { margin: 10px 0; }
.news-content p { margin-bottom: 30px; }
.doctor-message { position: relative; background: var(--doctor-background) center center; background-attachment: fixed; padding-bottom: 150px; }
.doctor-message::before { content: ''; position: absolute; inset: 0; background: rgba(38,39,50,.85); }
.doctor-message > .home-container { position: relative; }
.doctor-message .section-heading h2,.doctor-message .section-subtitle { color: white; }
.doctor-message-grid { display: grid; grid-template-columns: 33.661% 66.339%; margin-top: 40px; }
.doctor-photo { align-self: center; }
.doctor-photo img { border: 10px solid rgba(0,0,0,.2); }
.doctor-letter { background-color: white; background-position: center; background-size: cover; margin: 44px 0 45px; padding-top: 25px; color: #616161; }
.doctor-letter-body { display: flow-root; padding: 0 75px; font: 400 16px/27px Poppins,sans-serif; margin-bottom: 20px; }
.doctor-signature { margin: 0 0 20px 75px; text-align: center; }
.doctor-signature h3 { font: 500 18px/26px Poppins,sans-serif; color: #313131; margin: 0; }
.doctor-signature p { font: 400 16px/27px Poppins,sans-serif; margin: 0; }
.color-rule::after { content: ''; display: block; height: 3px; background: linear-gradient(to right,#fc5f45 0 25%,#38c695 25% 50%,#b27cf5 50% 75%,#feb960 75%); }
.doctor-profile { padding: 150px 0 150px 30px; }
.profile-container { max-width: 1170px; display: grid; grid-template-columns: 45.225% 54.775%; margin: 0 auto; align-items: center; }
.profile-photo { padding: 0; }
.profile-card { position: relative; isolation: isolate; margin: 70px 30px 60px -30px; padding-bottom: 30px; }
/* 色帯の下の余白には影を付けず、本文カードだけを囲む。 */
.profile-card::before { content: ''; position: absolute; inset: 0 0 33px; z-index: -1; background: #fff; box-shadow: 1px 1px 10px 5px rgba(0,0,0,.08); pointer-events: none; }
.profile-card .section-heading { text-align: left; padding: 10px 10px 0; }
.profile-card .section-number { margin: -15px 0 -200px; }
.profile-card h2 { font-size: 40px; }
.profile-copy { margin: 42px 10px 0; padding: 0 70px 80px 82px; font: 400 16px/27px Poppins,sans-serif; color: #616161; }
.profile-copy h3 { font-size: 1.5em; line-height: 1.4; }
.services { background: #f7f7f7; padding-bottom: 135px; }
.service-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 30px; padding: 15px; margin-top: 60px; }
.service-card { background: #fff; padding: 5px 0 15px; border-bottom: 3px solid var(--service-color); text-align: center; }
.service-card-1 { --service-color: #fc5f45; }
.service-card-2 { --service-color: #38c695; }
.service-card-3 { --service-color: #b27cf5; }
.service-card-4 { --service-color: #feb960; }
.service-card img { display: block; width: 95%; margin: 0 auto 8.1875px; transition: opacity .3s; }
.service-card a:hover img { opacity: .35; }
.service-card h3 { font: 500 18px/28px Poppins,sans-serif; color: var(--service-color); margin: 0; }
.service-card p,.service-description { font: 400 16px/27px Poppins,sans-serif; color: #7a7a7a; margin: 0; }
.reservation { padding-bottom: 125px; }
.reservation .section-heading h2 { padding: 0; }
.reservation-body { padding: 10px; color: #7a7a7a; font-family: Roboto,sans-serif; }
.timetable-content { display: flow-root; margin-bottom: 20px; }
.timetable-content h3 { color: #7a7a7a; }
.timetable-content .btn { font-size: inherit; }
.timetable_h4 { margin: 40px 0 0; }
table { width: 100%; border-collapse: collapse; margin: 20px 0; }
table td,table th { padding: 10px; border-bottom: 1px solid #f0f0f0; font-size: 16px; text-align: left; vertical-align: middle; }
table th { font-weight: 700; }
table.timetable { margin-top: 0; }
.clinic-map { width: 100%; height: 480px; border: 0; display: block; }
.clinic-notice { display: flow-root; margin: 30px 0 20px; color: #7a7a7a; font-family: Roboto,sans-serif; }
.clinic-notice ul { padding-left: 15px; margin-bottom: 0; }
.clinic-notice > ul:last-child { margin-bottom: 0; }
.clinic-notice li { margin-top: 0; }

/* 固定ページと従来のお知らせ。 */
.page-container { padding-top: 60px; padding-bottom: 30px; }
.page-title { border-bottom: 1px solid #f0f0f0; padding-bottom: 10px; margin-bottom: 20px; }
.entry-content a:not([class]) { text-decoration: underline; }
.entry-content h2 { margin-bottom: 20px; }
.entry-content ul,.entry-content ol { padding-left: 20px; margin: 30px 0; }
.entry-content li { margin-top: 10px; }
.entry-content iframe { max-width: 100%; }
.entry-content > :last-child { margin-bottom: 0; }
.entry-content p.caution_msg { padding-top: 30px; font-size: 19px; }
.entry-content .immunization_table tbody tr td:first-child { width: 220px; }
.dl_btn { display: inline-block; width: 202px; background: #fc5f45; color: #fff; font-weight: 600; padding: 10px 15px; border-radius: 20px; margin-left: 20px; }
.dl_btn:hover { color: #fff; background: #e25b44; }
.post-layout { display: flex; padding: 60px 0; }
.post-main { width: 75%; padding: 0 15px; min-width: 0; }
.post-main h1 { margin-bottom: 10px; }
.post-main .post-date { margin-bottom: 60px; }
.post-main .entry-content { padding-bottom: 60px; }
.post-date { font-size: 16px; margin-bottom: 20px; }
.post-sidebar { width: 25%; padding: 0 15px 0 45px; margin-bottom: 20px; }
.post-sidebar section { margin-bottom: 40px; }
.post-sidebar section:last-child { margin-bottom: 0; }
.post-sidebar h2 { font-size: 20px; line-height: 1.7; margin-bottom: 10px; }
.post-sidebar ul { list-style: none; padding: 0; }
.post-sidebar li { margin-top: 10px; }
.post-sidebar a { color: #272626; }
.post-archives a { color: #2f5aae; }
.archive-container { max-width: 907.5px; padding: 60px 30px 60px; }
.archive-title { border-bottom: 1px solid #f0f0f0; padding-bottom: 10px; margin-bottom: 20px; }
.posts-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 0 30px; margin-bottom: 40px; }
.archive-post { min-width: 0; padding-bottom: 50px; }
.archive-post h2 { font-size: 24px; line-height: 1.4; margin-bottom: 10px; }
.archive-post h2 a { color: #272626; }
.post-excerpt p { margin: 0; }
.pagination { margin-top: 0; }
.nav-links { display: flex; flex-wrap: wrap; }
.page-numbers { display: block; line-height: 1; margin: 0 20px 15px 0; padding: 12px 15px; background: #f4f5f7; color: #272626; border-radius: 3px; }
.page-numbers.current { background: #2f5aae; color: #fff; }
.page-numbers.dots { background: transparent; }
.alignleft { float: left; margin: 20px 20px 20px 0; }
.alignright { float: right; margin: 20px 0 20px 20px; }
.aligncenter { display: block; margin: 0 auto; }
.wp-caption { max-width: 100%; }
.wp-caption-text { text-align: center; font-size: 16px; }

@media (max-width:1024px) {
    .hero { height: 550px; aspect-ratio: auto; background-image: var(--hero-tablet); }
    .home-container { max-width: 1024px; }
    .information { padding-bottom: 60px; }
    .information-grid { grid-template-columns: 1fr; }
    .clinic-card { margin: 0; }
    .home-news { padding: 15px 0 0; display: grid; grid-template-columns: 1fr; align-items: start; gap: 0 30px; }
    .doctor-message { background-attachment: scroll; }
    .doctor-message-grid { grid-template-columns: 1fr; padding-top: 1px; }
    .doctor-photo,.profile-photo { display: none; }
    .doctor-signature { margin-left: 78px; margin-top: -10px; }
    .doctor-profile { padding: 55px 15px 65px; }
    /* 旧レイアウトの非表示写真列が確保していた1pxを残す。 */
    .profile-container { grid-template-columns: minmax(0, 1fr); padding-top: 1px; }
    .profile-card { margin: 0; }
    .profile-card .section-heading { text-align: center; }
    .profile-copy { padding: 0 76px 80px 82px; text-align: center; }
    .service-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .services .home-container { padding-top: 0; padding-bottom: 0; }
    .reservation { padding-bottom: 65px; }
}
@media (max-width:959px) {
    html { --header-height: 85.6px; }
    html:not(.has-js) { --header-height: 348px; }
    body { line-height: 1.6; }
    .site-footer { padding: 8px 0; }
    .site-footer p { line-height: 25.6px; }
    .clinic-alert { line-height: 20.8px; }
    .profile-copy h3 { font-size: 26px; }
    .service-card img { margin-bottom: 7.59375px; }
    .archive-post h2 { font-size: 26px; }
    .post-sidebar h2 { font-size: 22px; line-height: 1.6; }
    .container { max-width: 992px; }
    .header-inner { min-height: 80px; }
    .site-brand { padding: 14px 0; }
    .site-title,.site-tagline { line-height: 1.6; }
    .has-js .menu-toggle { display: flex; }
    .primary-navigation { width: 100%; padding-bottom: 20px; }
    .menu-first-visit { display: list-item; }
    /* 追従ヘッダーと右から開くメニューは独自テーマの既定仕様を維持する。 */
    .has-js .primary-navigation { position: fixed; inset: 0 0 0 auto; display: flex; flex-direction: column; width: min(360px, 100%); height: 100vh; height: 100dvh; overscroll-behavior: contain; background: #fff; padding: 0; z-index: 20; visibility: hidden; transform: translateX(100%); transition: transform .3s cubic-bezier(.79,.14,.15,.86), visibility .3s; }
    .has-js .primary-navigation.is-open { visibility: visible; transform: translateX(0); transition-duration: .3s, 0s; }
    .has-js .menu-close { display: flex; flex-shrink: 0; margin: 8px 10px 8px auto; }
    .has-js .primary-navigation nav { flex: 1; padding: 20px 15px; overflow-y: auto; opacity: 0; transition: opacity .3s ease; }
    .has-js .primary-navigation.is-open nav { opacity: 1; }
    .has-js .primary-navigation .primary-menu { margin: 4px 0; }
    .has-js .menu-overlay { display: block; position: fixed; inset: 0; background: rgba(0,0,0,.5); z-index: 19; visibility: hidden; opacity: 0; transition: opacity .3s linear, visibility .3s; }
    .menu-open .menu-overlay { visibility: visible; opacity: 1; }
    .primary-menu { flex-direction: column; gap: 0; }
    .primary-menu a { display: flex; align-items: center; min-height: 25px; padding: 15px 0; }
    h1 { font-size: 38px; line-height: 1.2; }
    h2 { font-size: 30px; }
    h3 { font-size: 26px; }
    h4 { font-size: 22px; }
    /* 旧Neve同様、本文の最小幅を保ち、収まらない記事だけサイドバーを次の行へ送る。 */
    .post-layout { flex-wrap: wrap; padding-top: 0; }
    .post-main { width: auto; max-width: 100%; min-width: auto; flex: 1 1 auto; padding-top: 60px; margin-bottom: 60px; }
    .post-sidebar { width: auto; max-width: 100%; flex: 1 1 auto; padding: 60px 15px 0; }
    .archive-container { padding-left: 15px; padding-right: 15px; }
    .posts-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .pagination { margin-left: 0; }
}
@media (min-width:768px) and (max-width:1024px) { .services .home-container { padding-left: 0; padding-right: 0; } }
@media (min-width:768px) and (max-width:992px) { .home-news { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width:757px) {
    .post-layout { display: block; padding-left: 15px; padding-right: 15px; }
    .post-main { width: 100%; padding: 60px 0 0; margin-bottom: 60px; }
    .post-sidebar { width: 100%; padding: 60px 0 0; }
}
@media (max-width:767px) {
    .hero { height: 301px; background-image: var(--hero-mobile); }
    .section-heading h2 { font-size: 31px; line-height: 46px; padding: 0; }
    .section-number { letter-spacing: -25px; }
    .section-subtitle { line-height: 27px; }
    .clinic-alert { padding: 10px; line-height: 20.8px; }
    .clinic-alert strong { font-size: 16px; line-height: 24px; }
    .clinic-card-body { text-align: center; }
    .home-news { display: block; }
    .news-card { text-align: center; }
    .doctor-message { background-image: var(--doctor-background-mobile); }
    .doctor-letter-body { padding: 0 30px; }
    .doctor-signature { text-align: center; margin-left: 0; }
    .doctor-profile { padding: 0; }
    .profile-card h2 { font-size: 31px; padding: 0 0 0 20px; }
    .profile-card .section-number { padding-left: 5px; letter-spacing: normal; }
    .profile-copy { padding: 0 18px 80px 20px; }
    .profile-copy h3 { font-size: 26px; line-height: 1.4; }
    .service-grid { grid-template-columns: 1fr; }
    .service-card img { margin-bottom: 7px; }
    .services .home-container { padding-left: 0; padding-right: 0; }
    .reservation .section-number { letter-spacing: -30px; }
    .reservation-body { overflow-wrap: anywhere; }
}
@media (max-width:575px) {
    html { --header-height: 85.6px; }
    html:not(.has-js) { --header-height: 348px; }
    body { font-size: 16px; }
    h1 { font-size: 36px; }
    h2 { font-size: 28px; line-height: 1.3; }
    h3 { font-size: 24px; }
    h4 { font-size: 20px; line-height: 1.6; }
    .posts-grid { grid-template-columns: 1fr; }
    .site-footer p { font-size: 16px; line-height: 24px; }
    .archive-post h2 { font-size: 24px; }
    .post-sidebar h2 { font-size: 20px; }
    .profile-copy h3 { font-size: 24px; }
}
@media (max-width:468px) { .dl_btn { line-height: 1; margin-top: 10px; margin-left: 0; } }
@media (max-width:360px) { .entry-content .immunization_table td,.entry-content .immunization_table th { padding-left: 5px; padding-right: 5px; } }
@media (max-width:359px) {
    table.timetable td, table.timetable th { padding-left: 5px; padding-right: 5px; }
    table.timetable tr > :first-child { overflow-wrap: normal; min-width: 61px; }
}
/* Elementorで指定されていた出現アニメーション。レイアウト寸法は変えない。 */
.home-section, .doctor-profile { overflow-x: clip; }
@keyframes oumebashi-fade-up { from { opacity: 0; transform: translate3d(0,100%,0); } to { opacity: 1; transform: none; } }
@keyframes oumebashi-fade-down { from { opacity: 0; transform: translate3d(0,-100%,0); } to { opacity: 1; transform: none; } }
@keyframes oumebashi-fade-left { from { opacity: 0; transform: translate3d(-100%,0,0); } to { opacity: 1; transform: none; } }
@keyframes oumebashi-fade-right { from { opacity: 0; transform: translate3d(100%,0,0); } to { opacity: 1; transform: none; } }
@keyframes oumebashi-zoom { from { opacity: 0; transform: scale3d(.3,.3,.3); } 50% { opacity: 1; } }
@media (min-width:768px) and (prefers-reduced-motion:no-preference) {
    .reveal-pending { visibility: hidden; }
    .reveal-active { animation-duration: 2s; animation-fill-mode: both; }
    .information-grid.reveal-active { animation-name: oumebashi-fade-up; animation-duration: 1.25s; }
    .doctor-photo.reveal-active { animation-name: oumebashi-zoom; }
    .doctor-letter.reveal-active, .profile-card.reveal-active, .service-card-4.reveal-active { animation-name: oumebashi-fade-right; }
    .service-card-1.reveal-active { animation-name: oumebashi-fade-left; }
    .service-card-2.reveal-active { animation-name: oumebashi-fade-up; }
    .service-card-3.reveal-active { animation-name: oumebashi-fade-down; }
}
@media (prefers-reduced-motion:reduce) { html { scroll-behavior: auto; } *,*::before,*::after { transition: none !important; animation: none !important; } }
@media print { .reveal-pending { visibility: visible; } .reveal-active { animation: none; } .site-header { position: static; } .menu-open, .menu-open body { overflow: visible; } .site-header,.site-footer,.menu-toggle { display: none; } .hero { height: 200px; background-attachment: scroll; } .home-section,.doctor-profile { padding: 20px 0; } .section-number { display: none; } .section-heading { break-after: avoid; } .clinic-map { display: none; } }

/* 静的ページの補足文字と、お知らせ詳細からの復帰先。 */
small { font-size: 1em; }
.news-card { scroll-margin-top: calc(var(--header-height) + 16px); }
