@charset "utf-8";

.fade-in {
  opacity: 0;
  transform: translateY(30px) scale(0.98);
  transition: opacity 1.5s ease, transform 2s cubic-bezier(0.22, 1, 0.36, 1);
}

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

/*===========================
article header
===========================*/

.mainSP {
    display: none;
}

.mainVisual {
    position: relative;
    width: 100%;
    aspect-ratio: 32/15;
}

.mainVisual::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image: url(../images/logo-imgIvory.webp);
    background-position: center 30%;
    background-repeat: no-repeat;
    background-size: 20% auto;
    opacity: 0.5;
    z-index: 10;
}

.mainPC {
    display: block;
    margin-top: -118px;
    z-index: 1;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    transition: opacity 1s ease;
    opacity: 0; /* 初期は非表示 */
}

.mainPC.active {
    opacity: 1;
    z-index: 2;
}

@media screen and (max-width: 767px) {
    .mainVisual {
        aspect-ratio: 3/2;
    }

    .mainVisual::before {
        background-position: center 23%;
        background-size: 30% auto;
    }

    .mainSP {
        display: block;
        margin-top: -56px;
        z-index: 1;
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        transition: opacity 1s ease;
        opacity: 0; /* 初期は非表示 */
    }
    .mainSP.active {
        opacity: 1;
        z-index: 2;
    }

    .mainPC {
        display: none;
    }
}

/*===========================
modern ballet
===========================*/

.section__modernBallet {
    padding: 210px 30% 130px;
    align-items: center;
    position: relative;
    background-image: url(../images/hero-backPC.webp);
    background-position: 50% 55px;
    background-repeat: no-repeat;
    background-size: 80% 685px;
    z-index: 1;
    overflow-x: hidden;
}

.hero__img01pc {
    position: absolute;
    left: 4%;
    top: 7%;
    width: 22%;
    height: auto;
    z-index: -1;
}

.hero__img02pc {
    position: absolute;
    right: 5%;
    bottom: 0%;
    width: 22%;
    height: auto;
    z-index: -1;
}

.hero__img01sp,
.hero__img02sp {
    display: none;
}

.modernBallet__txt {
    z-index: 100;
}

.modern__copy {
    text-align: center;
    font-size: 3.2rem;
    font-weight: 500;
    line-height: 150%;
}

.bigPink_modern {
    color: var(--primary-pink);
    font-size: 3.6rem;
    font-weight: 500;
    line-height: 150%;
}

.modern__txt {
    margin-top: 40px;
    text-align: center;
    font-family: "BIZ UDPGothic";
    font-size: 2rem;
    line-height: 250%;
}

.bold {
    font-weight: 700;
}

.btn--modern {
    align-items: center;
    margin: 38px auto 0;
    padding: 20px 20px 20px 71px;
    width: fit-content;
    font-size: 2rem;
    z-index: 100;
    transition: 0.4s;
}

.btn--modern::before {
    width: 35px;
    height: 35px;
    left: 20px;
}

@media screen and (max-width: 1024px) {
    .hero__img01pc {
        width: 25%;
    }

    .hero__img02pc {
        width: 25%;
    }

    .modern__copy {
        font-size: 2.6rem;
    }

    .bigPink_modern {
        font-size: 3rem;
    }

    .modern__txt {
        font-size: 1.8rem;
        line-height: 220%;
    }

    .btn--modern {
        font-size: 1.8rem;
    }
}

@media screen and (max-width: 949px) {
    .section__modernBallet {
        padding: 120px 10.6% 85px;
        background-image: url(../images/hero-backSP.webp);
        background-position: 50% 45%;
        background-repeat: no-repeat;
        background-size: 700px 600px;
        z-index: 1;
    }

    .hero__img01sp {
        display: block;
        position: absolute;
        left: 0%;
        top: 8%;
        width: 240px;
        height: auto;
        z-index: -1;
    }

    .hero__img02sp {
        display: block;
        position: absolute;
        right: 0%;
        bottom: 0%;
        width: 250px;
        height: auto;
        z-index: -1;
    }

    .hero__img01pc,
    .hero__img02pc {
        display: none;
    }
}

