@charset "utf-8";


.sec-intro {
    overflow: hidden;
}

.sec-intro .inner-12 {
    padding-bottom: 181px;
}

.sec-intro .sec-title {
    margin-bottom: 80px;
}

.sec-intro .desc {
    margin-bottom: 179px;
}

.sec-intro .desc p {
    font-weight: 700;
    text-align: center;
}

.sec-intro .images {
    display: flex;
    gap: 94px;
    align-items: flex-start;
    justify-content: center;
    margin: 0 2%;
}

.sec-intro .images .img01,
.sec-intro .images .img03 {
    margin-top: -98px;
}

.sec-intro .images .img01,
.sec-intro .images .img02,
.sec-intro .images .img03 {
    position: relative;
    height: 100%;
    border-radius: 20px;
}

.sec-intro .images .img01 img,
.sec-intro .images .img02 img,
.sec-intro .images .img03 img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 20px;
}

.sec-intro .images .img02 {
    margin-top: auto;
}

.sec-intro .images .img01::before {
    content: "";
    background: url(/system_panel/uploads/images/20260211132831703420.png) no-repeat center/contain;
    width: 291px;
    height: 291px;
    position: absolute;
    bottom: -99px;
    left: -97px;
    z-index: -1;
}

.sec-intro .images .img02::before {
    content: "";
    background: url(/system_panel/uploads/images/20260211132831763913.png) no-repeat center/contain;
    width: 198px;
    height: 222px;
    position: absolute;
    top: -81px;
    right: -37px;
    z-index: -1;
}



.sec-intro .images .img03::before {
    content: "";
    background: url(/system_panel/uploads/images/20260211132831479936.png) no-repeat bottom/contain;
    width: 291px;
    height: 291px;
    position: absolute;
    bottom: -65px;
    right: -96px;
    z-index: -1;
}

.concept {
    position: relative;
    /* height は JavaScript で自動計算されるので指定なしでOK */
}

.sp-img {
    display: none;
    /* PCでは絶対に表示しない */
}

.concept .w1920 {
    position: sticky;
    top: 0;
    height: 100vh;
    /* 画面いっぱいに固定 */
    margin-left: 0;
    margin-right: auto;
    display: flex;
    align-items: flex-start;
    /* 上下中央に配置 */
    justify-content: space-between;
    overflow: hidden;
}

/* --- 左側：画像エリアの修正 --- */
.concept .item-image-wrapper {
    position: relative;
    width: 50%;
    height: 100vh;
    /* ★高さを指定（例：画面の8割） */
    border-radius: 0px 300px 0px 0px;
    overflow: hidden;
    /* 角丸を画像にも適用させるため */
}

.concept .item-image-wrapper .img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    transition: opacity 0.6s ease;
}

/* ★画像そのものにフィットさせる */
.concept .item-image-wrapper .img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.concept .item-image-wrapper .img.is-active {
    opacity: 1;
}

/* --- 右側：テキストエリア --- */
.concept .text-scroll-wrapper {
    width: 42%;
    /* 少し余白を持たせると綺麗です */
    position: relative;
    margin-right: 3%;
}

.concept .text {
    height: 110vh;
    display: flex;
    flex-direction: column;
    /* 中央寄せを維持すれば、余白は下に溜まります */
    justify-content: center;
    padding: 5vh 40px 15vh;
    box-sizing: content-box;
}

.concept .text .title {
    display: flex;
    flex-direction: column;
    gap: 16px;
    align-items: flex-start;
    margin-bottom: 56px;
}

.concept .text .title .num {
    font-family: var(--eng);
    font-weight: 700;
    font-size: 22px;
    font-size: clamp(1rem, 0.909rem + 0.39vw, 1.375rem);
    letter-spacing: 0.08em;
    text-align: left;
    color: #acacac;
}

.concept .text .title .ttl-ja {
    font-family: var(--main);
    font-weight: 700;
    font-size: 40px;
    font-size: clamp(1.25rem, 0.947rem + 1.29vw, 2.5rem);
    letter-spacing: 0.08em;
    line-height: 2;
    text-align: left;
    color: #000;
}


.message {
    border-radius: 0px 0px 100px 100px;
    background: #fffddd;
}

.message .w1920 {
    padding: 169px 0 163px;
    margin-right: 0;
    margin-left: auto;
    display: grid;
    grid-template-columns: auto calc(659/1920*100vw);
    gap: 10%;
    align-items: flex-end;
}

.message .text {
    margin-left: 6%;
}


.message .catch {
    font-family: var(--main);
    font-weight: 700;
    font-size: 48px;
    font-size: clamp(1.5rem, 1.136rem + 1.55vw, 3rem);
    letter-spacing: 0.08em;
    line-height: calc(72/48);
    text-align: left;
    color: #212121;
    margin-bottom: 80px;
}

.message .desc {
    margin-bottom: 80px;
}

.message .name {
    display: flex;
    gap: 1em;
    align-items: center;
    justify-content: flex-end;
    font-family: var(--main);
    font-weight: 400;
    font-size: 18px;
    font-size: clamp(1rem, 0.97rem + 0.13vw, 1.125rem);
    letter-spacing: 0.08em;
    line-height: 1;
    color: #212121;
}

