/*============================================================
# 共通スタイル
============================================================ */


/*--------------------------------------------------
    ベース：PCでは 1rem = 10px 設計
--------------------------------------------------*/
html {
    font-size: 62.5%; /* 16px × 62.5% = 10px */
	height: 100%;
}


/*--------------------------------------------------
    レスポンシブ対応：820px以下では画面幅に応じて可変
    750px時に1rem = 10pxになるように調整
--------------------------------------------------*/
@media screen and (max-width: 820px) {
    html {
        font-size: calc(100vw / 75);
    }
}

body {
    font-family: "Zen Kaku Gothic New", sans-serif;
    font-weight: 400;
	font-size: 1.6rem;
	line-height: 1.5;
	color: #333;
}

a {
	display: inline-block;
	text-decoration: none;
	cursor: pointer;
	transition: opacity 0.3s;
}

a:hover {
	opacity: 0.7;
}

/* 599px以下は、ホバーアニメーションを無効化 */
@media screen and (max-width: 599px) {
    a:hover {
        opacity: unset;
    }
}

/* デフォルト（PC）では電話リンクを無効化 */
a[href^="tel:"] {
    pointer-events: none;
}

/* 599px以下は、電話リンクを有効化 */
@media screen and (max-width: 599px) {
    a[href^="tel:"] {
        pointer-events: auto;
    }
}

span {
	display: inline-block;
}

img {
	display: block;
	width: 100%;
	height: auto;
}

li {
	list-style: none;
}

.sp-only {
    display: none;
}

.container {
    max-width: 75rem;
    margin: 0 auto;
    background-color: #fff;
    box-shadow: 0 0 1rem rgba(0, 0, 0, 0.1);
}

@media screen and (max-width: 820px) {
    .container {
        max-width: 100%;
    }
}

@media screen and (max-width: 599px) {
    .sp-only {
        display: inline;
    }

    .pc-only {
        display: none;
    }
}

/* 画面では非表示だが、スクリーンリーダーでは読み取り可能 */
.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
}

/* ボタン
---------------------------------------------*/
.btn {
    border-radius: 999px;
    padding: 1.2rem 2.8rem;
    font-size: 2rem;
    font-weight: 700;
    line-height: 1;
    color: #fff;
    border: 0.2rem solid #f2a218;
    background: linear-gradient(-60deg,
    #ffab1a 0%,
    #ffb940 50%,
    #ffab1a 100%
    );
    position: relative;
    text-align: center;
    letter-spacing: 0.05em;
}

.btn__icon {
    width: 1rem;
    height: 1.5rem;
    position: absolute;
    transform: translateY(-50%);
    top: 50%;
    right: 4%;
}

.font-en {
    font-family: "Roboto", sans-serif;
}

@media screen and (max-width: 599px) {
    .btn {
        padding: 1.3rem 3.5rem 1.6rem;
        font-size: 2.8rem;
    }

    .btn__icon {
        width: 1.4rem;
        height: 2.1rem;
    }
}



/*============================================================
# 各セクションのスタイル
============================================================ */

/* ヘッダー
---------------------------------------------*/
.header {
    height: 8rem;
}

.header__inner {
    height: inherit;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0 2rem;
}

.header__logo {
    width: 26.3rem;
    height: 5.4rem;
}

