:root{
    --drawer-offset:86px;
    --ink:#302b28;
    --muted:#746a63;
    --line:#e7ded4;
    --base:#fffaf4;
    --soft:#f7efe7;
    --pink:#e6a6a1;
    --pink-soft:#f7d9d4;
    --orange:#dca66f;
    --orange-soft:#f5ddc3;
    --green:#8caf95;
    --green-soft:#dceadd;
    --deep:#5f7f6a;
    --white:#fff;
}
*{
    box-sizing:border-box;
}
html{
    scroll-behavior:smooth;
    overflow-x:hidden;
}
body{
    margin:0;
    font-family:"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
    color:var(--ink);
    background:var(--base);
    line-height:1.85;
    overflow-x:hidden;
}
img{
    max-width:100%;
    display:block;
}
a{
    color:inherit;
    text-decoration:none;
}
button{
    font-family:inherit;
}
.site-header{
    position:sticky;
    top:0;
    z-index:1000;
    width:100%;
    max-width:100%;
    overflow:visible;
    background:rgba(255,250,244,.96);
    border-bottom:1px solid var(--line);
    backdrop-filter:blur(10px);
}
.header-inner{
    max-width:1280px;
    width:100%;
    height:86px;
    margin:0 auto;
    padding:0 28px;
    display:flex;
    align-items:center;
    gap:22px;
    min-width:0;
}
.site-logo{
    min-width:235px;
    display:flex;
    flex-direction:column;
    line-height:1.2;
}
.logo-small{
    font-size:11px;
    color:var(--muted);
    letter-spacing:.08em;
}
.logo-main{
    margin-top:5px;
    font-size:21px;
    font-weight:700;
    letter-spacing:.04em;
}
.logo-sub{
    margin-top:5px;
    font-size:10px;
    color:var(--green);
    letter-spacing:.18em;
    text-transform:uppercase;
}
.global-nav{
    display:flex;
    align-items:center;
    gap:18px;
    margin-left:auto;
    font-size:13px;
    color:#4d4540;
    white-space:nowrap;
    min-width:0;
}
.global-nav a{
    padding:8px 0;
    border-bottom:1px solid transparent;
}
.global-nav a:hover{
    border-color:var(--green);
}
.header-info{
    display:flex;
    align-items:center;
    gap:14px;
}
.header-hours{
    border-left:1px solid var(--line);
    padding-left:16px;
    font-size:11px;
    line-height:1.45;
    color:var(--muted);
}
.header-hours strong{
    display:block;
    color:var(--ink);
    font-size:13px;
}
.info-label{
    display:block;
    color:var(--green);
    font-weight:700;
}
.header-tel{
    display:flex;
    align-items:center;
    gap:7px;
    color:#fff;
    background:var(--green);
    padding:9px 12px;
    font-weight:700;
    font-size:14px;
}
.header-tel svg{
    width:17px;
    height:17px;
    fill:currentColor;
}
.menu-button{
    display:none;
    position:relative;
    z-index:10001;
    width:44px;
    height:44px;
    border:1px solid var(--line);
    background:#fff;
    padding:11px;
}
.menu-button span{
    display:block;
    height:1px;
    background:var(--ink);
    margin:6px 0;
    transition:.25s;
}
.menu-button.is-open span:nth-child(1){
    transform:translateY(7px) rotate(35deg);
}
.menu-button.is-open span:nth-child(2){
    opacity:0;
}
.menu-button.is-open span:nth-child(3){
    transform:translateY(-7px) rotate(-35deg);
}
.drawer{
    position:fixed;
    top:var(--drawer-offset);
    left:0;
    right:0;
    bottom:0;
    z-index:9999;
    background:rgba(48,43,40,.35);
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transition:opacity .25s ease, visibility .25s ease;
}
.drawer.is-open{
    opacity:1;
    visibility:visible;
    pointer-events:auto;
}
.drawer-panel{
    position:absolute;
    top:0;
    right:0;
    width:min(420px,100vw);
    max-width:100vw;
    max-height:calc(100dvh - var(--drawer-offset));
    background:var(--base);
    border-left:1px solid var(--line);
    padding:30px;
    overflow-y:auto;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
    box-shadow:-18px 0 40px rgba(48,43,40,.18);
    transform:translateX(100%);
    transition:transform .25s ease;
}
.drawer.is-open .drawer-panel{
    transform:translateX(0);
}
.drawer-nav{
    display:grid;
    gap:0;
    border-top:1px solid var(--line);
}
.drawer-nav a{
    padding:15px 0;
    border-bottom:1px solid var(--line);
    font-weight:700;
}
.drawer-info{
    margin-top:26px;
    padding:20px;
    background:#fff;
    border:1px solid var(--line);
}
.drawer-label{
    margin:0 0 4px;
    color:var(--green);
    font-size:12px;
    font-weight:700;
}
.drawer-info p{
    margin:0 0 14px;
}
.drawer-tel{
    display:block;
    background:var(--green);
    color:#fff;
    text-align:center;
    padding:11px;
    font-weight:700;
    margin:4px 0 18px;
}
.drawer-address{
    font-size:13px;
    color:var(--muted);
}
.drawer-open{
    overflow:hidden;
}
.section{
    padding:84px 28px;
}
.section-inner{
    max-width:1120px;
    margin:0 auto;
}
.section-head{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:28px;
    margin-bottom:34px;
}
.section-kicker{
    display:block;
    color:var(--green);
    font-size:12px;
    font-weight:700;
    letter-spacing:.14em;
    text-transform:uppercase;
}
.section-title{
    margin:7px 0 0;
    font-size:30px;
    line-height:1.45;
    letter-spacing:.04em;
}
.section-lead{
    max-width:420px;
    margin:0;
    color:var(--muted);
    font-size:14px;
}
.btn-row{
    display:flex;
    flex-wrap:wrap;
    gap:12px;
    margin-top:26px;
}
.btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-width:170px;
    padding:13px 22px;
    border:1px solid var(--ink);
    background:var(--ink);
    color:#fff;
    font-weight:700;
    font-size:14px;
    transition:.2s;
}
.btn:hover{
    opacity:.82;
}
.btn-light{
    background:#fff;
    color:var(--ink);
}
.btn-green{
    border-color:var(--green);
    background:var(--green);
    color:#fff;
}
.site-footer{
    background:#302b28;
    color:#fff;
    padding:54px 28px 28px;
}
.footer-inner{
    max-width:1120px;
    margin:0 auto;
    display:flex;
    justify-content:space-between;
    gap:30px;
}
.footer-corp{
    margin:0 0 6px;
    font-size:13px;
    color:#d6c8bc;
}
.footer-name{
    margin:0 0 14px;
    font-size:24px;
    font-weight:700;
}
.footer-brand p,
.footer-contact p{
    margin-top:0;
}
.footer-contact{
    text-align:right;
}
.footer-contact a{
    font-size:24px;
    font-weight:700;
}
.footer-bottom{
    max-width:1120px;
    margin:36px auto 0;
    padding-top:18px;
    border-top:1px solid rgba(255,255,255,.14);
    color:#d6c8bc;
    font-size:12px;
}
.sp-fixed{
    display:none;
}
@media(max-width:1180px){
    .global-nav{
        display:none !important;
        width:0 !important;
        max-width:0 !important;
        min-width:0 !important;
        height:0 !important;
        overflow:hidden !important;
        visibility:hidden !important;
        pointer-events:none !important;
        position:absolute !important;
        left:-9999px !important;
    }
    .header-info{
        display:none !important;
    }
    .menu-button{
        display:block;
        margin-left:auto;
        flex:0 0 44px;
    }
}
@media(max-width:768px){
    :root{
        --drawer-offset:72px;
    }
    .header-inner{
        height:72px;
        padding:0 18px;
    }
    .site-logo{
        min-width:0;
        max-width:calc(100vw - 86px);
        overflow:hidden;
    }
    .logo-main{
        font-size:18px;
        white-space:nowrap;
        overflow:hidden;
        text-overflow:ellipsis;
    }
    .logo-sub{
        display:none;
    }
    .section{
        padding:58px 18px;
    }
    .section-head{
        display:block;
        margin-bottom:24px;
    }
    .section-title{
        font-size:24px;
    }
    .section-lead{
        margin-top:12px;
    }
    .footer-inner{
        display:block;
    }
    .footer-contact{
        text-align:left;
        margin-top:24px;
    }
    .sp-fixed{
        display:grid;
        position:fixed;
        bottom:0;
        left:0;
        right:0;
        z-index:900;
        grid-template-columns:1fr 1fr 1fr;
        background:#fff;
        border-top:1px solid var(--line);
    }
    .sp-fixed a,
    .sp-fixed button{
        height:54px;
        display:flex;
        align-items:center;
        justify-content:center;
        border:0;
        border-right:1px solid var(--line);
        background:#fff;
        font-weight:700;
        color:var(--ink);
        font-size:13px;
    }
    body{
        padding-bottom:54px;
    }
}


