@charset "utf-8";

/* =======================
common
========================== */
:root {
    --primary-white: #FDFDFD;
    --primary-orange: #CC947F;
    --primary-black: #4D4D4D;
    --contentWidth: 87.2%;
    --contentPadding: 6.4%;
}

html {
    font-size: 62.5%;
}

body {
    font-family: 'M PLUS Rounded 1c', sans-serif;
    font-style: normal;
    color: var(--primary-black, #4D4D4D);
    background-color: var(--primary-white, #FDFDFD);
    line-height: 1.5;
    font-size: 1.6rem;
}

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

p {
    letter-spacing: 0.256px;
}

.topic {
    color: var(--primary-orange, #CC947F);
    text-align: center;
    font-family: 'Barriecito', cursive;
    font-size: 2.4rem; /* スマートフォンやタブレットのデフォルトサイズ */
    line-height: 1;
    margin: 0 auto;
    padding-top: 25px;
}

.subtopic {
    color: #CC947F;
    text-align: center;
    font-size: 1.4rem;
}

/* PC表示時の調整 */
@media (min-width: 768px) {
    .topic {
        font-size: 5.0rem;
    }
}

.btn {
    border-radius: 10px;
    background: #B6E2C2;
    box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.25);
    display: flex;
    width: 195px;
    padding: 14px 20.5px;
    justify-content: center;
    align-items: center;
    flex-shrink: 0;
    color: #FFF;
    text-align: center;
    font-weight: 750;
    position: relative;
    transition: opacity 0.4s ease; /* アニメーションを滑らかに */
    margin: 0 auto;
    text-decoration: none; /* aタグのスタイル */
    gap: 25px;
}

.btn:hover {
    opacity: 0.7;
}

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

.header {
    width: 100%;
    height: 68px; /* モバイルのデフォルト高さ */
    display: flex; /* 子要素をFlexboxで配置 */
    align-items: center;
    justify-content: space-between; /* モバイルではロゴとハンバーガーを左右に配置 */
    background-image: url(../images/backimage.svg);
    background-size: cover;
    background-position: center;
    position: relative;
    padding: 0 var(--contentPadding);
    box-sizing: border-box;
    /* PCでのデフォルト値 */
    flex-direction: row; /* モバイルでは横並び */
}

/* ロゴとハンバーガーメニューボタンをまとめるコンテナ（モバイル用レイアウトの主要部分） */
.header__top-area {
    display: flex; /* ロゴとハンバーガーボタンを横並びにする */
    width: 100%; /* 親要素の幅いっぱいに広げる */
    align-items: center;
    justify-content: space-between; /* ロゴとボタンを左右に配置 */
}

/* ロゴの親要素のスタイル調整 */
.header__topic {
    width: auto;
    flex-shrink: 0;
    /* margin: 0 auto; */
}

/* ハンバーガーメニューボタンのスタイル */
.header__btn {
    display: block; /* img要素なのでblockにする */
    z-index: 90; /* ナビゲーションより手前に表示されるように調整 */
}

/* .nav初期表示 (モバイル用) */
.nav {
    background: rgba(253, 253, 253, 0.95);
    background-image: url(../images/backimage.svg); /* 背景画像のパスを指定 */
    background-repeat: no-repeat; /* 画像の繰り返しをしない */
    background-size: cover; /* 要素全体を覆うように拡大・縮小 */
    background-position: center bottom; /* 画像を下中央に配置 */
    width: 100%;
    height: 100vh;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 100;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    flex-shrink: 0;
    text-align: center;
    margin: 0 auto;
    transform: translateX(-100%); /* 初期状態は画面外に隠す */
    transition: transform 0.4s ease-out; /* アニメーションを滑らかに */
    display: flex; /* モバイル表示時はFlexコンテナ */
}

.nav__header {
    display: flex;
    width: 100%;
    height: 68px;
    box-sizing: border-box;
    justify-content: flex-start;
    align-items: center;
    padding: 0 var(--contentPadding);
    position: relative;
}

/* nav内のロゴ */
.nav__topic {
    width: auto;
    flex-shrink: 0;
    margin: 0;
}

/* モバイル用のナビゲーションリストのスタイル */
.nav__list {
    display: flex;
    width: 188px; /* モバイルでの幅 */
    flex-direction: column; /* モバイルでは縦並び */
    align-items: flex-start;
    gap: 20px;
    margin-top: 80px;
    padding: 0; /* ulのデフォルトパディングをリセット */
    list-style: none; /* リストマーカーを非表示 */
    font-weight: bolder;
    font-size: large;
}

/* PCサイズ (769px以上) でのナビゲーションスタイル */
@media screen and (min-width:769px) {
    /* ヘッダー全体のレイアウトをPC用に調整 */
    .header {
        padding: 0 4%; /* 例: 左右に4%のパディング。 */
        height: auto; /* コンテンツに合わせて高さを自動調整 */
        display: flex;
        flex-direction: column; /* これが重要！子要素（ロゴエリアとナビ）を縦に並べる */
        align-items: center; /* 子要素を水平方向の中央に揃える */
        justify-content: flex-start; /* 垂直方向は上揃え（必要であれば調整） */
        background-image: url(../images/backimage.svg);
        background-size: cover;
        background-position: center;
        position: relative;
    }

    /* ロゴとモバイル用ボタンのラッパー（PCではロゴだけを表示・中央寄せ） */
    .header__top-area {
        display: block; /* Flexboxの挙動を解除しブロック要素にする */
        width: 100%; /* 親要素に合わせて幅を設定 */
        max-width: 623px; /* ロゴの最大幅に合わせるか、調整 */
        margin: 0 auto; /* 水平方向の中央揃え */
        padding-top: 47px; /* ロゴの上部の余白（画像に合わせて調整） */
    }

    /* ロゴの親要素のスタイル調整 */
    .header__topic {
        width: auto;
        flex-shrink: 0;
        margin: 0 auto; /* ロゴ画像を水平方向の中央に */
    }

    /* ロゴ画像自体のスタイル調整 */
    .header__topic img {
        display: block;
        min-width: 375px;
        min-height: 68px;
        max-width: 623px;
        max-height: 65px;
        width: 100%;
        height: auto;
        margin: 0 auto; /* ロゴ画像を水平方向の中央に */
    }

    /* ハンバーガーメニューボタンを非表示 */
    .header__btn {
        display: none;
    }

    /* .nav（ナビゲーション全体）をPC向けに調整 */
    .nav {
        position: static; /* fixedからstaticに変更 */
        width: auto; /* コンテンツに合わせて幅を自動調整 */
        height: auto; /* 高さを自動調整 */
        background: none; /* 背景をなくす */    
        background-image: url(../images/nav_back.svg); /* PC用にも背景画像を適用 */
        background-repeat: no-repeat;
        background-size: cover;
        background-position: center bottom;      
        transform: none; /* 変形をリセット */
        transition: none; /* アニメーションをなくす */
        z-index: auto; /* z-indexをリセット */
        display: block; /* ブロック要素として振る舞う */
        margin-top: 20px; /* ロゴとナビゲーションの間の余白 */
        padding-bottom: 40px; /* ヘッダーの下部の余白 */
    }

    /* ナビゲーション内のヘッダー（モバイル用）はPCでは非表示 */
    .nav__header {
        display: none;
    }

    /* PC用のグローバルナビゲーションのリストスタイル */
    .nav__list {
        margin-top: 0;
        display: flex; /* これが重要：子要素を横並びにします */
        flex-direction: row; /* これも重要：横並びの方向を指定 */
        gap: 40px; /* メニュー間のスペース */
        align-items: center; /* 垂直方向の中央揃え */
        justify-content: center; /* ★この行が重要★：メニュー項目を水平中央に並べる */
        font-size: 1.6rem;
        font-weight: 500;
        line-height: normal;
        width: auto; /* 幅を自動調整 */
        padding: 0; /* リストのデフォルトパディングをリセット */
        list-style: none; /* リストのマーカーを非表示にする */
    }

    .nav__list li {
        margin: 0; /* モバイル用の余白をリセット */
    }

    .nav__list a {
        color: var(--primary-black); /* PCでのリンク色 */
        text-decoration: none; /* 下線をなくす */
        white-space: nowrap; /* テキストの折り返しを防ぐ */
        transition: opacity 0.3s; /* ホバーアニメーション */
    }

    .nav__list a:hover {
        opacity: 0.7;
    }

    .nav__list a{
        text-decoration: none;
        color: #4D4D4D;
        font-size: 1.4rem;
        transition: color 0.5s;
    }
    .nav__list a:hover {
        color: #CC947F;
    }






    /* ナビゲーションのハイフンはPCでは非表示にする */
    .nav__list span {
        display: none;
    }
}

/* .nav.active表示 (モバイル用) */
.nav.active {
    transform: translateX(0);
}

/* ナビゲーションメニューのそれぞれの「ー」の色を変更 (モバイル用) */
.nav__list .hyphen1 {
    color: #C2B6E2;
}

.nav__list .hyphen2 {
    color: #CC947F;
}

.nav__list .hyphen3 {
    color: #B6E2C2;
}

.nav__list .hyphen4 {
    color: #F4AEB0;
}

/* クローズボタンのスタイル */
.nav__close-btn {
    position: absolute;
    top: 22px;
    right: 6.5%;
    width: 24px;
    height: 24px;
    cursor: pointer;
    z-index: 150;
    /* margin-right: 25px; */
}

/* PC表示時はクローズボタンを非表示にする */
@media screen and (min-width: 769px) {
    .nav__close-btn {
        display: none;
    }
}


/* =======================
contact
========================== */

.contact_container{
        background-repeat: no-repeat; 
        background-size: cover;
        background-position: center bottom; 
        padding-bottom: 5px; /* 必要に応じて調整 */
}

.contact-bottom-image-container {
    width: 100%;
    text-align: center; /* 画像を中央に配置 */
    padding-top: 30px; /* 上部との余白 */
    padding-bottom: 50px; /* 下部との余白 */
    background-color: rgba(253, 229, 221, 0.4); /* 必要であれば背景色も */
}

.contact-bottom-image-container img {
    max-width: 100%; /* 画像が親要素を超えないように */
    height: auto;
    display: block; /* 中央寄せのためにブロック要素にする */
    margin: 0 auto; /* 中央寄せ */
}

/* PC表示時の調整 */
@media screen and (min-width: 769px) {
    .contact-bottom-image-container {
        /* PCでの調整があればここに追加 */
    }
}


/* =======================
article__footer (contact)
========================== */
.article__footer {
    background-color: #F7F4FF;
    border-radius: 10px; 
    max-width: 300px; /* ボックスの最大幅 (デザインに合わせて調整) */
    margin: 0 auto; /* ページ内での中央寄せと上下の余白 */
    padding: 25px var(--contentPadding); /* ボックスの内側の上下左右の余白 */
    box-sizing: border-box; /* パディングを含めて幅を計算 */
    display: flex;
    flex-direction: column; /* 縦方向に並べる */
    align-items: center; /* 水平方向の中央揃え */
    gap: 20px; /* h3、p、メインのdiv間の余白 */
    text-align: left; /* h3, p などのインライン要素のテキストを中央寄せ */
}

.footer ul li a{
    text-decoration: none;
    color: #4D4D4D;
    font-size: 1.4rem;
    transition: color 0.5s;
}


/* .article__footer::after{
    display: block;
    content: '';
    background-image: url(../images/backimage.svg);
} */


.article__footer h3 {
    margin-bottom: 0; /* 親のgapで余白を管理 */
    padding-top: 0; /* ボックス上部との余白はpaddingで調整 */
    font-size: 2.4rem; /* h3のサイズが設定されていなければ */
    text-align: center;
    color: #4D4D4D
}

.article__footer p {
    margin-bottom: 0; /* 親のgapで余白を管理 */
    max-width: 500px; /* テキストの最大幅を設定して読みやすくする */
}

/* お問い合わせコンテンツのコンテナ（元のdiv - p, btn_contact, social-icons-container を含む） */
.article__footer > div {
    background-color: transparent; /* 背景色を透明に */
    box-shadow: none; /* 影をなくす */
    padding: 0; /* 親でパディングを設定するので不要 */
    margin: 0; /* 親でgapを設定するので不要 */
    
    display: flex;
    flex-direction: column; /* p要素、メールボタン、ソーシャルアイコン行を縦に並べる */
    align-items: center; /* これらの要素を中央揃え */
    gap: 20px; /* p要素とメールボタン、メールボタンとアイコン行の間のスペース */
    width: 100%; /* 親の幅に合わせる */
}

.contact-carea-wrapper{
    background-image: url(../images/contact_back_sp.svg);
    background-repeat: no-repeat; 
    background-size: cover;
    background-position: center bottom; 
}

/* PC表示時の調整 */
@media screen and (min-width: 769px) {
    .contact-carea-wrapper{
        background-image: url(../images/contack_back_PC.svg);
        background-repeat: no-repeat; 
        background-size: cover;
        background-position: center bottom; 
    }

}




/* メールボタンのコンテナ (btn_contact) */
.btn_contact {
    width: 100%; /* 親要素の幅いっぱいに広げる */
    max-width: 200px; /* メールボタンの最大幅 (画像に合わせて調整) */
    margin: 0; /* 親Flexコンテナでgapを設定するのでmarginは不要に */   
}


.social-icons-container {
    display: flex; /* 子要素（アイコン）をFlexboxで配置 */
    justify-content: center; /* アイコンを水平方向の中央に揃える */
    align-items: center; /* 垂直方向の中央揃え */
    gap: 20px; /* アイコン間の横方向のスペース (画像参照) */
    width: 100%; /* 親の幅に合わせる */
    max-width: 196px; /* アイコン列全体の最大幅 (画像参照に合わせて調整) */
    max-height: 50px;
}



/* LINEとInstagramの個々のアイコンコンテナ */
.btn-line-container,
.btn-instagram-container {
    margin: 0; /* 親Flexコンテナでgapを設定するのでmarginは不要に */    
    height: auto; /* アスペクト比維持 */
    flex-shrink: 0; /* 小さくなっても縮まないようにする */
}


/* mail-buttonのスタイルは変更なし */
.mail-button {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    border-radius: 10px;
    background: #B8ADE6;
    box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.25);
    padding: 14px 20.5px;
    color: #FFF;
    text-align: center;
    font-weight: 750;
    text-decoration: none;
    width: 100%; /* 親のmax-widthに収まるように */
    box-sizing: border-box;
}


.mail-button{
  transition-duration: .4s;
}
.mail-button:hover {
  transform: scale(1.1);
}

.social-icons-containera a {
    transition-duration: .4s;
}
.social-icons-container a:hover {
  transform: scale(1.1);
}


.btn-line-container a,
.btn-instagram-container a {
    display: block;
    width: 100%;
    margin: 0 auto;
    max-width: 200px;
}

.btn-line-container img{
    width: 130px;
    height: 44px;
    flex-shrink: 0;
}

.btn-instagram-container img {
    width: 50px;
    height: 50px;
    flex-shrink: 0;
}



/* PC表示時の調整 (例: 769px以上) */
@media screen and (min-width: 769px) {
    .article__footer {
        padding: 50px 30px;
        max-width: 800px; /* PCでのボックスの最大幅を広げる */
    }
    
    .article__footer h3 {
        padding-top: 0;
        margin-bottom: 20px;
    }

    /* PCでのメールボタンの最大幅 */
    .btn_contact {
        max-width: 250px;
    }

    /* PCでのアイコン列の最大幅とアイコンサイズ */
    .social-icons-container {
        gap: 30px; /* PCでのアイコン間のスペース */
        max-width: 200px;
    }
    .btn-line-container,
    .btn-instagram-container {
        /* width: 70px; PCでのアイコンの固定幅（デザインに合わせて調整） */
    }

    
}





/* =======================
footer
========================== */
.footer {
    padding: 40px var(--contentPadding);
    text-align: center;
    color: #4D4D4D;
    background-image: url(../images/fotter_sp.svg); 
    background-repeat: no-repeat;
    background-size: cover; 
    background-position: center; 
}



  



.footer_logo {
    width: 60%;
    margin: 0 auto 20px;
}

.footer ul {
    list-style: none;
    padding: 0;
    margin-bottom: 20px;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0px 30px;


    
}

/* .footer ul li a {
    text-decoration: none;
    color: #4D4D4D;
    font-size: 1.4rem;
    transition: opacity 0.3s ease;
}

.footer ul li a:hover {
    opacity: 0.7;
} */


.footer ul li a{
    text-decoration: none;
    color: #4D4D4D;
    font-size: 1.4rem;
    transition: color 0.5s;
}
.footer ul li a:hover {
    color:#CC947F;
}




.copy {
    font-size: 1.2rem;
    color: #4D4D4D;
}



@media screen and (min-width: 769px) {
    .footer {
        padding: 40px var(--contentPadding);
        text-align: center;
        color: #4D4D4D;
        background-image: url(../images/fotter_pc.svg); 
        background-repeat: no-repeat; 
        background-size: cover;
        background-position: center bottom; 
    
    }

    .footer img{
        height: auto;
        margin: 0 auto;
        max-width: 60%;
    }

    .footer_logo {
        width: 50%;
        margin: 0 auto 20px;
    }


    .nav__item{
        margin-top: 0;
        display: flex;
        flex-direction: row;
        gap: 70px;
        align-items: center;
        justify-content: center;
        font-size: 1.6rem;
        font-weight: 500;
        line-height: normal;
        width: auto;
        padding: 0;
        list-style: none;
    }
    
    .footer ul {
    list-style: none;
    padding: 0;
    margin: 20px;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 60px 60px;



    
}



}


/* loading */
.loading {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  z-index: 10;
  background-color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  animation: fadeOut 1.5s 2.5s forwards;
}

@keyframes fadeOut {
  0% {
    opacity: 1;
  }

  100% {
    opacity: 0;
    visibility: hidden;
  }
}

.loading__logo {
  opacity: 0;
  animation: logo_fade 2s 0.5s forwards;
  width: 700px;
}

@keyframes logo_fade {
  0% {
    opacity: 0;
    transform: translateY(20px);
  }

  60% {
    opacity: 1;
    transform: translateY(0);
  }

  100% {
    opacity: 0;
  }
}