@media screen and (max-width: 767px) {
    .section__modernBallet {
        padding: 120px 10.6% 85px;
        background-image: url(../images/hero-backSP.webp);
        background-position: 0 10px;
        background-repeat: no-repeat;
        background-size: 100% 500px;
        z-index: 1;
    }

    .hero__img01sp {
        left: -10%;
        top: 8%;
        width: 210px;
    }

    .hero__img02sp {
        right: -5%;
        bottom: 0%;
        width: 220px;
    }

    .modernBallet__txt {
        max-width: 430px;
        margin: 0 auto;
        width: fit-content;
    }

    .modern__copy {
        font-size: 2rem;
    }

    .bigPink_modern {
        font-size: 2.2rem;
    }

    .modern__txt {
        margin-top: 24px;
        font-size: 1.4rem;
        line-height: 180%;
    }

    .btn--modern {
        margin: 24px auto 0;
        padding: 0;
    }

    .btn--modern {
        margin: 38px auto 0;
        padding: 10px 10px 10px 40px;
        font-size: 1.4rem;
    }

    .btn--modern::before {
        width: 20px;
        height: 20px;
        left: 15px;
    }
}


/*===========================
teacherLesson
===========================*/

.section__teacherLesson {
    padding: 160px 0 120px;
    background-image: url(../images/pink-backPC.webp);
    background-position: 0 70%;
    background-repeat: no-repeat;
    background-size: 100% 100%;
    /* z-index: -1; */
    z-index: 0;
    position: relative;
}

.section__teacherLesson::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image: 
        url(../images/silhouette01.webp),
        url(../images/silhouette02.webp),
        url(../images/silhouette03.webp);
    background-position: 
        3% 0,
        95% 47%,
        5% 100%;
    background-repeat: no-repeat;
    background-size: 
        234px auto,
        263px auto,
        234px auto;
    z-index: 20;
    pointer-events: none;
}

.teacher__content {
    display: flex;
    max-width: 1160px;
    margin: 30px auto 0;
    width: fit-content;
    padding: 0 3%;
    align-items: center;
}

.teacher__img {
    display: block;
    width: 570px;
    height: auto;
    position: relative;
    z-index: 1;
}

.teacher__txt {
    padding: 90px 100px 70px;
    margin-left: -25px;
    background-image: url(../images/teacher-backPC.webp);
    background-position: center center;
    background-repeat: no-repeat;
    background-size: 106% 390px;
    z-index: 10;
}

.topics__copy {
    text-align: center;
    font-size: 2.2rem;
    font-weight: 500;
    line-height: 150%;
}

.bigPink_topics {
    color: var(--primary-pink);
    font-size: 2.6rem;
    font-weight: 500;
    line-height: 150%;
}

.topics__txt {
    margin-top: 25px;
    text-align: center;
    font-family: "BIZ UDPGothic";
    font-size: 1.6rem;
    font-weight: 400;
    line-height: 150%;
}

.btn--teacher {
    margin: 32px auto 0;
    text-align: center;
    width: fit-content;
    position: relative;
    z-index: 10;
}

.lesson__content {
    display: flex;
    flex-direction: row-reverse;
    max-width: 1160px;
    margin: 56px auto 0;
    width: fit-content;
    padding: 0 3%;
    align-items: center;
    position: relative;
}

.lesson__img {
    display: block;
    width: 570px;
    height: auto;
    position: relative;
    z-index: 1;
}

.lesson__txt {
    padding: 90px 100px 80px;
    margin-right: -25px;
    background-image: url(../images/lesson-backPC.webp);
    background-position: center center;
    background-repeat: no-repeat;
    background-size: 106% 420px;
    z-index: 10;
}

.btn--lesson {
    margin: 26px auto 0;
    width: fit-content;
    position: relative;
    z-index: 10;
}

@media screen and (max-width: 1024px) {
    .section__teacherLesson::before {
        background-position: 
            3% 0,
            95% 49%,
            5% 100%;
        background-size: 
            200px auto,
            200px auto,
            200px auto;
    }
}

@media screen and (max-width: 959px) {
    .teacher__img {
        max-width: 400px;
    }

    .teacher__txt {
        background-size: 100% 350px;
    }

    .topics__copy {
        font-size: 2rem;
    }

    .topics__txt {
        font-size: 1.4rem;
    }

    .lesson__img {
        max-width: 400px;
    }
}

