/*basis*/
body {
    font-family: "Noto Sans JP", sans-serif;
    font-optical-sizing: auto;
    font-style: normal;
}

.tsukuardgothic {
    font-family: "fot-tsukuardgothic-std", sans-serif;
    font-style: normal;
}

p,
a,
h1,
h2,
h3,
h4,
h5,
h6,
summary,
td {
    color: #2c3e50;
    letter-spacing: 0.15rem;
}

.cs-0 {
    letter-spacing: 0rem;
}

hr {
    height: 2px;
    background-color: #8087ff;
    border: none;
    opacity: 1;
}

.btn {
    border-radius: 3rem;
}

/*addition*/

/* ＝＝＝ ヘッダー（上部固定） ＝＝＝ */
.header {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    padding: 15px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    z-index: 300;
    /* メニューより手前に表示 */
}

/* タイトル（初期状態は透明） */
.header-title {
    font-size: 16px;
    color: #7b85ff;
    font-weight: bold;
    letter-spacing: 1px;
    opacity: 0;
    transition: opacity 0.3s ease;
    cursor: pointer;
    /* 【追加】マウスを乗せた時に指マークにする */
}

/* メニュー展開時のタイトル（表示する） */
.header.is-open .header-title {
    opacity: 1;
}

/* ＝＝＝ ハンバーガーボタン ＝＝＝ */
.hamburger-btn {
    position: relative;
    width: 50px;
    height: 50px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 50%;
    cursor: pointer;
    outline: none;
    transition: background-color 0.3s, border 0.3s;
    background-color: #7b85ff;
    border: 1px solid #333;
}

/* ハンバーガーの3本線 */
.hamburger-btn span {
    position: absolute;
    left: 10px;
    width: 28px;
    height: 2px;
    background-color: #333;
    /* 初期状態の線の色 */
    transition: all 0.3s ease;
    background-color: #fff;
}

.hamburger-btn span:nth-child(1) {
    top: 16px;
}

.hamburger-btn span:nth-child(2) {
    top: 23px;
}

.hamburger-btn span:nth-child(3) {
    top: 30px;
}

/* 展開時のボタンデザイン（紫背景、黒枠、白の「×」） */
.header.is-open .hamburger-btn span {
    width: 22px;
    left: 13px;
}

/* 1本目と3本目をクロスさせて「×」を作る */
.header.is-open .hamburger-btn span:nth-child(1) {
    top: 23px;
    transform: rotate(45deg);
}

/* 2本目は透明にして消す */
.header.is-open .hamburger-btn span:nth-child(2) {
    opacity: 0;
}

.header.is-open .hamburger-btn span:nth-child(3) {
    top: 23px;
    transform: rotate(-45deg);
}

/* ＝＝＝ メニューオーバーレイ（展開される領域） ＝＝＝ */
.menu-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    background-color: #def5ee;
    /* ミントグリーンの背景 */
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    /* 初期状態は非表示 */
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.4s ease, visibility 0.4s ease;
    z-index: 200;
}

/* 展開時 */
.menu-overlay.is-open {
    opacity: 1;
    visibility: visible;
}

/* メニュー内包コンテナ */
.menu-inner {
    width: 100%;
    max-width: 320px;
    text-align: center;
    margin-top: 40px;
    /* ヘッダー分の余白 */
}

.menu-list {
    list-style: none;
    margin-bottom: 40px;
    padding-left: 0;
}

/* リストアイテムの下線 */
.menu-list li {
    border-bottom: 1px solid #a6a2ff;
}

.menu-list a {
    display: block;
    padding: 20px 0;
    color: #2d3d46;
    text-decoration: none;
    font-weight: bold;
    letter-spacing: 1px;
}

/* ＝＝＝ お問い合わせボタン ＝＝＝ */
.contact-btn {
    display: inline-block;
    width: 100%;
    background-color: #7b85ff;
    color: #fff;
    padding: 16px 0;
    border-radius: 30px;
    text-decoration: none;
    font-weight: bold;
    font-size: 16px;
    letter-spacing: 2px;
    transition: opacity 0.3s;
}