.header-logo img {
    aspect-ratio: 263/54;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

@media screen and (max-width: 599px) {
    .header {
        height: 11rem;
    }

    .header__inner {
        padding: 0 2rem;
    }

    .header__logo {
        width: 32rem;
    }
}



/* FV
---------------------------------------------*/
.fv__image img {
    aspect-ratio: 750/940;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

@media screen and (max-width: 599px) {
    .fv__image {
        width: 100%;
        height: 100vh;
    }

    .fv__image img {
        aspect-ratio: auto;
    }
}



/* 悩みエリア
---------------------------------------------*/
.problem {
    background: linear-gradient(135deg,
    #f5ffff 0%,
    #edfbff 100%
    );
}

.problem__inner {
    padding: 20rem 4rem 15rem;
}

.problem__title {
    width: 57rem;
    height: auto;
    margin: 0 auto 8.5rem;
}

.problem__title img {
    aspect-ratio: 570/107;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.problem__image-01 {
    margin-left: -4rem;
    margin-right: -4rem;
    margin-bottom: 4.6rem;
}

.problem__image-01 img {
    aspect-ratio: 750/956;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.problem__image-02 {
    display: block;
    margin-bottom: 9rem;
    filter: drop-shadow(0.3rem 0.3rem 0.5rem rgba(0, 0, 0, 0.1));
}

.problem__image-02 img {
    aspect-ratio: 670/430;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.problem__text-wrap {
    text-align: center;
    font-size: 2.4rem;
}

.color {
    color: #2590fa;
}

.weight {
    font-weight: 700;
}

.letter-spacing {
    letter-spacing: -0.4em;
}

@media screen and (max-width: 599px) {
    .problem__title {
        width: 65.6rem;
    }

    .problem__text-wrap {
        text-align: center;
        font-size: 2.8rem;
        font-weight: 500;
    }
}



/* 解決策（商品紹介）エリア
---------------------------------------------*/
.solution {
    margin-top: -6rem;
}

.solution__image img {
    aspect-ratio: 750/1825;
    object-fit: cover;
    width: 100%;
    height: 100%;
}



/* 特徴エリア
---------------------------------------------*/
.feature {
    background: linear-gradient(135deg,
    #f7ffff 0%,
    #edfbff 100%
    );
    margin-top: -3rem;
}

.feature__inner {
    padding: 21rem 4rem 20rem;
}

.feature__title {
    width: 34.6rem;
    height: auto;
    margin: 0 auto 14rem;
}

.feature__title img {
    aspect-ratio: 346/109;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.feature__item-01,
.feature__item-02,
.feature__item-03 {
    filter: drop-shadow(0.3rem 0.3rem 0.5rem rgba(0, 0, 0, 0.1));
    position: relative;
}

.feature__item-01,
.feature__item-02 {
    margin-bottom: 13.8rem;
}

.feature__image-01 img {
    aspect-ratio: 670/932;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.feature__image-02 img {
    aspect-ratio: 670/844;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.feature__image-03 img {
    aspect-ratio: 670/818;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.feature__item-01::before,
.feature__item-02::before,
.feature__item-03::before {
    content: "";
    background: url(../images/feature-01-number.svg) center / cover no-repeat;
    width: 12.2rem;
    height: 9.1rem;
    position: absolute;
    top: -4.2rem;
    left: 1.9rem;
}

.feature__item-02::before {
    background: url(../images/feature-02-number.svg) center / cover no-repeat;
    width: 13.2rem;
    left: 2.2rem;
}

.feature__item-03::before {
    background: url(../images/feature-03-number.svg) center / cover no-repeat;
    width: 13.2rem;
    left: 2.2rem;
}

@media screen and (max-width: 599px) {
    .feature__title {
        width: 39.8rem;
    }
}



/* 講師紹介エリア
---------------------------------------------*/
.teacher__inner {
    padding: 20rem 4rem;
}

.teacher__title {
    width: 37.1rem;
    height: auto;
    margin: 0 auto 13rem;
}

.teacher__title img {
    aspect-ratio: 371/113;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.teacher__content-01 {
    margin-bottom: 20rem;
}

.teacher__sub-title-01 {
    width: 35rem;
    height: auto;
    margin: 0 auto 7rem;
    filter: drop-shadow(0.3rem 0.3rem 0.5rem rgba(0, 0, 0, 0.1));
}

.teacher__sub-title-01 img {
    aspect-ratio: 350/77;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.teacher__items {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 5rem 2rem;
}

.teacher__item {
    filter: drop-shadow(0.3rem 0.3rem 0.5rem rgba(0, 0, 0, 0.1));
}

.teacher__image img {
    aspect-ratio: 325/400;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.teacher__sub-title-02 {
    width: 31rem;
    height: auto;
    margin: 0 auto 6rem;
    filter: drop-shadow(0.3rem 0.3rem 0.5rem rgba(0, 0, 0, 0.1));
}

.teacher__sub-title-02 img {
    aspect-ratio: 310/77;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.teacher__items-02 {
    margin-bottom: 3rem;
}

.teacher__item-02:not(:last-child) {
    margin-bottom: 3rem;
}

.teacher__image-02 {
    filter: drop-shadow(0.3rem 0.3rem 0.5rem rgba(0, 0, 0, 0.1));
}

.teacher__image-02 img {
    aspect-ratio: 670/230;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.teacher__text {
    font-size: 2.4rem;
    text-align: right;
}

@media screen and (max-width: 599px) {
    .teacher__items {
        grid-template-columns: repeat(1, 1fr);
        gap: 6rem;
    }

    .teacher__title {
        width: 42.7rem;
    }

    .teacher__sub-title-01 {
        width: 50.4rem;
    }

    .teacher__image img {
        aspect-ratio: 325/380;
    }

    .teacher__sub-title-02 {
        width: 44.6rem;
    }

    .teacher__items-02 {
        margin-bottom: 6rem;
    }

    .teacher__item-02:not(:last-child) {
        margin-bottom: 6rem;
    }

    .teacher__image-02 img {
        aspect-ratio: 325/310;
    }

    .teacher__text {
        font-size: 3.2rem;
        text-align: center;
    }

}



/* 料金プラン
---------------------------------------------*/
.price {
    background: linear-gradient(135deg,
    #f7ffff 0%,
    #edfbff 100%
    );
}

.price__inner {
    padding: 20rem 4rem;
}

.price__text1 {
    font-size: 2.4rem;
    text-align: center;
    margin-bottom: 6rem;
}

.price__title {
    width: 41.3rem;
    height: auto;
    margin: 0 auto 10rem;
}

.price__title img {
    aspect-ratio: 413/108;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.price__content {
    background-color: #fff;
    padding: 2rem 3rem 8rem;
    border-radius: 3rem;
    filter: drop-shadow(0.3rem 0.3rem 0.5rem rgba(0, 0, 0, 0.1));
}

.price__image-01 {
    margin-bottom: 3rem;
}

.price__image-01 img {
    aspect-ratio: 610/252;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.price__text2 {
    font-size: 1.8rem;
    text-align: center;
    margin-bottom: 5rem;
}

.price__image-02 img {
    aspect-ratio: 610/181;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

@media screen and (max-width: 599px) {
    .price__title {
        width: 47.5rem;
    }

    .price__text1 {
        font-size: 2.8rem;
        font-weight: 500;
    }
    
    .price__text2 {
        font-size: 2.4rem;
        font-weight: 500;
    }
}



/* お客様の声
---------------------------------------------*/
.voice__inner {
    padding: 20rem 4rem;
}

.voice__title {
    width: 46.6rem;
    height: auto;
    margin: 0 auto 10rem;
}

.voice__title img {
    aspect-ratio: 466/125;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.voice__items {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 2rem;
    margin-bottom: 10rem;
}

.voice__item {
    filter: drop-shadow(0.3rem 0.3rem 0.5rem rgba(0, 0, 0, 0.1));
}

.voice__item img {
    aspect-ratio: 325/266;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.btn-container {
    text-align: center;
}

.micro-copy {
    font-size: 1.8rem;
    font-weight: 500;
    margin-bottom: 0.5rem;
    display: flex;
    justify-content: center;
    align-items: center;
    letter-spacing: 0.05em;
}

.micro-copy::before {
    content: "";
    background: url(../images/symbol-l.png);
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center;
    width: 1.2rem;
    height: 1.8rem;
    margin-right: 0.5rem;
}

.micro-copy::after {
    content: "";
    background: url(../images/symbol-r.png);
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center;
    width: 1.2rem;
    height: 1.8rem;
    margin-left: 0.5rem;
}

.btn--large {
    min-width: 43rem;
    padding: 1.5rem 2.8rem 1.9rem;
    font-size: 3.2rem;
}

.btn__icon--large {
    width: 1.5rem;
    height: 2.3rem;
    right: 5%;
}

@media screen and (max-width: 599px) {
    .voice__title {
        width: 53.6rem;
    }

    .voice__items {
        grid-template-columns: repeat(1, 1fr);
        gap: 6rem;
    }

    .micro-copy {
        font-size: 2.6rem;
    }

    .micro-copy::before,
    .micro-copy::after {
        width: 1.8rem;
        height: 2.7rem;
    }

    .btn--large {
        width: 80%;
        padding: 3rem;
        font-size: 4rem;
    }

    .btn__icon--large {
        width: 2.25rem;
        height: 3.45rem;
    }
}


/* FAQ
---------------------------------------------*/
.faq {
    background: linear-gradient(135deg,
    #f7ffff 0%,
    #edfbff 100%
    );
}

.faq__inner {
    padding: 20rem 4rem;
}

.faq__title {
    width: 30rem;
    height: auto;
    margin: 0 auto 10rem;
}

.faq-title img {
    aspect-ratio: 300/58;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.faq__items {
    background-color: #fff;
    padding: 4rem 3rem;
    border-radius: 2rem;
    border: 0.3rem solid #19c4f2;
}

.faq__item {
    padding-top: 3rem;
    padding-bottom: 3rem;
    position: relative;
}

.faq__item:first-child {
    padding-top: unset;
}

.faq__item:last-child {
    padding-bottom: unset;
}

.faq__item:not(:first-child)::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 0.2rem;
    background: url(../images/line.png);
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center;
}

.faq__q {
    display: flex;
    align-items: center;
    position: relative;
    cursor: pointer;
}

.faq__q img,
.faq__a img {
    width: 5rem;
    height: 5rem;
    margin-right: 1.5rem;
}

.faq__q::before,
.faq__q::after {
    content: "";
    width: 2rem;
    height: 0.3rem;
    border-radius: 2rem;
    background-color: #999;
    position: absolute;
    transform: translate(-50%, -50%);
    transition: opacity 0.2s ease;
    top: 50%;
    right: 0;
}

.faq__q::after {
    transform: translate(-50%, -50%) rotate(90deg);
}

.faq__q.is-active::after {
    opacity: 0;
}

.faq__q-header {
    color: #2590fa;
    font-size: 2.8rem;
    font-weight: 500;
}

.faq__a {
    display: flex;
    overflow: hidden;
}

.faq__a-text-container {
    padding-right: 0.5rem;
}

.faq__a-header {
    color: #17b9e6;
    font-size: 2.8rem;
    font-weight: 500;
    letter-spacing: -0.04em;
    margin-bottom: 1rem;
}

.faq__a-text {
    font-size: 1.8rem;
    margin-bottom: 3rem;
    text-align: justify;
}

.faq__q-header span,
.faq__a-header span {
    letter-spacing: 0.1em;
}

.faq__a-text:last-child {
    margin-bottom: 0;
}

.faq__a-text-block .faq__a-text {
    margin-bottom: 0;
    padding-left: 1em; /* 余白を追加して全体を右にずらす */
    text-indent: -1em; /* 1行目だけ左へ戻す */
}

.faq__a-text-block {
    margin-bottom: 3rem;
}

@media screen and (max-width: 599px) {
    .faq__title {
        width: 34.5rem;
    }

    .faq__q-header {
        font-size: 3.2rem;
    }

    .faq__a-header {
        font-size: 3.2rem;
    }

    .faq__a-text {
        font-size: 2.6rem;
        font-weight: 500;
    }
}



/* CTA
---------------------------------------------*/
.cta__inner {
    padding: 20rem 3rem 15rem;
}

.cta__title {
    width: 46rem;
    height: auto;
    margin: 0 auto 10rem;
}

.cta__title img {
    aspect-ratio: 460/109;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.cta__image {
    filter: drop-shadow(0.3rem 0.3rem 0.5rem rgba(0, 0, 0, 0.1));
}

.cta__image img {
    aspect-ratio: 690/346;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

@media screen and (max-width: 599px) {
    .cta__title {
        width: 52.9rem;
    }
}



/* フッター
---------------------------------------------*/
.footer__container {
    background-color: #e5f9ff;
    text-align: center;
    padding: 30px 3rem;
    height: 100%;
    position: relative;
}

.footer__container::before {
    content: "";
    background: url(../images/footer.svg);
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center;
    width: 100%;
    height: 7rem;
    position: absolute;
    top: -7rem;
    left: 0;
}

.footer__logo {
    width: 31.3rem;
    min-width: 240px;
    height: auto;
    margin: 0 auto 2rem;
}

.footer__logo img {
    aspect-ratio: 313/70;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.footer__info {
    width: fit-content;
    margin: 0 auto 4rem;
}

.footer__row {
    display: flex;
    font-size: clamp(12px, 1.87vw, 14px);
}

.footer__row dt {
    font-weight: 400;
    width: 7.5rem;
    text-align: left;
    position: relative;
}

.footer__row dt::after {
    content: "：";
    position: absolute;
    right: 0.5rem;
}

.footer__links {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: clamp(10px, 1.6vw, 12px);
    margin-bottom: 2rem;
}

.footer__link {
    padding: 0 1.5rem;
    position: relative;
}

.footer__separator {
    display: inline-block;
    width: 1px;
    height: 1.5rem;
    background-color: #333;
}

.footer__copyright {
    font-size: clamp(10px, 1.6vw, 12px);
}

@media screen and (max-width: 599px) {
    .footer__row dt {
        width: 65px;
    }

    .footer__separator {
        height: 2rem;
    }
}

@media screen and (max-width: 374px) {
    .footer__container {
        padding: 8vw 4vw;
    }

    .footer__logo {
        min-width: 64vw;
    }

    .footer__row {
        font-size: 3.2vw;
    }

    .footer__row dt {
        width: 17.3vw;
    }

    .footer__links {
        font-size: 2.67vw;
    }

    .footer__copyright {
        font-size: 2.67vw;
    }
}



/* TOPに戻るボタン
---------------------------------------------*/
.to-top {
    width: 5rem;
    min-width: 40px;
    height: auto;
    position: fixed;
    bottom: 2rem;
    right: calc(50% - 35.5rem);
    z-index: 100;
}

.to-top img {
    aspect-ratio: 50/50;
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.to-top:hover {
    opacity: 0.7;
}