@media screen and (max-width: 859px) {
    .section__teacherLesson {
        padding: 90px 5% 60px;
        background-image: url(../images/pink-backSP.webp);
        background-position: 0 70%;
        background-size: 100% 105%;
        z-index: 0;
        position: relative;
    }

    .section__teacherLesson::before {
        background-position: 
            0 0,
            100% 47%,
            0 99%;
        background-size: 
            120px auto,
            130px auto,
            120px auto;
        pointer-events: none;
    }

    .teacher__content,
    .lesson__content {
        display: block;
        margin: 0 auto;
        max-width: 100%;
        padding: 0;
    }

    .lesson__content {
        margin: 50px auto 0;
    }

    .teacher__img,
    .lesson__img {
        width: 100%;
        max-width: 500px;
        height: auto;
    }

    .teacher__txt {
        padding: 60px 9% 70px;
        background-image: url(../images/teacher-backSP.webp);
        background-position: 65% 0;
        background-repeat: no-repeat;
        background-size: 106% 320px;
        z-index: -1;
        margin-left: 0;
    }

    .topics__copy {
        font-size: 1.8rem;
    }

    .bigPink_topics {
        font-size: 2rem;
    }

    .topics__txt {
        margin-top: 15px;
        font-size: 1.4rem;
    }

    .btn--teacher {
        margin: 15px auto 0;
    }

    .lesson__txt {
        padding: 70px 9% 80px;
        background-image: url(../images/lesson-backSP.webp);
        background-position: 65% 0;
        background-repeat: no-repeat;
        background-size: 106% 350px;
        z-index: -1;
        margin-right: 0;
    }

    .btn--lesson {
        margin: 15px auto 0;
    }
}


/*===========================
recital
===========================*/

.section__recital {
    position: relative;
    max-width: 1800px;
    z-index: 0;
    margin: 0 auto 50px;
}

.section__recital::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image: url(../images/recital-pinkbackPC.webp);
    background-position: center center;
    background-repeat: no-repeat;
    background-size: 1300px auto;
    z-index: -10;
    pointer-events: none;
}

.marquee-containerTop {
    width: 100%;
    height: 350px;
    overflow: hidden;
    padding: 20px 0;

    mask-image: linear-gradient(
        to right,
        transparent 0%,
        black 5%,
        black 95%,
        transparent 100%
    );
    -webkit-mask-image: linear-gradient(
        to right,
        transparent 0%,
        black 5%,
        black 95%,
        transparent 100%
    );
}

.marquee-contentTop {
    display: flex;
    width: calc( (275px + 300px + 400px + 340px + 315px + 235px) * 2 );
    animation: scroll_marquee_top 40s linear infinite; /* アニメーションの設定。時間は速度調整。linearは等速。infiniteは無限。 */
}

.marquee-contentTop img {
    max-height: 250px;
    height: auto !important;
    flex-shrink: 0;
    align-self: flex-start;
}

@keyframes scroll_marquee_top {
    0% {
        transform: translateX(0); /* 最初は移動なし */
    }
    100% {
        /* 1セット目の画像の合計幅分（隙間も含めて）左に移動 */
        transform: translateX(calc(-1 * (275px + 300px + 400px + 340px + 315px + 235px + 203px))); 
    }
}

.image-1 {
    margin: 20px 55px 0 0;
}

.image-2 {
    margin: 100px 25px 0 0;
}

.image-3 {
    margin-right: 15px;
}

.image-4 {
    margin: 75px 28px 0 0;
}

.image-5 {
    margin: 38px 55px 0 0;
}

.image-6 {
    margin: 68px 25px 0 0;
}

.recital__content {
    padding: 100px 34% 100px;
    margin: 0 auto;
    width: fit-content;
    position: relative;
    background-image: url(../images/recital-backPC.webp);
    background-position: center 52%;
    background-repeat: no-repeat;
    background-size: 680px 400px;
}

/* .recital__content::after {
    content: '';
    position: absolute;
    inset: 0;
    background-image: url(../images/silhouette04.webp);
    background-position: 95% 85%;
    background-repeat: no-repeat;
    background-size: 234px auto;
    z-index: 10;
    pointer-events: none;
} */

.btn--recital {
    margin: 27px auto 0;
    width: fit-content;
    position: relative;
    z-index: 10;
}