.message .name .bold {
    font-weight: 700;
}

.outline .inner-16 {
    margin: 0 10%;
    padding: 189px 0 140px;
}

.outline .title {
    margin-bottom: 32px;
}

.outline .sec-body {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 6%;
}

.outline .sec-body .item {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 32px 0;
    position: relative;
}

.outline .sec-body .item .ttl {
    font-family: var(--main);
    font-weight: 700;
    font-size: 20px;
    font-size: clamp(1rem, 0.939rem + 0.26vw, 1.25rem);
    letter-spacing: 0.08em;
    line-height: 1;
    color: #212121;
}

.outline .sec-body .item .detail {
    font-family: var(--main);
    font-weight: 400;
    font-size: 16px;
    letter-spacing: 0.04em;
    line-height: 30px;
    color: #000;
}

.outline .sec-body .item::before {
    content: "";
    background-size: 100% 2px;
    background-position: 0 100%;
    background-repeat: no-repeat;
    display: inline-block;
    width: 100%;
    height: 2px;
    position: absolute;
    left: 0;
    top: 0;
}

.outline .sec-body .col-left .item:last-child::after {
    content: "";
    background-size: 100% 2px;
    background-position: 0 100%;
    background-repeat: no-repeat;
    display: inline-block;
    width: 100%;
    height: 2px;
    position: absolute;
    left: 0;
    bottom: 0;
    background-image: repeating-linear-gradient(to right, #F2E300, #F2E300 8px, transparent 8px, transparent 16px);
}

.outline .sec-body .item.red::before {
    background-image: repeating-linear-gradient(to right, #c84a3b, #c84a3b 8px, transparent 8px, transparent 16px);
}

.outline .sec-body .item.blue::before {
    background-image: repeating-linear-gradient(to right, #489FE4, #489FE4 8px, transparent 8px, transparent 16px);
}

.outline .sec-body .item.yellow::before {
    background-image: repeating-linear-gradient(to right, #F2E300, #F2E300 8px, transparent 8px, transparent 16px);
}

.outline .sec-body .map,
.outline .sec-body iframe {
    width: 100%;
    border-radius: 20px;
}

.outline .sec-body iframe {
    height: 336px;
}

.t_school .inner-16 {
    margin: 0 10%;
    padding-bottom: 162px;
}

.t_school .sec-body {
    width: 100%;
}

@media (max-width: 960px) {
    .sec-intro .sec-title {
        margin-bottom: 40px;
    }

    .sec-intro .inner-12 {
        padding-bottom: 100px;
    }

    .concept .text .title {
        margin-bottom: 32px;
    }

    .message .w1920 {
        display: flex;
        flex-direction: column;
        padding: 100px 0;
        gap: 40px;
    }

    .outline .sec-body {
        display: flex;
        flex-direction: column;
    }

    .sec-intro .images {
        gap: 0;
        margin: 0;
    }

    .sec-intro .images .img01,
    .sec-intro .images .img02,
    .sec-intro .images .img03 {
        border-radius: 10px;
    }

    .sec-intro .images .img01::before,

    .sec-intro .images .img03::before {
        width: 100px;
        height: 150px;
    }

    .sec-intro .images .img02::before {
        width: 80px;
        top: -105px;
    }

    .sec-intro .images .img03::before {
        right: -55px;
    }

    .sec-intro .images .img01::before {
        bottom: 0;
        left: -45px;
    }

    .concept {
        height: auto !important;
    }

    /* 固定を解除して縦並びに */
    .concept .w1920 {
        position: static;
        height: auto;
        display: block;
        padding: 40px 0;
    }

    /* 画像：横幅いっぱいにして、各テキストの直前に出す */
    .concept .item-image-wrapper {
        display: none;
        /* JSで制御する固定画像エリアを隠す */
    }

    .sp-img {
        display: block;
        width: 100%;
        margin-bottom: 24px;
        /* タイトルとの間隔 */
    }

    .sp-img img {
        width: 100%;
        object-fit: cover;
        height: 77vw;
        border-radius: 0px 50px 0px 0px;
    }

    /* テキスト：通常の表示に戻す */
    .concept .text-scroll-wrapper {
        width: 100%;
        transform: none !important;
        display: flex;
        flex-direction: column;
        gap: 40px;
    }

    .concept .text {
        height: auto;
        padding: 0;
        width: 90%;
        margin: 0 auto;
    }

    .message .catch,
    .message .desc {
        margin-bottom: 40px;
    }

    .message .text {
        margin: auto;
        width: 90%;
    }

    .message .w1920 .img {
        width: 80%;
    }

    .message {
        border-radius: 0 0 40px 40px;
    }

    .outline .inner-16 {
        margin: 0 auto;
        padding: 100px 0;
    }

    .outline .sec-body .col-right .item.blue::before {
        content: none;
    }

    .t_school .inner-16 {
        margin: 0 auto;
        padding-bottom: 100px;
    }


}