/* 診療時間テーブル */
.hours-table-wrap{
    width:100%;
    max-width:100%;
    overflow:hidden;
    border:1px solid var(--line);
    background:#fff;
}
.hours-table{
    width:100%;
    border-collapse:collapse;
    table-layout:fixed;
    font-size:13px;
}
.hours-table th,
.hours-table td{
    border-right:1px solid var(--line);
    border-bottom:1px solid var(--line);
    padding:10px 8px;
    text-align:center;
    vertical-align:middle;
}
.hours-table th:last-child,
.hours-table td:last-child{
    border-right:0;
}
.hours-table tr:last-child th,
.hours-table tr:last-child td{
    border-bottom:0;
}
.hours-table thead th{
    background:#fbf5ef;
    color:#4d4540;
    font-weight:700;
}
.hours-table tbody th{
    width:120px;
    background:#fffaf4;
    color:var(--green);
    font-weight:700;
    white-space:nowrap;
}
.hours-table .is-open{
    color:var(--green);
    font-weight:700;
    font-size:16px;
}
.hours-table .is-closed{
    color:#c9bdb3;
}
.hours-note{
    margin:10px 0 0;
    color:var(--muted);
    font-size:12px;
    line-height:1.7;
}
.header-hours-table{
    min-width:360px;
    border-left:1px solid var(--line);
    padding-left:16px;
}
.header-hours-table .info-label{
    margin-bottom:5px;
}
.header-hours-table .hours-table{
    font-size:10px;
}
.header-hours-table .hours-table th,
.header-hours-table .hours-table td{
    padding:4px 5px;
}
.header-hours-table .hours-table tbody th{
    width:72px;
}
.header-hours-table .hours-table .is-open{
    font-size:12px;
}
.drawer-hours-table{
    margin-bottom:16px;
}
.drawer-hours-table .hours-table{
    font-size:11px;
}
.drawer-hours-table .hours-table th,
.drawer-hours-table .hours-table td{
    padding:7px 5px;
}
.drawer-hours-table .hours-table tbody th{
    width:74px;
}
.access-hours-table{
    margin-top:18px;
}
.site-footer .hours-table-wrap{
    max-width:520px;
    margin-left:auto;
    border-color:rgba(255,255,255,.18);
}
.site-footer .hours-table{
    color:#fff;
}
.site-footer .hours-table th,
.site-footer .hours-table td{
    border-color:rgba(255,255,255,.18);
}
.site-footer .hours-table thead th,
.site-footer .hours-table tbody th{
    background:rgba(255,255,255,.08);
    color:#fff;
}
.site-footer .hours-note{
    color:#d6c8bc;
}
@media(max-width:768px){
    .hours-table{
        font-size:11px;
    }
    .hours-table th,
    .hours-table td{
        padding:8px 4px;
    }
    .hours-table tbody th{
        width:86px;
    }
    .hours-table .is-open{
        font-size:14px;
    }
    .site-footer .hours-table-wrap{
        margin-left:0;
    }
}