.marquee-containerBottom {
    width: 100%;
    height: 350px;
    overflow: hidden;
    padding: 20px 0;

    mask-image: linear-gradient(
        to right,
        transparent 0%,
        black 5%,
        black 95%,
        transparent 100%
    );
    -webkit-mask-image: linear-gradient(
        to right,
        transparent 0%,
        black 5%,
        black 95%,
        transparent 100%
    );
}

.marquee-contentBottom {
    display: flex;
    width: calc( (380px + 310px + 290px + 360px + 240px + 300px) * 2 );
    animation: scroll_marquee_bottom 40s linear infinite; /* アニメーションの設定。時間は速度調整。linearは等速。infiniteは無限。 */
}

.marquee-contentBottom img {
    max-height: 250px;
    height: auto !important;
    flex-shrink: 0;
    align-self: flex-start;
}

@keyframes scroll_marquee_bottom {
    0% {
        transform: translateX(-150px);
    }
    100% {
        /* 1セット目の画像の合計幅分（隙間も含めて）左に移動 */
        transform: translateX(calc(-1 * (380px + 310px + 290px + 360px + 240px + 300px + 200px) - 150px)); 
    }
}

.image-7 {
    margin: 35px 20px 0 0;
}

.image-8 {
    margin: 80px 45px 0 0;
}

.image-9 {
    margin-right: 20px;
}

.image-10 {
    margin: 100px 55px 0 0;
}

.image-11 {
    margin: 35px 45px 0 0;
}

.image-12 {
    margin: 80px 15px 0 0;
}

@media screen and (max-width: 1024px) {
    /* .recital__content::after {
        background-position: 95% 85%;
        background-size: 200px auto;
    } */

    /* .section__recital::before {
        background-size: 90% auto;
    } */

    .marquee-containerTop,
    .marquee-containerBottom {
        height: 300px; 
        padding: 15px 0;
    }

    /* 画像を一斉に80%の大きさに縮小 */
    .marquee-contentTop img,
    .marquee-contentBottom img {
        max-height: 220px;
        width: auto !important;
        transform: scale(0.8); 
        transform-origin: left top;
    }

    /* 1024px時の個別隙間調整（PCの約8割にキュッと詰める） */
    .marquee-contentTop .image-1 { margin-right: 44px; }
    .marquee-contentTop .image-2 { margin-right: 20px; }
    .marquee-contentTop .image-3 { margin-right: 12px; }
    .marquee-contentTop .image-4 { margin-right: 22px; }
    .marquee-contentTop .image-5 { margin-right: 44px; }
    .marquee-contentTop .image-6 { margin-right: 20px; } /* 隙間合計：162px */

    .marquee-contentBottom .image-7  { margin-right: 16px; }
    .marquee-contentBottom .image-8  { margin-right: 36px; }
    .marquee-contentBottom .image-9  { margin-right: 16px; }
    .marquee-contentBottom .image-10 { margin-right: 44px; }
    .marquee-contentBottom .image-11 { margin-right: 36px; }
    .marquee-contentBottom .image-12 { margin-right: 12px; } /* 隙間合計：160px */

    /* 1024px専用アニメーション再計算 */
    @keyframes scroll_marquee_top {
        0% { transform: translateX(0); }
        100% {
            /* 画像幅は0.8倍、隙間合計は162px */
            transform: translateX(calc(-0.8 * (275px + 300px + 400px + 340px + 315px + 235px) - 162px));
        }
    }
    @keyframes scroll_marquee_bottom {
        0% { transform: translateX(-120px); } /* スタート位置も0.8倍の-120pxに */
        100% {
            /* 画像幅0.8倍、隙間合計160px、スタートのズレ120px */
            transform: translateX(calc(-0.8 * (380px + 310px + 290px + 360px + 240px + 300px) - 160px - 120px));
        }
    }

    .recital__content {
        padding: 60px 15% 60px; 
        background-size: 100% 100%; 
    }
}