.top-btn {
    max-width: 380px;
}

.top-btn a {
    background: #dfff5a;
}

.contact-btn:hover {
    opacity: 0.8;
}

.b-yellow {
    background: #f1ff9a;
}

.b-lyellow {
    background: #f3ffd1;
}

.b-dblue {
    color: #4a52c7;
}

.b-blue {
    background: #8087ff;
}

.b-lblue {
    background: #eafdfc;
}

.b-lpink {
    background: #fec6ce;
}

.b-pink {
    background: #ff8fb1;
}

.b-lgreen {
    background: #8fe9d9;
}

.b-purple {
    background: #d9dcff;
}

.b-top {
    background: url(../img/fv_title_pc.png);
    width: 100%;
    /*height: 1000px;*/
}

.b-dott {
    /*background-image: url(../img/img-type-bg.png);*/
    background-color: #ffffff;
    background-image: radial-gradient(#B5BCFF 4px, #ffffff 4px);
    background-position: 0 0, 15px 30px;
    background-size: 35px 35px;
}

.b-dott .toumei {
    background-color: rgba(255, 255, 255, 0.7);
}

.b-lattice {
    /*background-image: url(../img/img-qa-bg.png);*/
    background-color: #ffffff;
    background-image: linear-gradient(#B6F2E6 1px, transparent 1px), linear-gradient(to right, #B6F2E6 1px, transparent 1px);
    background-size: 20px 20px;
}

.b-lattice .toumei {
    background-color: rgba(255, 255, 255, 0.2);
}

.b-footer {
    background-image: url(../img/img-footer-bg.png);
}

.c-dblue {
    color: #4a52c7;
}

.c-blue {
    color: #8087ff;
}

.c-dark {
    color: #2c3e50;
}

.c-lyellow {
    color: #dfff5a;
}

.c-lgreen {
    color: #8fe9d9;
}

.c-pink {
    color: #ff8fb1;
}

.c-dpink {
    color: #c13b6b;
}

.b-title {
    font-size: calc(2rem + 1.5vw) !important;
}

.pc-width {
    max-width: 800px;
    margin: auto;
}

.floating-btn {
    /* 配置の指定 */
    position: fixed;
    /*position: sticky;*/
    bottom: 0px;
    left: 50%;
    /* 左から50%の位置 */
    transform: translateX(-50%);
    /* 自身の幅の半分を戻して完全な中央揃えにする */
    z-index: 1000;
    /* 他の要素より上に表示 */

    /* ボタンの見た目（デザインに合わせて自由に変更してください） */
    max-width: 380px;
    background: #dfff5a;

    /* 消える時のアニメーション（0.3秒かけてフワッと消える） */
    transition: opacity 0.3s ease, visibility 0.3s ease;
}

/* スクロール後に付与される非表示用のクラス */
.floating-btn.is-hidden {
    opacity: 0;
    /* 透明にする */
    visibility: hidden;
    /* 要素を非表示扱いにする */
    pointer-events: none;
    /* クリック判定を無くす */
}

/* ボタンの元の位置の高さを確保するラッパー */
.cta-wrapper {
    height: 90px;
    display: flex;
    justify-content: center;
    align-items: center;
    margin: -70px 0 20px;
}

/* 初期状態の大きなボタン */
.cta-btn {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 90%;
    max-width: 360px;
    background-color: #dfff5a;
    color: #111;
    text-decoration: none;
    padding: 12px 0;
    border-radius: 50px;
    border: 2px solid #111;
    box-shadow: 0 4px 0 #111;
    transition: all 0.3s ease;
    z-index: 100;
}

/* =========================================
   通常時のテキスト表示設定
   ========================================= */
/* 通常用のテキスト（表示する） */
.text-default {
    display: flex;
    flex-direction: column;
    align-items: center;
}

/* 固定用のテキスト（通常時は確実に隠す） */
.text-fixed {
    display: none;
    flex-direction: column;
    align-items: center;
}

/* 各テキストのスタイル（共通） */
.cta-main-text {
    font-size: 20px;
    font-weight: bold;
    letter-spacing: 1px;
}

.cta-sub-text {
    font-size: 14px;
    font-weight: bold;
    margin-top: 5px;
}

/* =========================================
   スクロールして固定された状態（右下・小さく） 
   ========================================= */
.cta-btn.is-fixed {
    position: fixed;
    bottom: 20px;
    right: 20px;
    left: auto;
    transform: none;
    width: 160px;
    padding: 12px 0;
    box-shadow: 0 3px 0 #111;
}

/* 固定時のテキスト切り替え */
.cta-btn.is-fixed .text-default {
    display: none;
    /* 通常用を隠す */
}

.cta-btn.is-fixed .text-fixed {
    display: flex;
    /* 固定用を表示する */
}

/* 固定時のテキストサイズ微調整 */
.cta-btn.is-fixed .cta-main-text {
    font-size: 16px;
}

.cta-btn.is-fixed .cta-sub-text {
    font-size: 14px;
    margin-top: 2px;
}

.voice-bg-white {
    background-color: rgba(255, 255, 255, 0.5);
}

.voice-line {
    background-image: url(../img/img-voice-line.png);
    background-position: center;
    background-repeat: no-repeat;
}

.type-highlight {
    background-color: #4a52c7;
    width: fit-content;
    color: #fff;
    padding: 10px;
    /*width: calc(10% + 200px);*/
    margin: auto;
}

.box-type {
    border-radius: 1.5rem;
    max-width: 380px;
    margin: 1rem auto;
    padding: 1rem;
}

.box-type ul {
    margin-left: -1rem;
}

.box-type li {
    color: #3a556a;
    list-style-type: none;
    background-image: url("../img/img-type-list.png");
    background-repeat: no-repeat;
    background-position: left 0.5em;
    padding-left: 20px;
    /*list-style-image: url("../img/img-type-list.png");*/
}

.box-type-highlight {
    background-color: #fff;
    padding: 10px;
    width: calc(10% + 250px);
    margin: auto;
}

.box-type-a {
    background: #d9dcff;
}

.box-type-b {
    background: #ffd6e3;
}

.box-type-c {
    background: #d9faf4;
}

.box-type-c-margin {
    margin-top: 40px;
}

.box-type-a table,
.box-type-b table {
    width: 90%;
    margin: auto;
}

.box-type-a table tr td:first-child,
.box-type-b table tr td:first-child {
    width: 6em;
}

.box-type-a .lastyaer,
.box-type-b .lastyaer {
    border: 1px solid #8087ff;
    padding: .5rem;
}

/*guideline*/
.guideline-highlight {
    letter-spacing: .15rem;

}

/*map*/
.map {
    position: relative;
    width: 100%;
    padding-top: 56.25%;
    /* 16:9のアスペクト比 */
    height: 0;
}

.map iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}


/*accordion*/
.accordion-button {
    border-radius: 3rem;
    text-align: center;
}

.accordion-item:first-of-type {
    border-top-left-radius: 3rem;
    border-top-right-radius: 3rem;
    border-bottom-right-radius: 3rem;
    border-bottom-left-radius: 3rem;
}

.accordion-item:last-of-type>.accordion-header .accordion-button.collapsed {
    border-bottom-right-radius: 3rem;
    border-bottom-left-radius: 3rem;
}

.accordion-item:first-of-type>.accordion-header .accordion-button {
    border-top-left-radius: 3rem;
    border-top-right-radius: 3rem;
}

/*Q&A*/
.qa-1 {
    max-width: 780px;
    margin-bottom: 1rem;
    border: 1px solid #2c3e50;
    border-radius: 10px;
    background: #fff;
}

.qa-1 summary {
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: relative;
    padding: 1em 2em 1em 4em;
    color: #333333;
    font-weight: 600;
    cursor: pointer;
}

.qa-1 summary::before,
.qa-1 p::before {
    position: absolute;
    left: 1em;
    font-weight: 600;
    font-size: 1.3em;
}

.qa-1 summary::before {
    content: "Q";
    background: #dfff5a;
    text-align: center;
    position: absolute;
    left: .5rem;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    padding: .1rem .1rem .1rem .2rem;
    border: 1px solid #2c3e50;
}

.qa-1 summary::after {
    transform: translateY(-25%) rotate(45deg);
    width: 7px;
    height: 7px;
    margin-left: 10px;
    border-bottom: 3px solid #333333b3;
    border-right: 3px solid #333333b3;
    content: '';
    transition: transform .8s;
}

.qa-1[open] summary::after {
    transform: rotate(225deg);
}

/* --- ここから下を修正 --- */

.qa-1 p {
    position: relative;
    margin: 0;
    padding: .3em 1em 1.5em 4em;
    color: #333;
    /* transitionを削除し、はみ出し防止を追加 */
    overflow: hidden;
}

.qa-1[open] p {
    /* 開いた時に keyframes アニメーションを実行 */
    animation: accordion-slide-down 0.8s ease-out forwards;
}

/* ゆっくり開く（高さと透過度）ためのアニメーション定義 */
@keyframes accordion-slide-down {
    0% {
        opacity: 0;
        transform: translateY(-10px);
        max-height: 0;
        padding-top: 0;
        padding-bottom: 0;
    }

    100% {
        opacity: 1;
        transform: none;
        max-height: 500px;
        /* ★Aの文章量に応じて余裕のある数値に変更してください */
        padding-top: .3em;
        padding-bottom: 1.5em;
    }
}

.qa-1 p::before {
    /*color: #ff8d8d;*/
    content: "A";
    background: #ffd6e3;
    text-align: center;
    position: absolute;
    left: .5rem;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    padding: .1rem .1rem .1rem .3rem;
    border: 1px solid #2c3e50;
}

/* accordion */
/* 白い外枠（カード） */
.card-container {
    margin: auto;
    background-color: transparent;
    border-radius: 30px 30px 10px 10px;
    box-sizing: border-box;
}

.card-container.is-open {
    background-color: #fff;
}

/* ボタンのデザイン */
.accordion-toggle {
    width: 100%;
    background-color: #7b85ff;
    color: #fff;
    border: none;
    border-radius: 30px;
    padding: 15px 0;
    font-size: 16px;
    font-weight: bold;
    cursor: pointer;
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
    outline: none;
    transition: background-color 0.3s;
}

.accordion-toggle:hover {
    background-color: #6a74e6;
}

.accordion-pink,
.accordion-pink:hover {
    background: #ff8fb1;
}

.accordion-green,
.accordion-green:hover {
    background: #65d8d9;
}

.toggle-text {
    letter-spacing: 2px;
}

/* 右端の「＋」「ー」記号 */
.toggle-icon {
    position: absolute;
    right: 20px;
    font-size: 16px;
}

/* コンテンツエリアの初期状態 */
.accordion-content {
    display: none;
}

.content-inner {
    padding: 30px 10px 10px;
    text-align: center;
}

/* キャッチコピー */
.catchphrase {
    color: #7b85ff;
    font-weight: bold;
    line-height: 1.6;
    margin: 0 0 20px 0;
    font-size: 15px;
    letter-spacing: 0.15rem;
}

/* ピンク色の強調ボックス */
.highlight-box {
    background-color: #ffccd9;
    color: #555cce;
    font-weight: bold;
    padding: 10px;
    margin-bottom: 25px;
    letter-spacing: 0.15rem;
}

/* リスト部分 */
.feature-list {
    padding: 0;
    margin: 0 0 25px 0;
    text-align: left;
    display: inline-block;
}

.feature-list li {
    margin-bottom: 10px;
    letter-spacing: 0.15rem;
}

/* 場所のテキスト */
.location-text {
    text-align: left;
    font-weight: bold;
    font-size: 15px;
    margin: 0 0 10px 15px;
    letter-spacing: 0.15rem;
}

/* Carousel */
/* 全体のセクション設定 */
.past-contest-section {
    padding: 10px 0;
    text-align: center;
    overflow: hidden;
    /* 横スクロールバーを出さないため */
    font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;
}

/* スライダー全体の位置調整 */
.slider-container {
    margin-bottom: 40px;
}

/* Slickスライダーの各スライド（初期状態は少し小さく、半透明にする） */
.slider-container .slick-slide {
    transform: scale(0.85);
    /* 左右の画像を85%に縮小 */
    opacity: 0.6;
    transition: transform 0.3s ease, opacity 0.3s ease;
    padding: 0 10px;
    /* スライド間の余白 */
    outline: none;
}

/* 中央にきているアクティブなスライド（100%サイズで不透明にする） */
.slider-container .slick-center {
    transform: scale(1);
    opacity: 1;
}

/* 灰色のプレースホルダー部分 */
.slide-content {
    background-color: #dcdcdc;
    /* 灰色 */
    height: 250px;
    /* 高さを指定 */
    display: flex;
    justify-content: center;
    align-items: center;
    color: #fff;
    font-weight: bold;
    font-size: 20px;
    letter-spacing: 2px;
    /* 画像が入る場合はここに object-fit などを設定します */
}

.slide-image {
    width: 100%;
    height: 250px;
    /* 前回の灰色ボックスと同じ高さを指定 */
    object-fit: cover;
    /* 画像の縦横比を崩さずに、枠いっぱいにトリミングして表示 */
}

.slide-content img {
    object-fit: contain;
}

.collabo-txt {
    width: 90%;
}

/* footer */
/* リンクのスタイル調整 */
.custom-menu .nav-link {
    font-weight: 500;
    margin: .5rem;
    padding: .25rem;
    text-align: center;
    color: #2c3e50;
    font-weight: bold;
}

/* ホバー時のスタイル */
.custom-menu .nav-link:hover {
    color: #2c3e50;
}

/* アクティブなメニューのスタイル上書き（必要に応じて） */
.custom-menu.nav-pills .nav-link.active {
    background-color: rgba(255, 255, 255, 0.0) !important;
    color: #2c3e50;
}


@media (min-width: 576px) {
    /*.b-top {
        background-size: 400px 858px;
    }*/

    .b-top {
        /*height: 1300px;*/
    }

    .box-type {
        max-width: 90%;
    }

    .box-type-highlight {
        /*width: calc(10% + 350px);*/
    }

    .box-type ul li {
        width: fit-content;
        margin: auto;
    }

    .card-container {
        max-width: 530px;
    }

    .voice-box {
        max-width: 100%;
    }
}

@media (min-width: 768px) {
    .b-top {
        /*height: 800px;*/
    }

    .floating-btn {
        bottom: 375px;
    }

    .box-type {
        max-width: 100%;
        /*height: 290px;*/
    }

    .box-type-highlight {
        /*width: 530px;*/
    }

    .guideline-highlight {
        font-size: 1.3rem;
    }

    .voice-box {
        max-width: 380px;
    }

    .border-xl-end {
        border-right: 2px solid #8087ff;
    }

    @media (min-width: 992px) {
        .b-top {
            /*height: 950px;*/
        }

        .floating-btn {
            bottom: 250px;
        }

    }

    @media (min-width: 1200px) {
        .b-top {
            /*height: 1100px;*/
        }

        .floating-btn {
            bottom: 100px;
        }

    }

    @media (min-width: 1400px) {
        .b-top {
            /*height: 1150px;*/
        }

        .floating-btn {
            bottom: 50px;
        }

    }