/* 最終調整：ヘッダーには診療時間テーブルを入れない */
.header-hours-table{
    display:none !important;
}
.header-hours{
    display:block;
}
.header-info{
    flex:0 0 auto;
}
@media(max-width:1180px){
    .header-info{
        display:none !important;
    }
}


/* フッター診療時間テーブル調整 */
.site-footer .footer-contact{
    min-width:min(520px,100%);
}
.site-footer .hours-table-wrap{
    max-width:520px;
}
@media(max-width:768px){
    .site-footer .footer-contact{
        min-width:0;
    }
}


/* 診療時間テーブル はみ出し対策 */
.access-hours-table,
.clinic-hours-table,
.site-footer .footer-contact{
    min-width:0;
}
.access-hours-table .hours-table-wrap,
.clinic-hours-table .hours-table-wrap,
.site-footer .hours-table-wrap{
    width:100%;
    max-width:100%;
}
.access-hours-table .hours-table,
.clinic-hours-table .hours-table,
.site-footer .hours-table{
    table-layout:fixed;
    width:100%;
    min-width:0;
    font-size:11px;
    line-height:1.35;
}
.access-hours-table .hours-table th,
.access-hours-table .hours-table td,
.clinic-hours-table .hours-table th,
.clinic-hours-table .hours-table td,
.site-footer .hours-table th,
.site-footer .hours-table td{
    padding:7px 3px;
    word-break:keep-all;
    white-space:nowrap;
}
.access-hours-table .hours-table tbody th,
.clinic-hours-table .hours-table tbody th,
.site-footer .hours-table tbody th{
    width:82px;
    font-size:10px;
    letter-spacing:-.04em;
}
.access-hours-table .hours-table thead th:first-child,
.clinic-hours-table .hours-table thead th:first-child,
.site-footer .hours-table thead th:first-child{
    width:82px;
}
.access-hours-table .hours-table .is-open,
.clinic-hours-table .hours-table .is-open,
.site-footer .hours-table .is-open{
    font-size:12px;
}
.access-hours-table .hours-note,
.clinic-hours-table .hours-note,
.site-footer .hours-note{
    font-size:11px;
}