@media screen and (max-width: 767px) {
    .section__recital::before {
        background-image: url(../images/recital-pinkbackSP.webp);
        background-size: 100% auto;
    }

    .recital__content {
        padding: 45px 14% 60px;
        background-image: url(../images/recital-backSP.webp);
        background-position: 65% 42%;
        background-size: 100% 330px;
    }

    .recital__content::before {
        background-image: 
            url(../images/recital-img05.webp),
            url(../images/recital-img02.webp),
            url(../images/recital-img03.webp),
            url(../images/recital-img04.webp);
        background-position: 
            5% 8%,
            95% 6%,
            5% 82%,
            95% 83%;
        background-size: 
            46% auto,
            46% auto,
            46% auto,
            46% auto;
        z-index: -1;
    }

    .marquee-containerTop,
    .marquee-containerBottom {
        height: 200px; 
        padding: 10px 0;
    }

    /* 画像を一斉に70%の大きさに縮小 */
    .marquee-contentTop img,
    .marquee-contentBottom img {
        max-height: 180px;
        transform: scale(0.7); 
        transform-origin: left top;
    }

    .marquee-contentTop .image-1 { margin: 10px -30px 0 0; } 
    .marquee-contentTop .image-2 { margin: 50px -35px 0 0; }
    .marquee-contentTop .image-3 { margin: 0 -50px 0 0; }
    .marquee-contentTop .image-4 { margin: 35px -40px 0 0; }
    .marquee-contentTop .image-5 { margin: 16px -35px 0 0; }
    .marquee-contentTop .image-6 { margin: 34px -25px 0 0; } /* 隙間合計：-215px */

    .marquee-contentBottom .image-7  { margin: 17px -45px 0 0; }
    .marquee-contentBottom .image-8  { margin: 40px -35px 0 0; }
    .marquee-contentBottom .image-9  { margin: 0 -35px 0 0; }
    .marquee-contentBottom .image-10 { margin: 50px -40px 0 0; }
    .marquee-contentBottom .image-11 { margin: 15px -25px 0 0; }
    .marquee-contentBottom .image-12 { margin: 40px -35px 0 0; } /* 隙間合計：-215px */
    
    /* ========================================================
       767px専用アニメーション再計算（隙間の新合計値：-215pxに統一）
       ======================================================== */
    @keyframes scroll_marquee_top {
        0% { transform: translateX(0); }
        100% {
            /* 隙間合計が -215px になったので修正 */
            transform: translateX(calc(-0.7 * (275px + 300px + 400px + 340px + 315px + 235px) - 215px));
        }
    }
    @keyframes scroll_marquee_bottom {
        0% { transform: translateX(-105px); }
        100% {
            /* 隙間合計 -215px、スタートのズレ -105px */
            transform: translateX(calc(-0.7 * (380px + 310px + 290px + 360px + 240px + 300px) - 215px - 105px));
        }
    }

    /* .recital__content::after {
        background-position: 100% 100%;
        background-size: 120px auto;
    } */

    .btn--recital {
        margin: 15px auto 0;
    }
}

/*===========================
news
===========================*/

.section__news {
    display: block;
    margin: 80px auto 0;
    width: 82%;
    max-width: 1160px;
    padding: 40px 50px 80px;
    background-color: #FFF;
}

.news__heading {
    display: flex;
    align-items: center;
}

.megaphone {
    width: 40px;
    height: auto;
}

.news__headingTxt {
    margin-left: 10px;
    font-size: 2.4rem;
    line-height: 150%;
}

.btn--news {
    margin-left: 50px;
    font-weight: 400;
}

.news__list {
    margin: 0 auto;
    width: 100%;
    max-width: 865px;
    align-items: center;
}

.news__content {
    display: flex;
    align-items: center;
    gap: 50px;
    margin: 45px auto 0;
    padding: 45px 20px 0;
    border-top: 1px solid #241D14;
    font-size: 1.6rem;
    font-weight: 500;
    line-height: 100%;
    box-sizing: border-box;
}

.news__content:first-of-type {
    border-top: none;
    padding-top: 20px;
}

.news__txt {
    margin-top: 0;
}

/* .news sp */
@media screen and (max-width: 767px) {
    .section__news {
        margin: 40px 3% 0;
        padding: 30px 8%;
        width: auto;
    }

    .megaphone {
        width: 35px;
    }

    .news__headingTxt {
        margin-left: 5px;
        font-size: 1.8rem;
    }

    .btn--news {
        margin-left: 20px;
    }

    .news__list {
        margin: 0 auto;
        width: fit-content;
    }

    .news__content {
        display: block;
        margin: 20px auto 0;
        padding: 20px 20px 0;
        font-size: 1.4rem;
    }

    .news__content:first-of-type {
        padding-top: 10px;
    }

    .news__txt {
        margin-top: 10px;
    }
}