@charset "UTF-8";
/*-------------
vars
-------------*/
:root{
    --inner-width: 1200px;
    --inner-wid-width: clamp(var(--min-width), 87vw, 1670px);
    --inner-width_sp: 90vw;
    --inner-sides: 30px;
    --inner-sides_sp: 5vw;
    --min-width: 1200px;
    --inner-width: clamp(var(--min-width), 74dvw, 1420px);
    --inner-wid-width: clamp(var(--min-width), 87vw, 1670px);
    --inner-width_sp: calc(100vw - (var(--inner-sides_sp) * 2));
    
    --theme-grad: linear-gradient(135deg, #f8ffb5, #44fff2);
    --theme-grad_rad: radial-gradient(#f8ffb5, #44fff2);
    --base-black: #1F3D2A;
    --accent-black: #1a1a1a;
    --accent-green: #1F3D2A;
    --bg-beige: #f5f0eb;
    --bg-beige2: #E7ECDC;
    --bg-green: #A2B46B;
    
    --accent-gray: #ccc;
    --border-gray: #ccc;
    --bg-gray: #e6e6e6;
    --bg-light-gray: #f0f0f0;
    --text-gray: #999;
    
    --accent-blue: #146af5;
    --accent-yellow: #fcee21;
    --text-red: #e60012;

    --bg-arrow: url(../images/arrow_right.svg) no-repeat center right / auto;
    --bg-arrow_white: url(../images/arrow_right_white.svg) no-repeat center right / auto;
    --bg-arrow-slide: arrow-slide 1.5s ease infinite;
    
    /* --font-sans: "Noto Sans JP", sans-serif; */
    --font-sans: "YuGothic", "Yu Gothic", "游ゴシック", "Hiragino Sans", "Meiryo", sans-serif;
    --font-serif: "Shippori Mincho", serif;
    --font-en-sans: "Lexend", var(--font-sans);
    --font-en-serif: "Cinzel", var(--font-serif);
    --fontsize-base: 1.6rem;
    --line-height: calc(1em + min(1em, 16px));
    --letter-spacing: .05em;

    --linear: .5s linear;
    --ease: .5s ease;
}
@media screen and (max-width:768px){
    :root{
        --inner-width: var(--inner-width_sp);
        --inner-sides: var(--inner-sides_sp);
        --inner-wid-width: var(--inner-width_sp);
        --min-width: 320px;
        
        --bg-light-gray: var(--bg-gray);
        
        --fontsize-base: 1.5rem;
        --line-height: calc(1em + min(1em, 14px));
    }
}
@keyframes arrow-slide{
    0%{
        background-position: left 0 center;
    }
    20%{
        background-position: left 14px center;
    }
    40%{
        background: none;
    }
    60%{
        background-position: left -14px center;
    }
    80%{
        background-position: left 0 center;
    }
}

/*-------------
base
-------------*/
html{
    /* 1rem = 10px → 9px（サイト全体のフォントを10%縮小） */
    font-size: 56.25%;
}
body{
    width: 100%;
    min-width: calc(var(--inner-width) + (var(--inner-sides) * 2));
    background: #fff;
    color: var(--base-black);
    font-feature-settings: "palt" 1, "kern" 1;
    font-family: var(--font-sans);
    font-optical-sizing: auto;
    font-size: var(--fontsize-base);
    line-height: normal;
    text-align: left;
    overflow-wrap: anywhere;
    word-break: normal;
    line-break: strict;
}
@media screen and (max-width:768px){
    body{
        min-width: 320px;
    }
}
::selection{
    background: var(--accent-black);
    color: #fff;
}
.wrapper{
    position: relative;
}
.wrapper, .container{
    container-type: inline-size;
}
.wrapper *, .container *{
    --container-sides: calc(50cqw - (var(--inner-width) / 2));
}
h1, h2, h3, h4, h5, h6,
*:not(:where(span, a, b, i, em, strong, small, sub, sup, abbr, code, label, time, mark, q)){
    --my-1em: 1em;
    letter-spacing: var(--letter-spacing);
    line-height: var(--line-height);
}
img{
    max-width: 100%;
    height: auto;
}
@media screen and (max-width:768px){
    img{
        width: 100%;
    }
}
body._preload *:not([data-effect]),
body._preload *:not([data-effect])::before,
body._preload *:not([data-effect])::after{
    transition: none!important;
}
@media screen and (min-width:769px){
    @keyframes view-fade-in {
        0% {
            opacity: 0;
        }
        50% {
            opacity: 0;
        }
        100% {
            opacity: 1;
        }
    }
    @keyframes view-fade-out {
        0% {
            opacity: 1;
        }
        50% {
            opacity: 0;
        }
        100% {
            opacity: 0;
        }
    }
    @view-transition {
        navigation: auto;
    }
    ::view-transition-old(root) {
        animation: view-fade-out 1s ease-out;
    }
    ::view-transition-new(root) {
        animation: view-fade-in 1s ease-out;
    }
}

/*-------------
common
-------------*/
@media screen and (min-width:769px){
    .sp{
        display: none!important;
    }
}
@media screen and (max-width:768px){
    .pc{
        display: none!important;
    }
}
.clearfix::after,
.cf::after{
    content: "";
    display: block;
    clear: both;
}
.floatL, .l{
    float: left;
}
.floatR, .r{
    float: right;
}
.clearBoth, .c_b{
	clear:both;
}
.dispIB{
    display: inline-block;
}
img.dispIB{
    width: revert-layer;
    height: revert-layer;
}

/* margin */
.mRkern{
    margin-right: -.4em;
}
.mLkern{
    margin-left: -.4em;
}
.mLRkern{
    margin-right: -.4em;
    margin-left: -.4em;
}
.mB0{
	margin-bottom: 0px!important;
}
.mB5{
	margin-bottom: 5px!important;
}
.mB10{
	margin-bottom: 10px!important;
}
.mB15{
	margin-bottom: 15px!important;
}
.mB20{
	margin-bottom: 20px!important;
}
.mB30{
	margin-bottom: 30px!important;
}
.mR10{
	margin-right: 10px!important;
}

/* text */
.textInd, .txt_ind {
    text-indent: calc((1em + var(--letter-spacing)) * -1);
    padding-left: calc(1em + var(--letter-spacing));
}
.ffsPalt{
	font-feature-settings: "palt" 1;
}
.ffSans{
    font-family: var(--font-sans)!important;
}
.ffSerif{
    font-family: var(--font-serif)!important;
}
.ffSansEN{
    font-family: var(--font-en-sans)!important;
}
.ffSerifEN{
    font-family: var(--font-en-serif)!important;
}
.txtBlk{
    color: var(--accent-black)!important;
}
.txtRed{
    color: var(--text-red)!important;
}
.textSmall{
    font-size: max(.7em, 10px);
}
.textCenter, .txt_c{
    text-align: center;
}
.textRight, .txt_r{
    text-align: right;
}
.wsNowrap{
    white-space: nowrap;
}
@media screen and (min-width:769px){
    *:has(> wbr:not(.sp)){
        word-break: keep-all;
        overflow-wrap: break-word;
    }
}
@media screen and (max-width:768px){
    *:has(> wbr.sp){
        word-break: keep-all;
        overflow-wrap: break-word;
    }
}
.txt_b, .fWb{
    font-weight: bold;
}
.fW500{
    font-weight: 500;
}
.fW600{
    font-weight: 600;
}
mark{
    background: linear-gradient(to top, var(--accent-yellow) .0 .5em, rgba(255,255,255,0) .5em);
    color: var(--accent-black);
    font-weight: 500;
}
mark._not-bg{
    background: none;
}

/* a */
@media (any-hover: hover){
    :where(a:hover){
        text-decoration: none;
    }
}
.textLink:not(:hover){
    text-decoration: underline;
}
@media screen and (min-width:769px){
    body:not(.viewing_mobile) a[href^="tel:"]{
        text-decoration: none!important;
        pointer-events: none;
    }
}
.fadeHover{
    transition: opacity var(--ease);
}
@media (any-hover: hover){
    .fadeHover:hover{
        opacity: .7;
    }
    .undHover:not(:hover),
    .hoverUnd:hover{
        text-decoration: underline;
    }
}
:where(a:has(> img:only-child)),
:where(a:has(> picture:only-child)){
    transition: opacity var(--ease);
}
@media (any-hover: hover){
    :where(a:has(> img:only-child)):hover,
    :where(a:has(> picture:only-child)):hover{
        opacity: .7;
    }
}

/* loading */
@keyframes loading-dots{
    0%,
    80%,
    100%{
        box-shadow: 0 var(--dotSize) 0 calc(var(--dotSize) * -.75) var(--dotColor);
    }
    40%{
        box-shadow: 0 var(--dotSize) 0 0 var(--dotColor);
    }
}
.loadingDots{
    --dotSize: 20px;
    --dotColor: var(--accent-gray);
    position: relative;
}
@media screen and (max-width:768px){
    .loadingDots{
        --dotSize: 14px;
    }
}
.loadingDots,
.loadingDots::before,
.loadingDots::after{
    width: var(--dotSize);
    height: var(--dotSize);
    border-radius: 50%;
    animation-fill-mode: both;
    animation: loading-dots 1.8s infinite ease-in-out;
}
.loadingDots{
    transform: translate(calc(var(--dotSize) / -2), calc(var(--dotSize) * -1.5));
    font-size: 0;
    animation-delay: -0.16s;
}
.loadingDots::before,
.loadingDots::after{
    position: absolute;
    top: 0;
    z-index: 1;
    content: '';
}
.loadingDots::before{
    left: calc((var(--dotSize) + 10px) * -1);
    animation-delay: -0.32s;
}
.loadingDots::after{
    left: calc(var(--dotSize) + 10px);
}

/*-------------
data-effect
-------------*/
.wrapper *{
    --fade-transition: transform .8s ease, opacity .8s ease;
}
@media screen and (max-width:768px){
    :root{
        --fade-transition: transform .4s ease, opacity .4s ease;
    }
}
*[data-effect^="fade"]{
    opacity: 0;
    transition: var(--fade-transition);
}
*[data-effect="fade-up"]{
    transform: translateY(min(50dvh, 20%));
}
.wrapper *{
    --fade-left: translateX(max( -20%, calc(var(--container-sides) * -1)));
}
*[data-effect="fade-left"]{
    transform: var(--fade-left);
}
.wrapper *{
    --fade-right: translateX(min(var(--container-sides), 20%));
}
*[data-effect="fade-right"]{
    transform: var(--fade-right);
}
*[data-effect^="fade"][class*="_fade"]{
    opacity: 1;
    transform: none;
}

/*-------------
button
-------------*/
.readMore a{
    display: flex;
    justify-content: center;
    align-items: center;
    height: 68px;
    border-radius: 99px;
    background: var(--accent-black);
    color: #fff;
    font-family: var(--font-en-serif);
    font-size: 1.8rem;
    letter-spacing: 0;
}
@media screen and (max-width:768px){
    .readMore a{
        height: 58px;
        font-size: 1.6rem;
    }
}

/* beforeGrad */
@keyframes before-grad{
    0%{
        background-position: left 0 center;
    }
    100%{
        background-position: left 100% center;
    }
}
.beforeGrad a::before{
    opacity: 0;
    mix-blend-mode: color;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border-radius: inherit;
    background: var(--theme-grad);
    background-size: 200%;
    content: "";
    pointer-events: none;
    animation: before-grad 3s linear infinite alternate;
    animation-play-state: paused;
    transition: opacity var(--ease);
}
@media (any-hover: hover){
    .beforeGrad a:hover::before{
        opacity: 1;
        animation-play-state: running;
    }
}

/* viewmoreBtn */
.viewmoreBtn-box{
    width: min(var(--inner-width), 100%);
    margin: 60px auto;
    padding-top: 60px;
    border-top: solid 1px var(--accent-gray);
}
@media screen and (max-width:768px){
    .viewmoreBtn-box{
        margin-top: 30px;
        padding-top: 30px;
    }
}
.viewmoreBtn{
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 0 10px;
    width: 480px;
    height: 69px;
    margin: 0 auto;
    border-radius: 99px;
    background: var(--accent-black);
    color: #fff;
    font-family: var(--font-en-serif);
    font-size: 1.9rem;
    line-height: 1;
    letter-spacing: 0;
    cursor: pointer;
}
.viewmoreBtn::before{
    flex: 0 0 auto;
    width: 14px;
    height: 14px;
    transform: rotate(90deg);
    background: var(--bg-arrow_white);
    content: "";
}
@media (any-hover: hover){
    .viewmoreBtn:hover::before{
        animation: var(--bg-arrow-slide);
    }
}
@media screen and (max-width:768px){
    .viewmoreBtn{
        gap: 0 8px;
        width: 100%;
        height: 58px;
        font-size: 1.6rem;
    }
    .viewmoreBtn::before{
        width: 14px;
        height: 14px;
        background: var(--bg-arrow_white);
    }
}

/*-------------
site-loading
-------------*/
html.is-loading,
html.is-loading body{
    overflow: hidden;
}

.site-loading{
    display: flex;
    justify-content: center;
    align-items: center;
    position: fixed;
    inset: 0;
    z-index: 999;
    width: 100%;
    height: 100dvh;
    background: #fff;
    opacity: 1;
    transition: opacity .8s ease; /* JSの FADE_DURATION と揃える */
}
.site-loading._loaded{
    opacity: 0;
    pointer-events: none;
}

/* ロゴ */
.site-loading-logo{
    display: block;
    width: min(320px, 62vw);
    height: auto;
    opacity: 0;
    transition:
        opacity 1.5s cubic-bezier(.22,.61,.36,1),
        transform 1.5s cubic-bezier(.22,.61,.36,1);
}
.site-loading._show .site-loading-logo{
    opacity: 1;
    transform: translateY(0) scale(1);
}
/* body._preload の transition:none!important を打ち消す */
body._preload .site-loading-logo{
    transition:
        opacity 1.5s cubic-bezier(.22,.61,.36,1),
        transform 1.5s cubic-bezier(.22,.61,.36,1) !important;
}

@media screen and (max-width:768px){
    .site-loading-logo{
        width: min(240px, 70vw);
    }
}

/* アニメーションを好まないユーザー向け */
@media (prefers-reduced-motion: reduce){
    .site-loading,
    .site-loading-logo{
        transition-duration: .01ms !important;
    }
    .site-loading-logo{
        transform: none;
    }
}
/*-------------
accordion
-------------*/
.accordion-btn:not(.is--ready){
    pointer-events: none;
}
.accordion-btn.is--ready{
    cursor: pointer;
}
@media screen and (max-width:768px){
    .accordion-btn_sp:not(.is--ready){
        pointer-events: none;
    }
    .accordion-btn_sp.is--ready{
        cursor: pointer;
    }
}
.accordion-btn:not(._active):not([data-target-class]) + *:not(.accordion-container),
.accordion-content{
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
@media screen and (max-width:768px){
    .accordion-btn_sp:not(._active):not([data-target-class]) + *:not(.accordion-container),
    .accordion-content_sp{
        position: absolute;
        opacity: 0;
        pointer-events: none;
    }
}
.accordion-container{
    overflow: hidden;
    transition: height .3s ease;
}
.accordion-container.is--hit_low{
    transition: height .2s ease;
}
.accordion-container:not(.is--open){
    height: 0!important;
}
@media screen and (min-width:769px){
    .accordion-container.is--limit_sp{
        height: auto!important;
    }
}

/*-------------
bg-gradation
-------------*/
.bg-gradation{
    --grad-opacity: 1;
    opacity: var(--grad-opacity);
    position: fixed;
    top: 0;
    left: 0;
    z-index: -1;
    transform: translateZ(0);
    width: 100%;
    height: 660px;
    font-size: 0;
    user-select: none;
    pointer-events: none;
    transition: opacity .5s ease;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
    will-change: transform, opacity;
}
.bg-gradation._hide{
    opacity: 0;
}
.bg-gradation::before{
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 290px;
    background: linear-gradient(to top, rgba(255,255,255,.6), rgba(255,255,255,0));
    content: "";
}
.bg-gradation::after{
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 240px;
    background: linear-gradient(to top, #fff, rgba(255,255,255,0));
    content: "";
}
@media screen and (max-width:768px){
    .bg-gradation{
        height: 120vw;
    }
    .bg-gradation::before{
        height: 50vw;
    }
    .bg-gradation::after{
        height: 45vw;
    }
}
.bg-gradation._bottom{
    top: auto;
    bottom: 0;
    height: 690px;
}
.bg-gradation._bottom::before{
    top: 0;
    bottom: auto;
    transform: rotate(180deg);
    height: 360px;
}
.bg-gradation._bottom::after{
    top: 0;
    bottom: auto;
    transform: rotate(180deg);
    height: 300px;
}
@media screen and (max-width:768px){
    .bg-gradation._bottom{
        height: 600px;
    }
    .bg-gradation._bottom::before{
        height: 90px;
    }
    .bg-gradation._bottom::after{
        height: 60px;
    }
}
.bg-gradation-video{
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: opacity .5s ease;
}

/*-------------
header
-------------*/
body{
    --header-ini-hit: 100px;
    --header-hit: var(--header-ini-hit);
}
@media screen and (max-width:768px){
    body{
        --header-ini-hit: 65px;
    }
}
.header{
    position: relative;
    z-index: 99;
    width: 100%;
    height: var(--header-ini-hit);
    background: #fff;
}
.header .header-inner{
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 0 40px;
    position: relative;
    z-index: 99;
    width: 100%;
    height: var(--header-hit);
    padding: 0 var(--inner-sides);
    background: #fff;
}
.header .header-inner:not(._fixed){
    transition: opacity var(--ease), background var(--ease), backdrop-filter var(--ease);
}
@media screen and (max-width:768px){
    .header .header-inner{
        display: flex;
        align-items: center;
        z-index: 100;
        padding-right: 0;
    }
}
.header .header-inner._fixed{
    opacity: 0;
    transform: translateY(calc(var(--header-hit) * -1));
    position: fixed;
    top: 0;
    left: 0;
    background: rgba(255,255,255,.92);
    backdrop-filter: blur(4px);
}
.header .header-inner._fixed._down{
    opacity: 1;
    transform: translateY(0);
    transition: opacity .5s ease, transform .5s ease;
}
.header .header-inner._fixed._up{
    opacity: 0;
    transform: translateY(calc(var(--header-hit) * -1));
}

/* logo */
.header .header-logo{
    display: flex;
    align-items: center;
    margin-right: auto;
}
.header .header-logo img{
    width: auto;
    max-width: none; /* 共通の max-width:100% を解除して縮ませない */
    height: 59px;
}
/*-------------
追従ヘッダー（._fixed）だけの調整
fixed はビューポート基準の幅になるため、狭い画面でも1行に収まるようにする
-------------*/
@media screen and (min-width:769px){
    /* 余白を詰める */
    .header .header-inner._fixed{
        gap: 0 clamp(20px, 2.5vw, 40px);
    }
    .header .header-inner._fixed .header-nav-list{
        gap: 0 clamp(16px, 2.2vw, 36px);
    }
    /* リンクの文字を少し小さくする（1440px以上は1.8remのまま） */
    .header .header-inner._fixed .header-nav a{
        font-size: clamp(1.4rem, 1.22vw, 1.8rem);
    }
}
/* さらに狭くなったらロゴを隠す（縮小はさせない） */
@media screen and (min-width:769px) and (max-width:1099px){
    .header .header-inner._fixed .header-logo{
        display: none;
    }
}
@media screen and (max-width:768px){
    .header .header-logo{
        flex: 0 1 auto;
        width: auto;
        min-width: 0;
        padding-right: 65px;
    }
    .header .header-logo img{
        width: auto;
        max-width: 100%;
        height: 50px;
    }
}

/* menu-btn（SPのみ） */
.header-menu-btn{
    display: none;
}
@media screen and (max-width:768px){
    .header .header-menu-btn{
        display: flex;
        justify-content: center;
        align-items: flex-end;
        flex: 0 0 auto;
        position: absolute;
        top: 0;
        right: 0;
        z-index: 1;
        width: 65px;
        height: 65px;
        margin-left: auto;
        padding: 0 0 12px;
        background: none;
        color: #6f7d74;
        font-family: var(--font-en-serif);
        font-size: 1.1rem;
        line-height: 1;
        letter-spacing: .1em;
        pointer-events: auto;
        cursor: pointer;
    }
    /* ハンバーガーの2本線 */
    .header .header-menu-btn::before,
    .header .header-menu-btn::after{
        position: absolute;
        left: 50%;
        width: 26px;
        height: 1px;
        margin-left: -13px;
        background: var(--accent-green);
        content: "";
        transition: transform var(--ease);
    }
    .header .header-menu-btn::before{
        top: 22px;
    }
    .header .header-menu-btn::after{
        top: 30px;
    }
    /* 開いている時はバツ印＋CLOSE */
    .header .header-menu-btn._open::before{
        transform: translateY(4px) rotate(20deg);
    }
    .header .header-menu-btn._open::after{
        transform: translateY(-4px) rotate(-20deg);
    }
    .header .header-menu-btn._open .header-menu-btn-label{
        font-size: 0;
    }
    .header .header-menu-btn._open .header-menu-btn-label::after{
        font-size: 1.1rem;
        content: "CLOSE";
    }
    /* メニューを開いている間はヘッダーの背景を消す */
    .header .header-inner:has(.header-menu-btn._open){
        background: none;
    }
}

/* nav */
.header .header-menu,
.header .header-nav{
    display: grid;
    grid-template-columns: subgrid;
    grid-column: span 2;
    align-items: center;
}
.header .header-nav a{
    color: var(--accent-green);
    font-size: 1.8rem;
    letter-spacing: .04em;
    white-space: nowrap;
}
@media screen and (max-width:768px){
    /* 全画面のオーバーレイ（淡い緑） */
    .header .header-menu{
        position: absolute;
        top: 0;
        left: 0;
        z-index: -1;
        width: 100%;
        height: auto;
        padding: calc(var(--header-ini-hit) + 30px) var(--inner-sides) 20px;
        background: #edf0e6;
        transition: opacity .5s ease;
        transform: translate3d(0, 0, 10px);
    }
    .header .header-menu:not(._active),
    .header .header-menu:not(._active) *{
        z-index: -999;
        pointer-events: none;
        animation-play-state: paused;
    }
    .header .header-menu:not(._show){
        opacity: 0;
    }
    /* 白いパネル */
    .header .header-nav{
        display: flex;
        flex-direction: column;
        position: relative;
        height: 100%;
        padding: 0 30px calc(50px + env(safe-area-inset-bottom));
        border-radius: 30px;
        background: #fff;
        overflow: hidden;
        pointer-events: none;
        transition: transform .5s ease;
    }
    .header .header-menu:not(._show) .header-nav{
        transform: scale(.96);
    }
    .header .header-nav *{
        pointer-events: auto;
    }
    /* パネル右上の縦書きキャッチ */
    .header-menu-catch{
        writing-mode: vertical-rl;
        position: absolute;
        top: 30px;
        right: 30px;
        color: var(--accent-green);
        font-size: 2.6rem;
        font-weight: bold;
        line-height: 1;
        letter-spacing: .18em;
    }
}
.header .header-nav-list{
    display: flex;
    justify-content: flex-end;
    gap: 0 36px;
}
.header .header-nav-list-item a{
    display: flex;
    align-items: center;
    position: relative;
    height: 100%;
    padding: 0 4px;
    line-height: calc(1em + 4px);
}
@media (any-hover: hover){
    .header .header-nav-list-item a{
        transition: opacity var(--ease);
    }
    .header .header-nav-list-item a:hover{
        opacity: .6;
    }
}
@media screen and (max-width:768px){
    .header .header-nav-list{
        width: 100%;
        display: block;
        margin-top: 200px;
    }
    .header .header-nav-list-item a{
        display: block;
        height: auto;
        padding: 16px 0;
        font-size: 1.8rem;
        line-height: 1;
    }
}

/* contact（緑のピルボタン） */
.header .header-contact{
    margin-left: 0;
}
.header .header-contact a{
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 0 14px;
    position: relative;
    width: auto;
    height: 46px;
    padding: 0 10px 0 26px;
    border-radius: 999px;
    background: var(--accent-green);
    color: #fff;
    font-size: 1.8rem;
    line-height: 1;
    letter-spacing: .04em;
    transition: opacity var(--ease);
}
.header .header-contact a::before{
    content: none;
}
.header .header-contact a::after{
    flex: 0 0 auto;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background-color: #fff;
    background-image: url(../images/arrow_right.svg);
    background-repeat: no-repeat;
    background-position: center;
    background-size: 9px auto;
    content: "";
}
@media (any-hover: hover){
    .header .header-contact a:hover{
        opacity: .8;
    }
}
@media screen and (max-width:768px){
    .header .header-contact{
        width: 100%;
        margin: 46px 0 0;
    }
    .header .header-contact a{
        justify-content: center;
        gap: 0;
        width: 100%;
        height: 40px;
        padding: 0;
        font-size: 1.8rem;
    }
    .header .header-contact a::after{
        position: absolute;
        top: 50%;
        right: 12px;
        transform: translateY(-50%);
        width: 18px;
        height: 18px;
        background-size: 7px;
        background-position: 7px center;
    }
}

/*-------------
footer
-------------*/
.footer{
    position: relative;
    margin: 100px var(--inner-sides) 0;
    padding: 61px 0 60px;
}
@media screen and (max-width:768px){
    .footer{
        margin-inline: 0;
        margin-top: 60px;
        padding: 24px 0 min(60px, calc(30px + env(safe-area-inset-bottom)));
    }
}
.footer-top{
    display: flex;
    align-items: flex-start;
    gap: 0 14px;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    pointer-events: none;
}
.footer-top::before{
    flex: 1 1 auto;
    height: 1px;
    border-top: solid 1px var(--accent-green);
    content: "";
}
@media screen and (max-width:768px){
    .footer-top{
        gap: 0 10px;
    }
}
.footer-pagetop{
    flex: 0 0 auto;
    transform: translateY(-50%);
    pointer-events: auto;
}
.footer-pagetop a{
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 12px;
    padding: 20px 0;
    color: var(--accent-green);
    font-family: var(--font-en-sans);
    font-size: 1.6rem;
    line-height: 1;
    transition: background var(--ease);
}
.footer-pagetop a::before{
    flex: 0 0 auto;
    transform: rotate(-90deg);
    width: 14px;
    height: 14px;
    background: var(--bg-arrow);
    content: "";
}
@media (any-hover: hover){
    .footer-pagetop a:hover::before{
        animation: var(--bg-arrow-slide);
    }
}
@media screen and (max-width:768px){
    .footer-pagetop a{
        gap: 8px;
        padding: 13px 0;
        font-size: 1.4rem;
    }
}
.footer-inner{
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0 60px;
    width: var(--inner-wid-width);
    margin: 0 auto;
}
@media screen and (max-width:768px){
    .footer-inner{
        flex-direction: column;
        align-items: stretch;
        gap: 50px 0;
        width: var(--inner-width_sp);
        margin-inline: auto;
    }
}

/* 左：ロゴ・住所・SNS */
.footer-info{
    display: flex;
    align-items: flex-end;
    gap: 0 50px;
}
.footer-logo-mark{
    flex: 0 0 auto;
    display: block;
    width: 475px;
}
.footer-logo-mark img{
    width: 390px;
    height: auto;
}
.footer-detail{
    padding-bottom: 15px;
}
.footer-logo-name{
    display: block;
}
.footer-logo-corp{
    display: block;
    margin-bottom: 8px;
    font-size: 1.8rem;
    line-height: 1;
    letter-spacing: .08em;
}
.footer-logo-main{
    display: block;
    font-size: 2.5rem;
    line-height: 1;
    letter-spacing: .08em;
}
@media (any-hover: hover){
    .footer-logo-mark,
    .footer-logo-name{
        transition: opacity var(--ease);
    }
    .footer-logo-mark:hover,
    .footer-logo-name:hover{
        opacity: .7;
    }
}
.footer-address{
    margin-top: 22px;
    font-size: 1.6rem;
    line-height: calc(1em + 9px);
    font-style: normal;
}
.footer-sns{
    display: flex;
    gap: 0 12px;
    margin-top: 20px;
}
.footer-sns-item a{
    display: block;
    width: 26px;
    height: 26px;
}
.footer-sns-item img{
    width: 100%;
    height: auto;
}
@media (any-hover: hover){
    .footer-sns-item a{
        transition: opacity var(--ease);
    }
    .footer-sns-item a:hover{
        opacity: .7;
    }
}
@media screen and (max-width:768px){
    /* マーク＋園名を横並び、住所・SNSは下に全幅で置く */
    .footer-info{
        display: grid;
        align-items: center;
        gap: 0 25px;
    }
    .footer-detail{
        display: contents;
    }
    .footer-logo-mark{
        width: 100%;
        height: auto;
    }
    .footer-logo-mark img{
        width: 100%;
        height: auto;
    }
    .footer-logo-name{
        grid-row: 1;
        grid-column: 2;
    }
    .footer-address{
        grid-row: 2;
        grid-column: 1 / -1;
        margin-top: 30px;
    }
    .footer-sns{
        grid-row: 3;
        grid-column: 1 / -1;
        margin-top: 20px;
    }
    .footer-logo-corp{
        margin-bottom: 12px;
        font-size: 1.6rem;
    }
    .footer-logo-main{
        font-size: 2.3rem;
    }
}

/* 右：ナビ・バナー・コピーライト */
.footer-side{
    display: flex;
    flex-direction: column;
    flex: 0 0 auto;
}
.footer-nav-list{
    display: grid;
    grid-template-columns: repeat(2, minmax(0, auto));
    gap: 8px 60px;
}
.footer-nav-list-item a{
    display: flex;
    align-items: center;
    gap: 0 16px;
    padding: 5px 0;
    color: var(--accent-green);
    font-size: 1.8rem;
    line-height: calc(1em + 4px);
}
.footer-nav-list-item a::before{
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background-color: var(--accent-green);
    background-image: url(../images/arrow_right_white.svg);
    background-repeat: no-repeat;
    background-position: center;
    background-size: 6px auto;
    content: "";
}
@media (any-hover: hover){
    .footer-nav-list-item a{
        transition: opacity var(--ease);
    }
    .footer-nav-list-item a:hover{
        opacity: .6;
    }
}
@media screen and (max-width:768px){
    .footer-nav-list{
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 5px 25px;
    }
    .footer-nav-list-item a{
        gap: 0 10px;
        padding: 6px 0;
        font-size: 1.4rem;
    }
    .footer-nav-list-item a::before{
        width: 15px;
        height: 15px;
        background-size: 5px auto;
    }
}
.footer-bnr{
    display: flex;
    align-items: center;
    gap: 0 46px;
    margin-top: 40px;
    justify-content: space-between;
}
.footer-bnr-image{
    flex: 0 0 auto;
    width: 194px;
}
.footer-bnr-image img{
    width: 100%;
    height: auto;
}
.footer-bnr-btn{
    display: flex;
    justify-content: center;
    align-items: center;
    flex: 0 0 auto;
    width: 210px;
    height: 52px;
    border: solid 1px var(--base-black);
    color: var(--base-black);
    font-size: 1.6rem;
    line-height: 1;
    letter-spacing: .04em;
    text-align: center;
    transition: background var(--ease), color var(--ease);
}
@media (any-hover: hover){
    .footer-bnr-image{
        transition: opacity var(--ease);
    }
    .footer-bnr-image:hover{
        opacity: .7;
    }
    .footer-bnr-btn:hover{
        background: var(--base-black);
        color: #fff;
    }
}
@media screen and (max-width:768px){
    .footer-bnr{
        gap: 0 18px;
        margin-top: 50px;
    }
    .footer-bnr-image{
        flex: 0 1 auto;
        width: 155px;
    }
    .footer-bnr-btn{
        flex: 1 1 auto;
        width: auto;
        height: 44px;
        font-size: 1.4rem;
    }
}
.footer-copy{
    display: block;
    margin: 60px 0 0 auto;
    color: var(--accent-green);
    font-size: 1.6rem;
    line-height: calc(1em + 2px);
    letter-spacing: .04em;
}
@media screen and (max-width:768px){
    .footer-copy{
        margin: 30px auto 0;
        font-size: 1.2rem;
        text-align: center;
    }
}

/*-------------
top-page
-------------*/
.top-page .bg-gradation._top{
    height: 100dvh;
    transition: none;
}
.top-page .bg-gradation._top::before,
.top-page .bg-gradation._top::after{
    content: none;
}
.top-page .bg-gradation._bottom{
    opacity: 1;
    position: absolute;
    top: auto;
    bottom: 0;
    height: 660px;
}
.top-page .bg-gradation._bottom::before{
    height: 330px;
    background: linear-gradient(to top, rgba(255,255,255,.6) 0 120px, rgba(255,255,255,0));
}
.top-page .bg-gradation._bottom::after{
    height: 150px;
}
@media screen and (max-width:768px){
    .top-page .bg-gradation._bottom{
        height: 630px;
    }
    .top-page .bg-gradation._bottom::before{
        height: 315px;
        background: linear-gradient(to top, rgba(255,255,255,.6) 0 120px, rgba(255,255,255,0));
    }
    .top-page .bg-gradation._bottom::after{
        height: 75px;
    }
}

/* header_fv */
.header._top,
.header_fv{
    position: absolute;
    top: 20px;
    right: var(--inner-sides);
    z-index: 99;
}
.header_fv .header-logo{
    display: none;
}
.header_fv .header-nav a{
    display: block;
    min-width: 110px;
    padding: 8px 0;
    color: var(--accent-black);
    font-family: var(--font-en-sans);
    font-size: 1.8rem;
    line-height: calc(1em + 2px);
    letter-spacing: 0;
}
.header_fv .header-nav-list-item a{
    border-bottom: solid 1px currentColor;
}
@media screen and (max-width:768px){
    .header_fv{
        top: 13px;
    }
    .header_fv .header-nav a{
        min-width: 90px;
        padding: 6px 0;
        font-size: clamp(13px, 3.94vw, 1.6rem);
    }
}
@media screen and (max-width:768px){
    .header._firstview .header-menu{
        transition: none!important;
    }
}

/* top-visual（ファーストビュー） */
.top-visual{
    --fv-slide-w: clamp(560px, 44vw, 853px); /* スライド1枚の幅（正方形） */
    --fv-slide-radius: 60px;
    --fv-arc-visible: 520px; /* 弧の頂点〜ファーストビュー下端の高さ（大きいほど上に被る） */
    --fv-arc-x: 64%;         /* 弧の頂点の横位置（右に寄せるほど左側の立ち上がりが急になる） */
    position: relative;
    isolation: isolate;
    padding: 60px 0 150px;
    overflow: clip; /* 背景の弧のはみ出しを切る（スライダーは画面右端まで） */
}
/* 上下の弧の形を共通化（上：.top-visual::before／下：.top-about::after） */
.top-visual,
.top-about{
    --arc-h: 500px;  /* 楕円の半分の高さ（大きいほど深い弧） */
    --arc-w: 150%;   /* 楕円の横幅（小さいほど両端が急に落ちる）。vwだと body の min-width より画面が狭いときにずれるので、セクション幅基準の % にする */
}
/* 背景のベージュの弧（上）
   --fv-arc-visible が両端の下がり幅より小さいと、GROWTHとの境目に段差が出る
   */
.top-visual::before{
    position: absolute;
    top: calc(100% - var(--fv-arc-visible));
    left: var(--fv-arc-x);
    z-index: -1;
    width: var(--arc-w);
    height: calc(var(--arc-h) * 2);
    border-radius: 50%;
    background: var(--bg-beige);
    translate: -50% 0;
    content: "";
}
.top-visual-inner{
    display: flex;
    align-items: center;
    gap: 0 min(80px, 5vw);
    /* 左端はサイト共通のワイド幅に揃え、右側は画面端まで流す */
    padding-left: calc((100% - var(--inner-wid-width)) / 2);
}

/* テキスト */
.top-visual-body{
    flex: 0 0 auto;
    width: clamp(340px, 24vw, 460px);
}
.top-visual-en{
    color: var(--accent-green);
    font-family: var(--font-en-serif);
    font-size: 2rem;
    letter-spacing: .04em;
}
.top-visual-title{
    margin-top: 24px;
}
.top-visual-title img{
    display: block;
    width: 353px;
    max-width: 100%;
    height: auto;
}
.top-visual-text{
    margin-top: 70px;
    color: var(--base-black);
    font-size: 1.8rem;
    line-height: 2.5;
    letter-spacing: .08em;
}

/* スライダー */
.top-visual-slider{
    flex: 1 1 0;
    min-width: 0;
}
.top-visual-slider .top-visual-slide{
    /* perView: 'auto' 用にスライド幅をCSSで固定 */
    min-width: var(--fv-slide-w);
    max-width: var(--fv-slide-w);
    aspect-ratio: 1 / 1;
    border-radius: var(--fv-slide-radius);
    overflow: hidden;
}
.top-visual-slide picture,
.top-visual-slide img{
    display: block;
    width: 100%;
    height: 100%;
}
.top-visual-slide img{
    object-fit: cover;
    user-select: none;
    -webkit-user-drag: none;
}
/* JS初期化前の並び（初期化後はkeen-sliderが位置を制御） */
#js-top-visual-slider:not(._ready){
    display: flex;
    gap: 0 40px;
    overflow: hidden;
}
#js-top-visual-slider:not(._ready) .top-visual-slide{
    flex: 0 0 auto;
}

@media screen and (max-width:768px){
    .top-visual{
        --fv-slide-w: 77vw;
        --fv-slide-radius: 30px;
        --fv-arc-visible: 60px; /* 両端まで弧が届く高さ（小さいとGROWTHとの境目に段差が出る） */
        --fv-arc-x: 50%;
        --arc-h: 50vw;
        --arc-w: 160%;
        padding: 40px 0 90px;
    }
    .top-visual-inner{
        flex-direction: column;
        align-items: stretch;
        padding-left: 0;
    }
    .top-visual-slider{
        order: -1; /* スマホは写真を先に */
        flex: 0 0 auto;
        width: 100%;
    }
    #js-top-visual-slider:not(._ready){
        gap: 0 20px;
    }
    .top-visual-body{
        width: 100%;
        margin-top: 44px;
        padding: 0 calc(var(--inner-sides_sp) + 3vw);
    }
    .top-visual-en{
        font-size: 1.4rem;
    }
    .top-visual-title{
        margin-top: 14px;
    }
    .top-visual-title img{
        width: 302px;
    }
    .top-visual-text{
        margin-top: 40px;
        font-size: 1.5rem;
        line-height: calc(1em + 20px);
    }
}


/*-------------
content
-------------*/
body{
    --fv-overlap: 230px; /* 白くなりきるまでの距離 */
}
@media screen and (max-width:768px){
    body{
        --fv-overlap: 90px;
    }
}
.content{
    position: relative;
    z-index: 1;
}

/*-------------
top 共通見出し
-------------*/
.top-head-en{
    color: var(--base-black);
    font-family: var(--font-en-serif);
    font-size: 2rem;
    letter-spacing: .06em;
}
.top-head-title{
    margin-top: 6px;
    color: var(--accent-green);
    font-size: 5rem;
    font-weight: bold;
    line-height: 1.6;
    letter-spacing: .06em;
}
.top-head-title2{
    margin-top: 6px;
    color: var(--accent-green);
    font-size: 4.2rem;
    font-weight: bold;
    line-height: 1.6;
    letter-spacing: .06em;
}
.top-head._center{
    text-align: center;
}
@media screen and (max-width:768px){
    .top-head{
        text-align: center;
    }
    .top-head-en{
        font-size: 1.4rem;
    }
    .top-head-title{
        margin-top: 4px;
        font-size: 2.4rem;
    }
    .top-head-title2{
        margin-top: 4px;
        font-size: 2.6rem;
    }
}

/*-------------
top-about（GROWTH／PHILOSOPHY／MESSAGE）
-------------*/
.top-about{
    --top-inner: 1160px;     /* MESSAGE・GROWTHのコンテンツ幅 */
    --top-green: #6B7F4E;    /* 理事長メッセージの緑 */
    position: relative;
    z-index: 1;
    isolation: isolate;
    padding-bottom: 210px;   /* 理事長名〜弧の一番下 */
    background: linear-gradient(var(--bg-beige), var(--bg-beige)) top / 100% calc(100% - var(--arc-h)) no-repeat;
    overflow-x: clip;
}
.top-about::after{
    position: absolute;
    bottom: 0;
    left: 50%;
    z-index: -1;
    width: var(--arc-w);
    height: calc(var(--arc-h) * 2);
    border-radius: 50%;
    background: var(--bg-beige);
    translate: -50% 0;
    content: "";
}
@media screen and (max-width:768px){
    .top-about{
        padding-bottom: 0;
        background: none;
        overflow-x: visible;
    }
    .top-about::after{
        display: none;
    }
}

/* GROWTH */
.top-growth{
    padding: 20px 0 150px;
}
.top-growth-inner{
    width: var(--inner-width);
    margin: 0 auto;
}
.top-growth-list{
    display: flex;
    justify-content: center;
    /* 円と円の間（1420px時 約50px）と左右の余白（1420px時 約54px）を、枠の幅に合わせて増減 */
    gap: 0 3.5%;
    margin-top: 40px;
    padding: 0 3.8%;
    list-style: none;
}
.top-growth-item{
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    flex: 0 1 290px; /* 最大290px（330px → 290px）。狭い画面では枠に合わせて縮む */
    min-width: 0;
    aspect-ratio: 1 / 1;
    border-radius: 50%;
    background: #fff;
    text-align: center;
}
.top-growth-item-title{
    color: var(--accent-green);
    font-size: clamp(2.6rem, 1.5vw, 3.2rem); /* 円が縮む幅では文字も少し小さく */
    font-weight: bold;
    line-height: calc(1em + 13px);
    letter-spacing: .08em;
}
.top-growth-item-text{
    margin-top: 10px;
    font-size: clamp(1.5rem, .85vw, 1.8rem);
    line-height: calc(1em + 17px);
    letter-spacing: .04em;
}
@media screen and (max-width:768px){
    .top-growth{
        --arc-h: 50px;
        --arc-w: 110%;
        position: relative;
        isolation: isolate;
        padding: 10px 0 calc(70px + var(--arc-h));
        background: linear-gradient(var(--bg-beige), var(--bg-beige)) top / 100% calc(100% - var(--arc-h)) no-repeat;
        overflow-x: clip;
    }
    .top-growth::after{
        position: absolute;
        bottom: 0;
        left: 50%;
        z-index: -1;
        width: var(--arc-w);
        height: calc(var(--arc-h) * 2);
        border-radius: 50%;
        background: var(--bg-beige);
        translate: -50% 0;
        content: "";
    }
    .top-growth-inner{
        width: 84vw;
    }
    .top-growth-list{
        flex-direction: column;
        gap: 12px 0;
        margin-top: 50px;
        padding: 0;
    }
    .top-growth-item{
        flex: none;
        width: 100%;
        aspect-ratio: auto;
        padding: 34px 20px;
        border-radius: 24px;
    }
    .top-growth-item-title{
        font-size: 2rem;
    }
    .top-growth-item-text{
        margin-top: 8px;
        font-size: 1.4rem;
    }
}

/* PHILOSOPHY */
.top-philosophy-inner{
    display: flex;
    align-items: center;
    gap: 0 min(86px, 6vw);
    /* 右端はMESSAGEのコンテンツ幅に揃える */
    padding-right: calc((100% - var(--top-inner)) / 2);
}
.top-philosophy-pic{
    flex: 0 0 auto;
    width: 52.5vw;
    min-width: 650px;
    aspect-ratio: 1.62 / 1;
    border-radius: 0 100px 100px 0;
    overflow: hidden;
}
.top-philosophy-pic img{
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.top-philosophy-body{
    flex: 1 1 0;
    min-width: 0;
}
.top-philosophy-text{
    margin-top: 30px;
    font-size: 1.8rem;
    line-height: calc(1em + 22px);
    letter-spacing: .04em;
    line-break: strict;
}
@media screen and (max-width:768px){
    .top-philosophy{
        padding: 60px 0 80px;
        background: #fff;
    }
    .top-philosophy-inner{
        flex-direction: column;
        width: 84vw;
        margin: 0 auto;
        padding-right: 0;
    }
    .top-philosophy-pic{
        order: 1; /* SPは 見出し → 写真 → 本文 */
        width: 100%;
        min-width: inherit;
        margin-top: 30px;
        border-radius: 24px;
    }
    .top-philosophy-body{
        display: contents; /* 見出しと本文を写真の前後に分けて並べる */
    }
    .top-philosophy .top-head{
        order: 0;
        width: 100%;
    }
    .top-philosophy-text{
        order: 2;
        margin-top: 36px;
        font-size: 1.5rem;
        line-height: calc(1em + 20px);
    }
}

/* MESSAGE */
.top-message{
    padding-top: 160px;
}
.top-message-inner{
    display: flex;
    align-items: center;
    width: var(--inner-width);
    margin: 0 auto;
}
.top-message-main{
    position: relative;
    z-index: 0;
    flex: 1 1 0;
    min-width: 0;
}
.top-message-card{
    margin: 50px -80px 0 0; /* 右側は写真の下に潜り込ませる */
    padding: 64px 140px 64px 64px;
    border-radius: 100px;
    background: var(--top-green);
    color: #fff;
}
.top-message-catch{
    font-size: 3rem;
    font-weight: bold;
    line-height: calc(1em + 18px);
    letter-spacing: .06em;
}
.top-message-text{
    margin-top: 20px;
    font-size: 1.8rem;
    font-weight: 500;
    line-height: calc(1em + 22px);
    letter-spacing: .02em;
}
.top-message-sign{
    float: right;
    width: fit-content;
    margin-top: 40px;
    padding-left: 6px;
    padding-right: 60px;
    display: flex;
    flex-flow: column;
    align-items: flex-start;
}
.top-message-sign-role{
    font-size: 2rem;
    font-weight: bold;
    letter-spacing: .06em;
}
.top-message-sign-name{
    font-size: 3rem;
    font-weight: bold;
    letter-spacing: .1em;
}
.top-message-pic{
    position: relative;
    z-index: 1;
    flex: 0 0 auto;
    width: 42.5%;
    aspect-ratio: 301 / 405;
    border-radius: 100px;
    overflow: hidden;
}
.top-message-pic picture,
.top-message-pic img{
    display: block;
    width: 100%;
    height: 100%;
}
.top-message-pic img{
    object-fit: cover;
}
@media screen and (max-width:768px){
    .top-message{
        padding: 60px 0;
        background: var(--top-green);
        color: #fff;
    }
    .top-message .top-head-en,
    .top-message .top-head-title{
        color: #fff;
    }
    .top-message-inner{
        flex-direction: column;
        width: 84vw;
    }
    .top-message-main{
        display: contents; /* 見出し → 写真 → 本文 の順に並べ替える */
    }
    .top-message .top-head{
        order: 0;
        width: 100%;
    }
    .top-message-pic{
        order: 1;
        width: 100%;
        margin-top: 40px;
        aspect-ratio: 5 / 3;
        border-radius: 24px;
    }
    .top-message-card{
        order: 2;
        margin: 40px 0 0;
        padding: 0;
        border-radius: 0;
        background: none;
    }
    .top-message-catch{
        font-size: 2rem;
        line-height: calc(1em + 20px);
    }
    .top-message-text{
        margin-top: 24px;
        font-size: 1.5rem;
        line-height: calc(1em + 20px);
    }
    .top-message-sign{
        width: 100%;
        order: 3;
        margin-top: 40px;
        padding-left: 0;
    }
    .top-message-sign-name{
        font-size: 2rem;
        font-weight: bold;
    }
    .top-message-sign-role{
        font-size: 1.4rem;
    }
}

/*-------------
top-schools（TWO SCHOOLS）
-------------*/
.top-schools{
    padding: 160px 0 0;
}
.top-schools-inner{
    width: var(--inner-width);
    margin: 0 auto;
}
.top-schools-lead{
    margin-top: 50px;
    font-size: 1.8rem;
    line-height: 2.2;
    letter-spacing: .06em;
    text-align: center;
}
.top-schools-list{
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0 60px;
    margin-top: 120px;
}

/* 園カード（色は園ごとに変数で切り替え） */
.top-school{
    --school-bg: var(--bg-beige2);
    --school-btn: var(--accent-green);
    display: flex;
    flex-direction: column;
    padding: 60px 63px 90px;
    border-radius: 80px;
    background: var(--school-bg);
}
.top-school._yamanami{
    --school-bg: #EEF1E7;
    --school-btn: var(--accent-green);
}
.top-school._tulip{
    --school-bg: #FCECEF;
    --school-btn: #F1A1AE;
}
.top-school-logo{
    margin: 0;
    text-align: center;
}
.top-school-logo img{
    display: inline-block;
    width: auto;
    height: 77px;
    vertical-align: top;
}
._tulip .top-school-logo img{
    height: 85px;
}
.top-school-pic{
    margin-top: 60px;
    aspect-ratio: 3 / 2;
    border-radius: 30px;
    overflow: hidden;
}
.top-school-pic img{
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* 特徴リスト */
.top-school-points{
    margin: 50px 0 0;
    padding: 0;
    list-style: none;
}
.top-school-point{
    display: flex;
    align-items: center;
    gap: 0 20px;
}
.top-school-point + .top-school-point{
    margin-top: 34px;
}
.top-school-point img{
    flex: 0 0 auto;
    width: 73px;
    height: 73px;
}
.top-school-point span{
    position: relative;
    flex: 1 1 0;
    align-self: stretch; /* アイコンと同じ高さにして、その下端基準で点線を引く */
    display: flex;
    align-items: center;
    min-width: 0;
    font-size: 2.1rem;
    font-weight: bold;
    line-height: 1.6;
    letter-spacing: .04em;
}
/* 点線はテキスト部分の下だけ、アイコンの下端より少し下に引く */
.top-school-point span::after{
    position: absolute;
    right: 0;
    bottom: 5px;
    left: 0;
    border-top: 2px dotted rgba(31, 61, 42, .35);
    content: "";
}

/* ボタン */
.top-school-more{
    margin-top: 76px;
    text-align: center;
}
.top-school-more a{
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 360px;
    padding: 20px 80px 20px 50px;
    border-radius: 100px;
    background: var(--school-btn);
    color: #fff;
    font-size: 2.1rem;
    font-weight: bold;
    letter-spacing: .08em;
    text-decoration: none;
    transition: opacity var(--ease);
}
/* 右の白丸＋矢印 */
.top-school-more a::before,
.top-school-more a::after{
    position: absolute;
    top: 50%;
    content: "";
}
.top-school-more a::before{
    right: 21px;
    width: 33px;
    height: 33px;
    border-radius: 50%;
    background: #fff;
    translate: 0 -50%;
}
.top-school-more a::after{
    right: 33px;
    width: 15px;
    height: 15px;
    border-top: 1px solid var(--school-btn);
    border-right: 1px solid var(--school-btn);
    translate: 0 -50%;
    rotate: 45deg;
    transition: right var(--ease);
}
@media (hover: hover){
    .top-school-more a:hover{
        opacity: .85;
    }
}

@media screen and (max-width:768px){
    .top-schools{
        padding: 70px 0 0;
    }
    .top-schools-inner{
        width: 100%;
    }
    .top-schools-lead{
        width: 84vw;
        margin: 28px auto 0;
        font-size: 1.5rem;
        line-height: 2.4;
        text-align: left;
    }
    .top-schools-list{
        grid-template-columns: 1fr;
        gap: 12px 0;
        width: calc(100% - 24px);
        margin: 40px auto 0;
    }
    .top-school{
        padding: 50px 16px 50px;
        border-radius: 24px;
    }
    .top-school-logo img{
        height: 59px;
    }
    ._tulip .top-school-logo img{
        height: 59px;
    }
    .top-school-pic{
        margin-top: 28px;
        border-radius: 24px;
    }
    .top-school-points{
        margin-top: 25px;
        padding: 0 4px;
    }
    .top-school-point{
        gap: 0;
    }
    .top-school-point + .top-school-point{
        margin-top: 16px;
    }
    .top-school-point img{
        width: 48px;
        height: 48px;
    }
    .top-school-point span{
        padding-left: 10px;
        box-sizing: border-box;
        font-size: 1.5rem;
    }
    .top-school-point span::after{
        bottom: -8px;
    }
    .top-school-more{
        margin-top: 50px;
    }
    .top-school-more a{
        min-width: 239px;
        padding: 5px 56px 5px 34px;
        font-size: 1.5rem;
    }
    .top-school-more a::before{
        right: 14px;
        width: 15px;
        height: 15px;
    }
    .top-school-more a::after{
        right: 19px;
        width: 8px;
        height: 8px;
    }
}

/*-------------
top-our（OUR CONNECTIONS）
-------------*/
.top-our{
    padding: 160px 0 0;
}
.top-our-inner{
    width: var(--inner-width);
    margin: 0 auto;
    text-align: center;
}
.top-our-logo{
    margin-top: 120px;
}
.top-our-chart{
    margin-top: 70px;
}
.top-our-logo img,
.top-our-chart img{
    display: inline-block;
    max-width: 100%;
    height: auto;
    vertical-align: top;
}
.top-our-logo img{
    max-width: 375px;
}
.top-our-chart img{
    max-width: 1000px;
    width: 100%;
    margin: 0 auto;
}
.top-our-text{
    margin-top: 20px;
    font-size: 1.8rem;
    font-weight: 500;
    line-height: 2;
    letter-spacing: .04em;
}
@media screen and (max-width:768px){
    .top-our{
        padding: 60px 0 0;
    }
    .top-our-inner{
        width: 84vw;
    }
    .top-our-logo{
        margin-top: 36px;
    }
    .top-our-chart{
        margin-top: 28px;
    }
    .top-our-text{
        margin-top: 32px;
        font-size: 1.6rem;
        line-height: calc(1em + 20px);
        text-align: left;
    }
    .top-our-logo img{
        width: 216px;
        margin: 0 auto;
    }
}

/*-------------
top-history（HISTORY）
-------------*/
.top-history{
    padding: 140px 0 0;
}
.top-history-panel{
    width: var(--inner-wid-width); /* 色付き部分（最大1670px） */
    margin: 0 auto;
    padding: 120px 0 100px;
    box-sizing: border-box;
    border-radius: 40px;
    background: var(--bg-beige);
}
.top-history-inner{
    display: flex;
    align-items: flex-start;
    gap: 0 min(96px, 6%);
    width: min(var(--inner-width), 100% - 200px);
    margin: 100px auto 0;
}

/* 年表 */
.top-history-list{
    flex: 1 1 0;
    min-width: 0;
    margin: 0;
}
.top-history-row{
    display: grid;
    grid-template-columns: 210px 1fr;
    align-items: start;
    padding: 22px 0;
    border-top: 1px solid #E4DFD5;
}
.top-history-row:first-child{
    padding-top: 0;
    border-top: none;
}
.top-history-row dt{
    font-size: 1.8rem;
    font-weight: bold;
    line-height: 1.8;
    align-self: center;
    letter-spacing: .02em;
}
.top-history-row dd{
    margin: 0;
    font-size: 1.8rem;
    font-weight: 500;
    line-height: calc(1em + 14px);
    letter-spacing: .02em;
}

/* 写真 */
.top-history-pics{
    display: flex;
    flex-direction: column;
    gap: 60px 0;
    flex: 0 0 auto;
    width: clamp(300px, 31%, 434px);
}
.top-history-pic{
    aspect-ratio: 434 / 356;
    border-radius: 30px;
    overflow: hidden;
}
.top-history-pic picture,
.top-history-pic img{
    display: block;
    width: 100%;
    height: 100%;
}
.top-history-pic img{
    object-fit: cover;
}

@media screen and (max-width:768px){
    .top-history{
        padding: 70px 0 0;
    }
    .top-history-panel{
        width: 100%;
        padding: 60px 8vw;
        border-radius: 0;
    }
    .top-history-inner{
        flex-direction: column;
        width: auto;
        margin-top: 40px;
    }
    .top-history-pics{
        order: -1; /* SPは写真を先に */
        flex-direction: row;
        gap: 0 30px;
        width: 100%;
        margin-bottom: 40px;
    }
    .top-history-pic{
        flex: 1 1 0;
        min-width: 0;
        aspect-ratio: 151 / 110;
        border-radius: 20px;
    }
    .top-history-list{
        width: 100%;
    }
    .top-history-row{
        grid-template-columns: 100px 1fr;
        padding: 22px 0;
    }
    .top-history-row:first-child{
        padding-top: 0;
    }
    .top-history-row dt,
    .top-history-row dd{
        font-size: 1.3rem;
        align-self: flex-start;
    }
    .top-history-row dd{
        font-size: 1.5rem;
        line-height: calc(1em + 9px);
    }
}

/*---------------------
top-gallery（ギャラリー）
------------------------*/
.top-gallery{
    padding: 50px 0;
    overflow: hidden;
}
@media screen and (max-width:768px){
    .top-gallery{
        padding: 0;
    }
}

/* 流れ続けるスライダー（画面幅いっぱい） */
.top-gallery__slider{
    width: 100%;
    margin-top: 100px;
    margin-bottom: 30px;
}
@media screen and (max-width:768px){
    .top-gallery__slider{
        margin-top: 80px;
        margin-bottom: 20px;
    }
}
.top-gallery__slide{
    flex: 0 0 auto;
    width: 440px;
    min-width: 440px;
    max-width: 440px;
}
.top-gallery__slide img{
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 515 / 389;
    object-fit: cover;
    border-radius: 30px;
}
@media screen and (max-width:768px){
    .top-gallery__slide{
        width: 200px;
        min-width: 200px;
        max-width: 200px;
    }
}

/*-------------
top-contact
-------------*/
.top-contact{
    padding: 180px 0 0;
    background: #fff;
    position: relative;
}
@media screen and (max-width:768px){
    .top-contact{
        padding: 70px 0 0;
    }
}
.top-contact-panel{
    position: relative;
    width: var(--inner-wid-width);
    margin: 0 auto;
    padding: 0 min(120px, 7.2%);
    border-radius: 30px;
    background: var(--bg-green);
}
@media screen and (max-width:768px){
    .top-contact-panel{
        width: var(--inner-width_sp);
        padding: 58px 0 0;
        border-radius: 24px;
        overflow: hidden; /* 写真の下端をパネルの角丸で切る */
    }
}
.top-contact-inner{
    display: flex;
    gap: 0 min(120px, 7.2%);
}
@media screen and (max-width:768px){
    .top-contact-inner{
        flex-direction: column;
        width: 100%;
    }
}

/* テキスト */
.top-contact-body{
    margin: 0 auto;
    padding: min(110px, 7.5%) 0;
}
.top-contact-title{
    font-size: clamp(40px, 2.5vw, 50px);
    font-weight: bold;
    line-height: 1.4;
    letter-spacing: .06em;
    color: #fff;
}
.top-contact-text{
    margin-top: 20px;
    font-size: 1.8rem;
    color: #fff;
    line-height: 2.1;
    letter-spacing: .04em;
}
.top-contact-more{
    margin-top: 44px;
}
.top-contact-more a{
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
    width: 260px;
    height: 50px;
    padding-right: 20px;
    border-radius: 999px;
    background: var(--accent-green);
    color: #fff;
    font-size: 1.8rem;
    font-weight: bold;
    line-height: 1;
    letter-spacing: .04em;
    transition: opacity var(--ease);
}
.top-contact-more a::before,
.top-contact-more a::after{
    position: absolute;
    top: 50%;
    content: "";
}
.top-contact-more a::before{
    right: 15px;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #fff;
    translate: 0 -50%;
}
.top-contact-more a::after{
    right: 23px;
    width: 11px;
    height: 11px;
    border-top: 1px solid var(--accent-green);
    border-right: 1px solid var(--accent-green);
    translate: 0 -50%;
    rotate: 45deg;
    transition: right var(--ease);
}
@media (any-hover: hover){
    .top-contact-more a:hover{
        opacity: .8;
    }
}
.top-contact-more-tel{
    font-size: 3.0rem;
    font-weight: bold;
    color: #fff;
    margin-top: 20px;
}
@media screen and (max-width:768px){
    .top-contact-body{
        order: 1; /* テキストを先に */
        flex: 0 0 auto;
        margin-right: 0;
        width: 100%;
        padding: 0 20px;
        text-align: center;
    }
    .top-contact-title{
        font-size: 2.8rem;
    }
    .top-contact-text{
        margin-top: 20px;
        font-size: 1.6rem;
        line-height: 2.2;
    }
    .top-contact-more{
        margin-top: 32px;
    }
    .top-contact-more a{
        width: 215px;
        height: 35px;
        margin: 0 auto;
        padding-right: 24px;
        font-size: 1.4rem;
    }
    .top-contact-more a::before{
        right: 14px;
        width: 15px;
        height: 15px;
    }
    .top-contact-more a::after{
        right: 19px;
        width: 8px;
        height: 8px;
    }
    .top-contact-more-tel{
        font-size: 2.5rem;
        margin-top: 15px;
    }
}

/* 写真 */
.top-contact-pics{
    position: relative;
    width: min(745px, 53%);
}
.top-contact-pic{
    position: absolute;
    border-radius: 30px;
    overflow: hidden;
}
.top-contact-pic img{
    display: block;
    max-width: 100%;
    height: auto;
}
.top-contact-pic picture{
    display: block;
    width: 100%;
    height: 100%;
}
.top-contact-pic._pic01{
    top: -95px;
    left: min(65px, 13.7%);
    z-index: 1;
    max-width: calc(100% - 105px);
}
.top-contact-pic._pic02{
    top: 176px;
    right: 0;
    z-index: 2;
    max-width: 50%;
}
.top-contact-pic._pic03{
    bottom: -83px;
    left: 0;
    z-index: 1;
}
@media screen and (max-width:768px){
    /* SPは1枚だけをテキストの下に敷く */
    .top-contact-pics{
        order: 2; /* 写真をテキストの後ろに */
        position: static;
        width: 100%;
        height: auto;
        margin-top: 58px;
    }
    .top-contact-pic{
        border-radius: 0;
    }
    .top-contact-pic._pic01{
        position: static;
        width: 100%;
        max-width: none;
    }
    .top-contact-pic._pic02,
    .top-contact-pic._pic03{
        display: none;
    }
}

/*-------------
top-overview（法人概要）
-------------*/
.top-overview{
    padding: 220px 0 30px;
}
.top-overview-inner{
    width: min(1000px, var(--inner-width));
    margin: 0 auto;
}
.top-overview-list{
    margin: 70px 0 0;
}
.top-overview-row{
    display: grid;
    grid-template-columns: 290px 1fr;
    align-items: start;
    padding: 30px 0;
    border-top: 1px solid #E6E6E6;
}
.top-overview-row:first-child{
    padding-top: 0;
    border-top: none;
}
.top-overview-row dt{
    font-size: 2rem;
    font-weight: bold;
    line-height: 1.8;
    letter-spacing: .04em;
}
.top-overview-row dd{
    margin: 0;
    font-size: 2rem;
    line-height: 1.8;
    letter-spacing: .04em;
}
.top-overview-row dd a{
    color: inherit;
    text-decoration: none;
}
/* ボタンは園カードのものを流用し、色だけ指定 */
.top-overview-more{
    --school-btn: var(--accent-green);
    margin-top: 110px;
}
@media screen and (max-width:768px){
    .top-overview{
        padding: 90px 0 80px;
    }
    .top-overview-inner{
        width: 84vw;
    }
    .top-overview .top-head{
        text-align: left;
    }
    .top-overview-list{
        margin-top: 40px;
    }
    .top-overview-row{
        grid-template-columns: 100px 1fr;
        padding: 22px 0;
    }
    .top-overview-row:first-child{
        padding-top: 0;
    }
    .top-overview-row dt,
    .top-overview-row dd{
        font-size: 1.4rem;
    }
    .top-overview-more{
        margin-top: 30px;
    }
}


/*---------------------
page-header
------------------------*/
.page-header{
    padding: 100px 0 80px;
}
.page-header__title{
    font-size: 5rem;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: .06em;
    text-align: center;
}
/* タイトル下の説明文（任意） */
.page-header__text{
    width: var(--inner-width);
    margin: 70px auto 10px;
    font-size: 1.8rem;
    line-height: calc(1em + 11px);
    letter-spacing: .04em;
    text-align: center;
}
/* 下の区切り線（説明文の有無にかかわらず表示） */
.page-header::after{
    display: block;
    width: 30px;
    height: 2px;
    margin: 110px auto 0;
    background: #1F3D2A;
    content: "";
}
@media screen and (max-width:768px){
    .page-header{
        padding: 50px 0;
    }
    .page-header__title{
        font-size: 2.8rem;
    }
    .page-header__text{
        width: 84vw;
        margin: 55px auto 30px;
        font-size: 1.5rem;
        line-height: calc(1em + 20px);
        text-align: left;
    }
    .page-header::after{
        width: 10px;
        height: 1px;
        margin-top: 50px;
    }
}

/*---------------------
content
------------------------*/
.sec-title1{
    font-size: 5rem;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: .06em;
}
.sec-title1:before{
    color: var(--base-black);
    content: attr(data-en);
    margin-bottom: 10px;
    font-family: var(--font-en-serif);
    font-size: 2.0rem;
    font-weight: 500;
    line-height: 1;
    display: block;
    letter-spacing: .12em;
}
@media screen and (max-width:768px){
    .sec-title1{
        margin-top: 15px;
        font-size: 2.8rem;
    }
    .sec-title1:before{
        font-size: 1.4rem;
    }
}
/*---------------------
about-facilities
------------------------*/
.about-facilities{
    padding: 130px 0 140px;
}
@media screen and (max-width:768px){
    .about-facilities{
        padding: 45px 0 60px;
    }
}
.about-facilities__inner{
    width: min(100% - 60px, 1200px);
    margin: 0 auto;
}
@media screen and (max-width:768px){
    .about-facilities__inner{
        width: 100%;
        padding: 0 var(--inner-sides_sp);
    }
}
.about-facilities__list{
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 95px;
    margin-top: 90px;
}
@media screen and (max-width:768px){
    .about-facilities__list{
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 30px 20px;
        margin-top: 40px;
    }
}
.about-facilities__image{
    border-radius: 14px;
    overflow: hidden;
    cursor: pointer;
}
.about-facilities__image img{
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 410 / 292;
    object-fit: cover;
    transition: transform .6s ease;
}
@media (any-hover: hover){
    .about-facilities__image:hover img{
        transform: scale(1.05);
    }
}
.about-facilities__caption{
    margin-top: 23px;
    font-size: 1.8rem;
    line-height: 1.5;
    letter-spacing: .1em;
    text-align: center;
}
@media screen and (max-width:768px){
    .about-facilities__image{
        border-radius: 8px;
    }
    .about-facilities__caption{
        margin-top: 12px;
        font-size: 1.4rem;
    }
}
.about-facilities__note{
    margin-top: 90px;
    font-size: 1.6rem;
    line-height: 1.8;
    letter-spacing: .04em;
    text-align: right;
}
@media screen and (max-width:768px){
    .about-facilities__note{
        margin-top: 40px;
        font-size: 1.3rem;
        text-align: left;
    }
}

/*-------------
404
-------------*/
.content._404{
    padding: 100px 0;
}
.err404{
    width: var(--inner-width);
    margin: 0 auto;
    text-align: center;
}
.err404-title{
    margin-bottom: 23px;
    font-size: 36px;
    font-weight: bold;
    line-height: calc(1em + 8px);
}
.err404-title::after{
    display: block;
    margin-top: 12px;
    color: var(--accent-green);
    font-size: 2rem;
    line-height: 1;
    content: attr(data-en);
}
.err404-btn{
    width: 360px;
    margin: 45px auto 0;
}
.err404-btn a{
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 0 14px;
    position: relative;
    width: auto;
    height: 60px;
    padding: 0 10px 0 26px;
    border-radius: 999px;
    background: var(--accent-green);
    color: #fff;
    font-size: 1.8rem;
    font-weight: bold;
    line-height: 1;
    letter-spacing: .04em;
    transition: opacity var(--ease);
}
.err404-btn a::after{
    flex: 0 0 auto;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background-color: #fff;
    background-image: url(../images/arrow_right_pink.svg);
    background-repeat: no-repeat;
    background-position: center;
    background-size: 9px auto;
    content: "";
}
@media screen and (max-width:768px){
    .content._404{
        padding: 30px 0 80px;
    }
    .err404{
        text-align: left;
    }
    .err404-title{
        margin: 21px 0 24px;
        font-size: 2.7rem;
    }
    .err404-title::after{
        font-size: 1.6rem;
    }
    .err404-btn{
        width: 100%;
        margin-top: 30px;
    }
    .err404-btn a{
        justify-content: center;
        gap: 0;
        width: 100%;
        height: 50px;
        padding: 0;
        font-size: 1.6rem;
    }
    .err404-btn a::after{
        position: absolute;
        top: 50%;
        right: 16px;
        transform: translateY(-50%);
        width: 18px;
        height: 18px;
        background-size: 7px;
        background-position: 7px center;
    }
}
@media (any-hover: hover){
    .err404-btn a:hover{
        opacity: .8;
    }
}

/*---------------------
disclosure（情報公開）
------------------------*/
.disclosure{
    padding-bottom: 0;
}
.disclosure-title{
    padding-top: 50px;
    font-size: 3.6rem;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: .04em;
    text-align: center;
}
.disclosure-sec{
    padding: 140px 0 0;
}
.disclosure-sec._bg{
    margin-top: 140px;
    padding: 120px 0;
    background: var(--bg-beige);
}
.disclosure-inner{
    /* width: min(1420px, 100% - var(--inner-sides) * 2); */
    width: min(1420px, 100% - 90px * 2);
    margin: 0 auto;
}

/* 見出し（番号の丸＋テキスト） */
.disclosure-head{
    display: flex;
    align-items: center;
    gap: 0 24px;
    font-size: 3.6rem;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: .06em;
}
.disclosure-head-num{
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 60px;
    height: 60px;
    border-radius: 50%;
    background: var(--accent-green);
    color: #fff;
    font-size: 2rem;
    font-weight: bold;
    letter-spacing: .04em;
}

/* 年度ごとのまとまり */
.disclosure-year{
    margin-top: 80px;
    padding: 60px 0;
    border-top: 1px solid #DEDEDE;
}
.disclosure-year + .disclosure-year{
    margin-top: 0;
}
.disclosure-year:last-child{
    padding-bottom: 0;
}
.disclosure-year-title{
    font-size: 2rem;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: .04em;
}

/* 資料カード */
.disclosure-files{
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 35px;
    margin: 40px 0 0;
    padding: 0;
    list-style: none;
}
.disclosure-year .disclosure-files{
    margin-top: 30px;
}
/* 共通の a / a:link 指定に負けないよう .disclosure を付けて詳細度を上げる */
.disclosure .disclosure-file{
    --file-bg: var(--bg-beige);       /* カードの背景 */
    --file-icon-bg: #fff;             /* アイコンの背景 */
    display: flex;
    align-items: center;
    gap: 0 20px;
    height: 100%;
    padding: 26px 28px 26px 44px;
    box-sizing: border-box;
    border: 1px solid #ADADAD;
    border-radius: 28px;
    background: var(--file-bg);
    color: var(--base-black);
    text-decoration: none;
    transition: border-color var(--ease), box-shadow var(--ease);
}
/* ベージュ帯の上では色を反転 */
.disclosure .disclosure-sec._bg .disclosure-file{
    --file-bg: #fff;
    --file-icon-bg: var(--bg-beige);
}
.disclosure-file-body{
    flex: 1 1 0;
    min-width: 0;
}
.disclosure-file-name{
    display: block;
    font-size: 2rem;
    font-weight: bold;
    line-height: 1.6;
    letter-spacing: .04em;
}
.disclosure-file-type{
    display: block;
    color: #9A9A9A;
    font-size: 1.4rem;
    letter-spacing: .06em;
}
.disclosure .disclosure-file-icon{
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 46px;
    height: 46px;
    border-radius: 8px;
    background: var(--file-icon-bg);
}
.disclosure .disclosure-file-icon img{
    display: block;
    width: 16px;
    height: 16px;
}
@media (hover: hover){
    .disclosure .disclosure-file:hover{
        border-color: var(--accent-green);
        box-shadow: 0 6px 16px rgba(31, 61, 42, .08);
    }
}

@media screen and (max-width:768px){
    .disclosure-title{
        padding-top: 20px;
        font-size: 2rem;
    }
    .disclosure-sec{
        padding-top: 60px;
    }
    .disclosure-sec._bg{
        margin-top: 50px;
        padding: 60px 0;
    }
    .disclosure-inner{
        width: 85vw;
    }
    .disclosure-head{
        flex-direction: column;
        gap: 10px 0;
        font-size: 2rem;
        text-align: center;
    }
    .disclosure-head-num{
        width: 38px;
        height: 38px;
        font-size: 1.4rem;
    }
    .disclosure-year{
        margin-top: 50px;
        padding: 60px 0;
    }
    .disclosure-year:first-of-type{
        padding-top: 0;
        border-top: none; /* SPは最初の年度の上に線を引かない */
    }
    .disclosure-year-title{
        font-size: 1.5rem;
        font-weight: bold;
        text-align: center;
    }
    .disclosure-files{
        grid-template-columns: 1fr;
        gap: 10px;
        margin-top: 30px;
    }
    .disclosure-year .disclosure-files{
        margin-top: 24px;
    }
    .disclosure .disclosure-file{
        gap: 0 14px;
        padding: 18px 18px 18px 26px;
        border-radius: 20px;
    }
    .disclosure-file-name{
        font-size: 1.5rem;
    }
    .disclosure-file-type{
        font-size: 1.2rem;
        line-height: calc(1em + 8px);
    }
    .disclosure .disclosure-file-icon{
        width: 32px;
        height: 32px;
        border-radius: 8px;
    }
    .disclosure .disclosure-file-icon img{
        width: 11px;
        height: 11px;
    }
}

/* 入札情報（緑の帯）
   見出し・カードは既存の .disclosure-head / .disclosure-year-title / .disclosure-file を流用 */
.disclosure-sec._green{
    margin-top: 120px;
    padding: 120px 0;
    background: var(--accent-green);
    color: #fff;
}
/* 上の資料カードと列を揃える：見出しが1列目、本文が2〜3列目 */
.disclosure-bid{
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0 36px;
    align-items: start;
}
.disclosure-bid-body{
    grid-column: 2 / 4;
}
.disclosure-sec._green .disclosure-head,
.disclosure-sec._green .disclosure-year-title{
    color: #fff;
}
.disclosure-bid .disclosure-files{
    grid-template-columns: repeat(2, 1fr);
    margin-top: 24px;
}
.disclosure .disclosure-sec._green .disclosure-file{
    --file-bg: #fff;
    --file-icon-bg: #EBEBEB;
    border-color: #fff;
}
@media screen and (max-width:768px){
    .disclosure-sec._green{
        margin-top: 60px;
        padding: 60px 0;
    }
    .disclosure-bid{
        display: block;
    }
    .disclosure-bid-body{
        margin-top: 40px;
    }
    .disclosure-bid .disclosure-year-title{
        text-align: left;
    }
    .disclosure-bid .disclosure-files{
        grid-template-columns: 1fr;
        margin-top: 24px;
    }
}

/*---------------------
recruit（採用情報）
------------------------*/
.recruit{
    padding-bottom: 140px;
}

/* 導入 */
.recruit-intro{
    width: var(--inner-width);
    margin: 0 auto;
    text-align: center;
}
.recruit-intro-title{
    font-size: 3.6rem;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: .06em;
}
.recruit-intro-text{
    margin-top: 40px;
    font-size: 1.8rem;
    line-height: calc(1em + 11px);
    letter-spacing: .02em;
}
.recruit-intro-text p + p{
    margin-top: 24px;
}

/* 研修体制（ベージュの帯＋白いカード） */
.recruit-training{
    margin-top: 100px;
    padding: 40px 0;
    background: var(--bg-beige);
}
.recruit-training-card{
    width: var(--inner-width);
    margin: 0 auto;
    padding: 40px 130px 60px;
    box-sizing: border-box;
    border-radius: 30px;
    background: #fff;
}
.recruit-training-head{
    display: flex;
    align-items: center;
    gap: 0 20px;
    font-size: 3.6rem;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: .06em;
}
.recruit-training-icon{
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 70px;
    height: 70px;
    border-radius: 50%;
    background: var(--bg-beige2);
}
.recruit-training-icon img{
    display: block;
    width: 36px;
    height: 36px;
}
.recruit-training-catch{
    margin-top: 40px;
    font-size: 2.4rem;
    font-weight: bold;
    line-height: 1.6;
    letter-spacing: .04em;
}
.recruit-training-text{
    margin-top: 30px;
    font-size: 1.8rem;
    line-height: calc(1em + 18px);
    letter-spacing: .02em;
}
.recruit-training-text + .recruit-training-text{
    margin-top: 0;
}
.recruit-training-text strong{
    font-weight: bold;
}

/* 募集要項 */
.recruit-req{
    width: var(--inner-width);
    margin: 100px auto 0;
}
.recruit-req-box{
    margin-top: 30px;
    padding: 46px 40px;
    border: 1px solid #D9D9D9;
    border-radius: 30px;
}
.recruit-req-none{
    font-size: 2rem;
    line-height: 1.6;
    letter-spacing: .1em;
    text-align: center;
}

/* 採用についてのお問い合わせ（ボタンは .top-school-more を流用） */
.recruit-contact{
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px 40px;
    margin-top: 30px;
    padding: 60px 130px;
    border-radius: 40px;
    background: var(--bg-beige2);
}
.recruit-contact-title{
    font-size: 3.6rem;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: .06em;
}
.recruit-contact-text{
    margin-top: 10px;
    font-size: 1.8rem;
    line-height: 1.6;
    letter-spacing: .06em;
}
.recruit-contact-more{
    --school-btn: var(--accent-green);
    flex: 0 0 auto;
    margin-top: 0;
}

@media screen and (max-width:768px){
    .recruit{
        padding-bottom: 60px;
    }
    .recruit-intro{
        width: 84vw;
        text-align: left;
    }
    .recruit-intro-title{
        font-size: 2rem;
    }
    .recruit-intro-text{
        margin-top: 24px;
        font-size: 1.5rem;
        line-height: 1.9;
    }
    .recruit-intro-text p + p{
        margin-top: 20px;
    }
    .recruit-training{
        margin-top: 50px;
        padding: 28px 0;
    }
    .recruit-training-card{
        width: calc(100% - 24px);
        padding: 26px 22px 30px;
        border-radius: 20px;
    }
    .recruit-training-head{
        gap: 0 12px;
        font-size: 2rem;
    }
    .recruit-training-icon{
        width: 50px;
        height: 50px;
    }
    .recruit-training-icon img{
        width: 24px;
        height: 24px;
    }
    .recruit-training-catch{
        margin-top: 20px;
        font-size: 1.7rem;
    }
    .recruit-training-text{
        margin-top: 18px;
        font-size: 1.5rem;
        line-height: calc(1em + 12px);
    }
    .recruit-training-text + .recruit-training-text{
        margin-top: 20px;
    }
    .recruit-req{
        width: calc(100% - 24px);
        margin-top: 60px;
    }
    .recruit-req .top-head{
        text-align: center;
    }
    .recruit-req-box{
        margin-top: 20px;
        padding: 36px 20px;
        border-radius: 20px;
    }
    .recruit-req-none{
        font-size: 1.6rem;
    }
    .recruit-contact{
        flex-direction: column;
        align-items: stretch;
        margin-top: 20px;
        padding: 30px 20px;
        border-radius: 20px;
    }
    .recruit-contact-title{
        font-size: 2rem;
    }
    .recruit-contact-text{
        margin-top: 6px;
        font-size: 1.5rem;
        font-weight: 500;
    }
    .recruit-contact-more a{
        font-size: 1.8rem;
        display: flex;
        width: 100%;
        min-width: 0;
        box-sizing: border-box;
        padding: 11px 56px 11px 34px;
    }
}

/*---------------------
privacy（個人情報保護方針）
------------------------*/
.privacy{
    padding-bottom: 140px;
}
.privacy-box{
    --box-w: min(1420px, 100% - var(--inner-sides) * 2); /* 枠：最大1420px */
    width: var(--box-w);
    margin: 0 auto;
    /* 中身：最大1160px。枠が狭いときも左右50pxは確保 */
    padding: 60px max(50px, (var(--box-w) - 1160px) / 2);
    box-sizing: border-box;
    border-radius: 30px;
    background: var(--bg-beige);
    container-type: inline-size; /* 中の番号サイズを箱の幅基準で決めるため */
}
.privacy-text{
    font-size: 1.8rem;
    line-height: calc(1em + 18px);
    letter-spacing: .04em;
}
.privacy-head{
    margin-top: 60px;
    padding-bottom: 24px;
    border-bottom: 1px solid #ADADAD;
    font-size: 3.6rem;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: .04em;
}
.privacy-contact{
    margin-top: 40px;
    font-size: 1.8rem;
    line-height: calc(1em + 14px);
    letter-spacing: .04em;
}
.privacy-address{
    margin-top: 14px;
}

/* TEL・FAX */
.privacy-tels{
    display: flex;
    align-items: center;
    margin: 40px 0 0;
    padding: 0;
    list-style: none;
}
.privacy-tel{
    display: flex;
    align-items: center;
    gap: 0 20px;
}
/* TELとFAXの間の縦線 */
.privacy-tel + .privacy-tel{
    margin-left: 30px;
    padding-left: 30px;
    border-left: 1px solid #DEDBD6;
}
.privacy-tel-icon{
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 70px;
    height: 70px;
    border-radius: 50%;
    background: #fff;
}
.privacy-tel-icon img{
    display: block;
    width: 36px;
    height: 36px;
}
.privacy-tel-label{
    font-size: 2.4rem;
    font-weight: bold;
    letter-spacing: .06em;
}
.privacy-tel-num{
    color: var(--accent-green);
    font-size: min(5rem, (100cqi - 400px) / 16);
    font-weight: bold;
    line-height: 1.2;
    letter-spacing: .04em;
    text-decoration: none;
    white-space: nowrap;
}
.privacy a.privacy-tel-num{
    color: var(--accent-green);
}

@media screen and (max-width:768px){
    .privacy{
        padding-bottom: 60px;
    }
    .privacy-box{
        width: calc(100% - 24px);
        padding: 30px 20px 40px;
        border-radius: 20px;
    }
    .privacy-text{
        font-size: 1.5rem;
        line-height: calc(1em + 12px);
    }
    .privacy-head{
        margin-top: 30px;
        padding-bottom: 16px;
        font-size: 2rem;
    }
    .privacy-contact{
        margin-top: 20px;
        font-size: 1.5rem;
    }
    .privacy-address{
        margin-top: 10px;
    }
    .privacy-tels{
        flex-direction: column;
        align-items: flex-start;
        gap: 14px 0;
        margin-top: 30px;
    }
    .privacy-tel{
        gap: 0 12px;
    }
    .privacy-tel + .privacy-tel{
        margin-left: 0;
        padding-left: 0;
        border-left: none;
    }
    .privacy-tel-icon{
        width: 50px;
        height: 50px;
    }
    .privacy-tel-icon img{
        width: 24px;
        height: 24px;
    }
    .privacy-tel-label{
        font-size: 1.5rem;
    }
    .privacy-tel-num{
        font-size: 2.4rem;
    }
}

/*---------------------
form（フォーム共通）
見学・入園のご相談／お問い合わせで共用
------------------------*/
.form-sec{
    margin-top: 40px;
    padding: 80px 0 120px;
    background: var(--bg-beige);
}
.form-sec-inner{
    width: var(--inner-width);
    margin: 0 auto;
}
.form-sec-title{
    font-size: 4.2rem;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: .06em;
    text-align: center;
}
.form-sec-lead{
    margin-top: 20px;
    font-size: 1.8rem;
    line-height: calc(1em + 11px);
    letter-spacing: .04em;
    text-align: center;
}

/* 白いパネル */
.form-panel{
    margin-top: 60px;
    padding: 50px 100px 60px;
    border-radius: 30px;
    background: #fff;
}

/* 1項目（ラベル列＋入力列） */
/* 表（1行＝1項目：th がラベル列、td が入力列） */
.form-table{
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}
.form-table tr{
    border-bottom: 1px solid #DEDEDE;
}
.form-table th,
.form-table td{
    padding: 26px 0;
    vertical-align: top;
    text-align: left;
}
.form-table th{
    width: 320px;
    font-weight: normal;
}
.form-label{
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0 10px;
    min-height: 58px; /* 入力欄の高さに合わせて縦中央に */
    padding: 0 40px 0 0;
    box-sizing: border-box;
    font-size: 2rem;
    font-weight: bold;
    line-height: calc(1em + 12px);
    letter-spacing: .04em;
}
.form-req{
    flex: 0 0 auto;
    padding: 2px 5px;
    border-radius: 5px;
    background: var(--bg-green);
    color: #fff;
    font-size: 1.6rem;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: .06em;
}
.form-table td .txtRed{
    margin-top: 2px;
    font-weight: bold;
}
.form-table td:has(.__error) input:is([type="text"],[type="email"],[type="email"],[type="tel"],[type="date"]), 
.form-table td:has(.__error) textarea{
    background: #ffebeb;
}

/* テキスト入力・テキストエリア */
.form-input,
.form-textarea{
    display: block;
    width: 100%;
    padding: 0 20px;
    box-sizing: border-box;
    border: 1px solid #CCCCCC;
    border-radius: 10px;
    background: #fff;
    color: var(--base-black);
    font-family: inherit;
    font-size: 1.6rem;
    letter-spacing: .04em;
    transition: border-color var(--ease);
}
.form-input{
    height: 58px;
}
.form-input._short{
    max-width: 440px;
}
.form-textarea{
    min-height: 170px;
    padding: 16px 20px;
    line-height: 1.8;
    resize: vertical;
}
.form-input::placeholder,
.form-textarea::placeholder{
    color: #999999;
}
.form-input:focus,
.form-textarea:focus{
    border-color: var(--accent-green);
    outline: none;
}

/* チェックボックス・ラジオ（共通の見た目） */
.form-checks,
.form-radios{
    display: flex;
    flex-wrap: wrap;
    gap: 14px 30px;
}
.form-check,
.form-radio{
    display: inline-flex;
    align-items: center;
    gap: 0 12px;
    min-height: 60px;
    font-size: 1.8rem;
    letter-spacing: .04em;
    cursor: pointer;
}
.form-check input,
.form-radio input{
    flex: 0 0 auto;
    width: 24px;
    height: 24px;
    margin: 0;
    border: 1px solid #DDDBD5;
    background: #fff;
    appearance: none;
    cursor: pointer;
}
.form-check input{
    position: relative;
    border-radius: 5px;
}
/* チェックマーク */
.form-check input:checked::after{
    position: absolute;
    top: 4px;
    left: 8px;
    width: 6px;
    height: 11px;
    border-right: 2px solid var(--accent-green);
    border-bottom: 2px solid var(--accent-green);
    rotate: 45deg;
    content: "";
}
.form-radio input{
    border-radius: 50%;
}
.form-radio input:checked{
    border-width: 7px;
    border-color: #fff;
    background: var(--accent-green);
    box-shadow: 0 0 0 1px #DDDBD5;
}
.form-check input:focus-visible,
.form-radio input:focus-visible{
    outline: 2px solid var(--accent-green);
    outline-offset: 2px;
}

/* タイル型のチェックボックス（ご希望の園など） */
.form-checks._tile{
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 14px 20px;
}
.form-checks._tile .form-check{
    padding: 0 20px;
    border-radius: 10px;
    background: #F7F8F8;
}

/* 日付 */
.form-date-field{
    position: relative;
    width: min(100%, 440px);
}
.form-date-field::after{
    position: absolute;
    top: calc(50% - 7px);
    right: 22px;
    width: 14px;
    height: 14px;
    background: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" data-name="svg" viewBox="0 0 14 14"><path d="M4.244 0a.81.81 0 0 0-.809.814v1.632c-.009.449.361.819.821.819s.83-.369.821-.819V.814A.813.813 0 0 0 4.244 0m5.488 0a.81.81 0 0 0-.809.814v1.632c-.009.449.362.819.821.819s.831-.369.821-.819V.814A.81.81 0 0 0 9.732 0M1.194 1.868C.546 1.868 0 2.403 0 3.036v9.796C0 13.465.547 14 1.194 14h11.61c.648 0 1.195-.535 1.195-1.168V3.036c0-.633-.548-1.168-1.195-1.168h-1.641v.567c.009.419-.169.812-.447 1.058-.279.246-.63.355-.972.355s-.692-.109-.971-.355a1.39 1.39 0 0 1-.448-1.058v-.567H5.674v.567c.008.419-.169.812-.448 1.058s-.63.355-.971.355-.693-.109-.972-.355a1.38 1.38 0 0 1-.447-1.058v-.567zm.449 2.867h10.714v7.659H1.643zm0 0"/></svg>') no-repeat center / contain;
    content: "";
    pointer-events: none;
}
@media screen and (max-width:768px){
    .form-date-field{
        width: 100%;
    }
    .form-date-field::after{
        top: calc(50% - 6px);
        right: 18px;
        width: 12px;
        height: 12px;
    }
}
.form-date-field input[type="date"]{
    position: relative;
}
.form-date-field input[type="date"]::-webkit-calendar-picker-indicator {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 1;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
}
.form-date-field input[type="date"]::-webkit-inner-spin-button{
    -webkit-appearance: none;
}
.form-date-field input[type="date"]::-webkit-clear-button{
    -webkit-appearance: none;
}

/* 入れ子の入力（見学希望日・時間など） */
.form-sub{
    margin-top: 20px;
    padding: 24px 36px;
    border-radius: 10px;
    background: var(--bg-beige);
}
.form-sub-row{
    display: grid;
    grid-template-columns: 136px 1fr;
    align-items: center;
}
.form-sub-row + .form-sub-row{
    margin-top: 10px;
}
.form-sub-label{
    font-size: 1.8rem;
    font-weight: bold;
    letter-spacing: .04em;
}
.form-sub .form-radio{
    min-height: 48px;
}

/* 送信ボタン */
.form-submit{
    margin-top: 56px;
    text-align: center;
}
.form-submit button{
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 360px;
    padding: 20px 50px 20px 50px;
    border: none;
    border-radius: 100px;
    background: var(--accent-green);
    color: #fff;
    font-family: inherit;
    font-size: 2.4rem;
    font-weight: bold;
    letter-spacing: .08em;
    cursor: pointer;
    transition: opacity var(--ease);
}
/* 右の白丸＋矢印 */
.form-submit button::before,
.form-submit button::after{
    position: absolute;
    top: 50%;
    content: "";
}
.form-submit button::before{
    right: 20px;
    width: 33px;
    height: 33px;
    border-radius: 50%;
    background: #fff;
    translate: 0 -50%;
}
.form-submit button::after{
    right: 32px;
    width: 15px;
    height: 15px;
    border-top: 1px solid var(--accent-green);
    border-right: 1px solid var(--accent-green);
    translate: 0 -50%;
    rotate: 45deg;
}
@media (hover: hover){
    .form-submit button:hover{
        opacity: .85;
    }
}

@media screen and (max-width:768px){
    .form-sec{
        margin-top: 30px;
        padding: 50px 0 60px;
    }
    .form-sec-inner{
        width: calc(100% - 24px);
    }
    .form-sec-title{
        font-size: 2.6rem;
    }
    .form-sec-lead{
        margin-top: 14px;
        padding: 0 4vw;
        font-size: 1.5rem;
        text-align: left;
    }
    .form-panel{
        margin-top: 30px;
        padding: 10px 20px 40px;
        border-radius: 20px;
    }
    /* SPはラベルを入力欄の上に */
    /* SPは表を縦積みにし、ラベルを入力欄の上に */
    .form-table,
    .form-table tbody,
    .form-table tr,
    .form-table th,
    .form-table td{
        display: block;
        width: 100%;
    }
    .form-table tr{
        padding: 20px 0;
    }
    .form-table th,
    .form-table td{
        padding: 0;
    }
    .form-label{
        justify-content: flex-start;
        min-height: 0;
        margin-bottom: 10px;
        padding: 0;
        font-size: 1.5rem;
    }
    .form-req{
        font-size: 1.3rem;
        padding: 2px 5px;
    }
    .form-input{
        height: 48px;
        padding: 0 14px;
        font-size: 1.6rem;
        border-radius: 7px;
    }
    .form-input._short{
        max-width: none;
    }
    .form-textarea{
        padding: 12px 14px;
        font-size: 1.6rem;
    }
    .form-check,
    .form-radio{
        min-height: 40px;
        font-size: 1.6rem;
    }
    .form-checks._tile{
        grid-template-columns: 1fr;
        gap: 8px;
    }
    .form-checks._tile .form-check{
        min-height: 48px;
        padding: 0 14px;
    }
    .form-sub{
        margin-top: 12px;
        padding: 18px 16px;
    }
    .form-sub-row{
        grid-template-columns: 1fr;
        gap: 8px 0;
    }
    .form-sub-row + .form-sub-row{
        margin-top: 18px;
    }
    .form-sub-label{
        font-size: 1.5rem;
    }
    .form-sub .form-radios{
        flex-direction: column;
        gap: 4px;
    }
    .form-sub .form-radio{
        min-height: 36px;
    }
    .form-submit{
        margin-top: 36px;
    }
    .form-submit button{
        width: 100%;
        min-width: 0;
        padding: 16px 34px 16px 34px;
        font-size: 1.5rem;
    }
    .form-submit button::before{
        right: 16px;
        width: 22px;
        height: 22px;
    }
    .form-submit button::after{
        right: 26px;
        width: 5px;
        height: 5px;
    }
}

/* 確認画面 */
.form-table._confirm th,
.form-table._confirm td{
    padding: 22px 0;
}
.form-table._confirm .form-label{
    min-height: 0;
}
.form-table._confirm td{
    font-size: 1.8rem;
    line-height: 1.9;
    letter-spacing: .04em;
    overflow-wrap: anywhere; /* 長いメールアドレスや連続した文字も折り返す */
}
.form-submit._confirm{
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 20px;
}
/* 「入力内容を修正する」：小さめ・矢印なし */
.form-submit button._back{
    min-width: 240px;
    padding: 10px 40px;
    background: var(--bg-green);
    color: var(--base-black);
    font-size: 1.8rem;
}
.form-submit button._back::before,
.form-submit button._back::after{
    content: none;
}
@media screen and (max-width:768px){
    .form-table._confirm th,
    .form-table._confirm td{
        padding: 0;
    }
    .form-table._confirm td{
        font-size: 1.6rem;
    }
    /* SPは送信ボタンを上に */
    .form-submit._confirm{
        flex-direction: column-reverse;
        gap: 14px;
    }
    .form-submit button._back{
        width: auto;
        min-width: 200px;
        padding: 10px 34px;
        font-size: 1.6rem;
    }
}

/* 完了画面 */
.form-sec._complete{
    padding-bottom: 120px;
}
.form-complete-text{
    margin-top: 40px;
    font-size: 1.8rem;
    line-height: calc(1em + 11px);
    letter-spacing: .04em;
    text-align: center;
}
.form-complete-text p + p{
    margin-top: 24px;
}
@media screen and (max-width:768px){
    .form-sec._complete{
        padding-bottom: 60px;
    }
    .form-complete-text{
        margin-top: 24px;
        padding: 0 4vw;
        font-size: 1.4rem;
        text-align: left;
    }
    .form-complete-text p + p{
        margin-top: 16px;
    }
}

/*---------------------
consultation（見学・入園のご相談）
------------------------*/
.consult-info{
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0 40px;
    width: var(--inner-width);
    margin: 0 auto;
}
.consult-info-card{
    padding: 20px 40px;
    border-radius: 20px;
    background: #F3F5F2;
    text-align: center;
}
.consult-info-card._tel{
    background: #EEF1E7;
}
.consult-info-head{
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0 20px;
    padding-bottom: 20px;
    border-bottom: 1px solid #fff;
    font-size: 3.6rem;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: .06em;
}
.consult-info-icon{
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 70px;
    height: 70px;
    border-radius: 50%;
    background: #fff;
}
.consult-info-icon img{
    display: block;
    width: 36px;
    height: 36px;
}
.consult-info-body{
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 120px;
    padding-top: 20px;
}
._tel .consult-info-body{
    padding-top: 5px;
}

/* 見学の時間 */
.consult-visit{
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0 30px;
    margin: 0;
}
.consult-visit dt{
    font-size: 2rem;
    font-weight: bold;
    letter-spacing: .02em;
}
.consult-visit dd{
    display: flex;
    gap: 0 14px;
    margin: 0;
}
.consult-visit-time{
    padding: 10px 25px;
    border: 1px solid #1F3D2A;
    border-radius: 100px;
    background: #fff;
    font-size: 2rem;
    font-weight: bold;
    letter-spacing: .04em;
}
.consult-visit-note{
    margin-top: 12px;
    font-size: 1.8rem;
    letter-spacing: .04em;
}

/* 電話 */
.consult-tel{
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0 30px;
}
.consult-tel-label{
    font-family: var(--font-en-sans);
    font-size: 2.4rem;
    font-weight: bold;
    letter-spacing: .04em;
}
.consultation a.consult-tel-num,
.contact a.consult-tel-num,
.consult-tel-num{
    color: var(--accent-green);
    font-size: 5rem;
    font-weight: 900;
    line-height: 1.2;
    letter-spacing: .04em;
    text-decoration: none;
    white-space: nowrap;
}

@media screen and (max-width:768px){
    .consult-info{
        grid-template-columns: 1fr;
        gap: 12px 0;
        width: calc(100% - 24px);
    }
    .consult-info-card{
        padding: 18px 16px 20px;
        border-radius: 20px;
    }
    .consult-info-head{
        gap: 0 12px;
        padding-bottom: 12px;
        font-size: 2rem;
    }
    .consult-info-icon{
        width: 50px;
        height: 50px;
    }
    .consult-info-icon img{
        width: 24px;
        height: 24px;
    }
    .consult-info-body{
        min-height: 0;
        padding-top: 14px;
    }
    .consult-visit{
        gap: 0 10px;
    }
    .consult-visit dt{
        font-size: 1.4rem;
    }
    .consult-visit dd{
        gap: 0 10px;
    }
    .consult-visit-time{
        padding: 3px 15px;
        font-size: 1.4rem;
        border-radius: 27px;
    }
    .consult-visit-note{
        margin-top: 8px;
        font-size: 1.3rem;
    }
    .consult-tel{
        gap: 0 14px;
    }
    .consult-tel-label{
        font-size: 1.4rem;
    }
    .consultation a.consult-tel-num,
    .contact a.consult-tel-num,
    .consult-tel-num{
        font-size: 3rem;
    }
}

/* 1枚だけのカード（お問い合わせ：お電話） */
.consult-info._single{
    grid-template-columns: 1fr;
}
@media screen and (min-width:769px){
    /* PCは見出しと番号を縦線で区切って横並び */
    .consult-info-card._wide{
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 46px 60px;
    }
    .consult-info-card._wide .consult-info-head{
        padding: 0 46px 0 0;
        border-bottom: none;
        border-right: 1px solid #DEDEDE;
    }
    .consult-info-card._wide .consult-info-body{
        min-height: 0;
        padding: 0 0 0 46px;
    }
}