/* 医院紹介・アクセス表内ではさらに詰める */
.info-table .hours-table{
    font-size:10px;
}
.info-table .hours-table th,
.info-table .hours-table td{
    padding:6px 2px;
}
.info-table .hours-table tbody th,
.info-table .hours-table thead th:first-child{
    width:72px;
    font-size:9.5px;
}
.info-table .hours-table .is-open{
    font-size:11px;
}

@media(max-width:768px){
    .access-hours-table .hours-table,
    .clinic-hours-table .hours-table,
    .site-footer .hours-table,
    .info-table .hours-table{
        font-size:9.5px;
        line-height:1.25;
    }
    .access-hours-table .hours-table th,
    .access-hours-table .hours-table td,
    .clinic-hours-table .hours-table th,
    .clinic-hours-table .hours-table td,
    .site-footer .hours-table th,
    .site-footer .hours-table td,
    .info-table .hours-table th,
    .info-table .hours-table td{
        padding:6px 1px;
    }
    .access-hours-table .hours-table tbody th,
    .access-hours-table .hours-table thead th:first-child,
    .clinic-hours-table .hours-table tbody th,
    .clinic-hours-table .hours-table thead th:first-child,
    .site-footer .hours-table tbody th,
    .site-footer .hours-table thead th:first-child,
    .info-table .hours-table tbody th,
    .info-table .hours-table thead th:first-child{
        width:64px;
        font-size:8.5px;
        letter-spacing:-.08em;
    }
    .access-hours-table .hours-table .is-open,
    .clinic-hours-table .hours-table .is-open,
    .site-footer .hours-table .is-open,
    .info-table .hours-table .is-open{
        font-size:10px;
    }
}

@media(max-width:380px){
    .access-hours-table .hours-table,
    .clinic-hours-table .hours-table,
    .site-footer .hours-table,
    .info-table .hours-table{
        font-size:8.5px;
    }
    .access-hours-table .hours-table tbody th,
    .access-hours-table .hours-table thead th:first-child,
    .clinic-hours-table .hours-table tbody th,
    .clinic-hours-table .hours-table thead th:first-child,
    .site-footer .hours-table tbody th,
    .site-footer .hours-table thead th:first-child,
    .info-table .hours-table tbody th,
    .info-table .hours-table thead th:first-child{
        width:58px;
        font-size:7.8px;
    }
}


/* フッター最終修正：フッター内に診療時間テーブルを置かない */
.site-footer .footer-contact{
    min-width:0 !important;
    width:auto !important;
    max-width:420px;
}
.site-footer .footer-contact .hours-table-wrap,
.site-footer .footer-contact .hours-table,
.site-footer .footer-contact .hours-note{
    display:none !important;
}
.footer-hours{
    margin:0 0 6px;
    color:#fff;
    font-size:14px;
    line-height:1.8;
    font-weight:700;
}
.footer-closed{
    margin:0 0 14px;
    color:#d6c8bc;
    font-size:13px;
    line-height:1.7;
}
.site-footer .footer-contact a{
    display:inline-block;
    font-size:26px;
    line-height:1.2;
    font-weight:700;
    color:#fff;
}
@media(max-width:768px){
    .site-footer{
        padding-bottom:84px;
    }
    .footer-contact{
        max-width:none;
    }
    .site-footer .footer-contact a{
        font-size:23px;
    }
}


.fade-in{
    opacity:0;
    transform:translateY(28px);
    transition:opacity .8s ease, transform .8s ease;
}

.fade-in.is-show{
    opacity:1;
    transform:translateY(0);
}