/* ページ全体のスタイル */
html{
    font-size: 62.5%;
}
body{
    font-family: "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Open Sans", "Zen Kaku Gothic New", system-ui, -apple-system, BlinkMacSystemFont, "Noto Sans JP", "游ゴシック体", "Yu Gothic", YuGothic, sans-serif;
    /* max-width: 64rem; */
    margin: 0 auto;
    text-align: center;
}

/* ヘッダーのスタイル */
header {
    width: 100%;
    padding: min(20px,calc(3vw - 1px)) 0;
    background-color: #fff;
}
.header_main {
    width: 100%;
    max-width: 1700px;
    margin: 0 auto;
}

.header_main h1 {
    display: flex;
    justify-content: start;
    align-items: center;
    margin: 0 auto 0 5%;
}
.header_main h1 img {
    width: min(219px,calc(28vw - 10px));
}

/* コンテンツ全体のスタイル */
.content-container {
    position: relative;
    min-height: 100vh;
    width: 100%;
}
@media (max-width: 767px) {
    .content-container {
        background: url("../img/sp/bg_sp.png") repeat-y;
        background-attachment: fixed;
        background-size: cover;
        background-position: top center;
    }
}
@media (min-width: 768px) {
    .content-container {
        background: url("../img/pc/bg_pc.png") repeat-y;
        background-attachment: fixed;
        background-size: cover;
        background-position: top center;
        /* max-height: 200vh; */
    }
}
.ribbon-pc {
    width: 100%;
    margin: 0 auto;
}

/* バナーのスタイル */
@media (max-width: 767px) {
    .banner-top {
        position: relative;
        width: 100%;
        margin: 0 auto;
    }
}
@media (min-width: 768px) {
    .banner-top {
        position: absolute;
        top: clamp(25px,calc(7vw + 4px),50px);
        left: 0;
        right: 0;
        width: 100%;
        max-width: 1700px;
        margin: 0 auto;
        min-height: 0;
    }
}

/* コンテンツを中央に配置するためのスタイル */
.content-wrapper {
    text-align: center;
    width: 100%;
    max-width: 1700px;
    margin: 0 auto;
    height: auto;
    min-height: 100vh;
    overflow: hidden;
}
@media (max-width: 1199px) {
    /* スマートフォン用の背景画像設定 */
    .content-wrapper {
        /* background: url("../img/sp/bg_sp.png") repeat-y; */
        background-attachment: fixed;
        background-size: cover;
        background-position: top center;
    }
}
@media (min-width: 1200px) {
    /* PC用の背景画像設定 */
    .content-wrapper {
        /* background: url("../img/pc/bg_pc.png") repeat-y; */
        background-attachment: fixed;
        background-size: cover;
        background-position: top center;
    }
}
.content-inner {
    position: relative;
    width: 100%;
    max-width: 1200px;
    margin: auto;
}
@media (max-width: 767px) {
    .content-inner {
        margin-top: 0;
    }
}
@media (max-width: 1199px) and (min-width: 768px) {
    .content-inner {
        margin-top: 25vw;
    }
}
@media (min-width: 1200px) {
    .content-inner {
        margin-top: min(180px,calc(13vw - 2px));
    }
}

@media (max-width: 1199px) {
    .map_pc {
        display: none;
    }
    .map_sp {
        display: block;
    }
}
@media (min-width: 1200px) {
    .map_pc {
        display: block;
    }
    .map_sp {
        display: none;
    }
}

/* 地図のコンテナスタイル */
#map-container {
    position: relative; /* 子要素を絶対位置で配置するための基準となります */
    width: 80%; /* コンテナの幅 */
    max-width: 800px; /* 最大幅 */
    background: url("../img/japan-map.png") no-repeat center center;
    background-size: contain;
}

#map-container img {
    height: auto;
}

@media (max-width: 1199px) {
    /* スマートフォン用の地図コンテナ位置調整 */
    #map-container {
        margin: 0 auto;
    }
}
@media (min-width: 1200px) {
    /* PC用の地図コンテナ位置調整 */
    #map-container {
        margin: 0 auto 0 9%;
    }
}

/* 地図背景のスタイル */
.japan-map::before {
    content: "";
    display: block;
    padding-top: 100%;
}
@media (max-width: 1199px) {
    .japan-map::before {
        margin-top: 17.5vw;
    }
}
@media (min-width: 1200px) { 
    .japan-map::before {
        margin-top: 5vw;
    }
}

.happy-voice {
    width: min(600px,calc(80vw - 1px));
    max-width: 600px;
    position: absolute;
    z-index: 200;
    margin: auto;
}
@media (max-width: 1199px) {
    /* スマートフォン用の位置調整 */
    .happy-voice {
        top: -15%;
        left: 0;
        right: 0;
    }
}
@media (min-width: 1200px) {
    /* PC用の位置調整 */
    .happy-voice {
        top: 5%;
        right: 30%;
    }
}

@keyframes floatAnimation {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-15px); }
}

/* 風船ボタンのラッパーにアニメーション・位置指定 */
.balloon-btn-wrapper {
    position: absolute;
    animation: floatAnimation var(--duration) ease-in-out infinite;
    animation-delay: var(--delay);
    z-index: 300;
    width: 10%;
}
.balloon01 { top: 7%; right: 3%; }
.balloon02 { top: 19%; right: 15%; }
.balloon03 { bottom: 20%; right: 16%; }
.balloon04 { bottom: 24%; right: 30%; }
.balloon05 { bottom: 15%; right: 47%; }
.balloon06 { bottom: 17%; left: 28%; }
.balloon07 { bottom: 15%; left: 7%; }
.balloon08 { top: 40%; right: 13%; }
.balloon09 { bottom: 0%; left: 12%; }
.balloon10 { bottom: 11%; right: 36%; }

/* クリック時の拡大・位置調整はラッパーに */
.balloon-btn-wrapper.balloon-open {
    width: 30%;
    z-index: 50;
}
.balloon-btn-wrapper.balloon-open.balloon01 { top: 2%; right: -8%; }
.balloon-btn-wrapper.balloon-open.balloon02 { top: 10%; right: 6%; }
.balloon-btn-wrapper.balloon-open.balloon03 { bottom: 17%; right: 6%; }
.balloon-btn-wrapper.balloon-open.balloon04 { bottom: 26%; right: 22%; }
.balloon-btn-wrapper.balloon-open.balloon05 { bottom: 15%; right: 37%; }
.balloon-btn-wrapper.balloon-open.balloon06 { bottom: 14%; left: 17%; }
.balloon-btn-wrapper.balloon-open.balloon07 { bottom: 13%; left: -2%; }
.balloon-btn-wrapper.balloon-open.balloon08 { top: 33%; right: 5%; }
.balloon-btn-wrapper.balloon-open.balloon09 { bottom: -2%; left: 2%; }
.balloon-btn-wrapper.balloon-open.balloon10 { bottom: 11%; left: 42%; }

/* 風船画像はアニメーションなし、hoverのみ拡大 */
.balloon-btn {
    width: 100%;
    cursor: pointer;
    transition: transform 0.3s, filter 0.3s;
}
.balloon-btn:hover {
    transform: scale(1.3);
    filter: brightness(1.1);
}

/* 吹き出しの画像スタイル */
.comment-img {
    position: absolute; /* 親要素を基準に位置を決めます */
    display: none;
    z-index: 1000;
}
@media (max-width: 1199px) {
    /* スマートフォン用の吹き出しサイズ調整 */
    .comment-img {
        width:min(98%,calc(60vw - 3px));
        max-width: 600px;
    }
    #bubble1-sp.comment-img {
        width: min(100%,calc(72vw - 3px));
    }
    #bubble2-sp.comment-img {
        width: min(100%,calc(67vw - 3px));
    }
    #bubble8-sp.comment-img {
        width: min(100%,calc(63vw - 3px));
    }

    /* SP用の吹き出し位置調整 */
    #bubble1-sp.comment-img { top: 8%; right: 18%; }
    #bubble2-sp.comment-img { top: 8%; right: 23%; }
    #bubble3-sp.comment-img { top: 15%; right: 24%; }
    #bubble4-sp.comment-img { top: 6%; right: 31%; }
    #bubble5-sp.comment-img { top: 8%; right: 29%; }
    #bubble6-sp.comment-img { top: 4%; right: 31%; }
    #bubble7-sp.comment-img { top: 13%; right: 36%; }
    #bubble8-sp.comment-img { top: 7%; right: 27%; }
    #bubble9-sp.comment-img { top: 4%; right: 32%; }
    #bubble10-sp.comment-img { top: 9%; right: 32%; }
}
@media (min-width: 1200px) {
    /* PC用の吹き出しサイズ調整 */
    .comment-img {
        width:min(370px,calc(47vw - 1px));
    }
    #bubble10-pc.comment-img {
        width: min(600px,calc(50vw - 1px));
    }

    /* PC用の吹き出し位置調整 */
    #bubble1-pc.comment-img { top: 7%; right: -40%; }
    #bubble2-pc.comment-img { top: 17%; right: -31%; }
    #bubble3-pc.comment-img { bottom: 4%; right: -31%; }
    #bubble4-pc.comment-img { top: 19%; left: 23%; }
    #bubble5-pc.comment-img { top: 20%; left: 17%; }
    #bubble6-pc.comment-img { top: 20%; left: 0%; }
    #bubble7-pc.comment-img { top: 31%; left: -5%; }
    #bubble8-pc.comment-img { top: 37%; right: -33%; }
    #bubble9-pc.comment-img { top: 25%; left: -15%; }
    #bubble10-pc.comment-img { bottom: 0%; left: 59%; }
}

/* 吹き出し画像の浮遊アニメーション */
.comment-img.show {
    display: block;
    animation: fadeIn 0.25s forwards, floatAnimation 2s ease-in-out infinite;
    -webkit-animation: fadeIn 0.25s forwards, floatAnimation 2s ease-in-out infinite;
}

.comment-img.hide {
    animation: fadeOut 0.25s forwards;
    -webkit-animation: fadeOut 0.25s forwards;
}

@keyframes fadeIn {
    0% { opacity: 0; }
    5% { scale: 0.8; }
    50% { scale: 1.2; }
    95% { scale: 1; }    
    100% { opacity: 1; }
}

@keyframes fadeOut {
    0% { opacity: 1; }
    100% { opacity: 0; }
}

/* ボタンのスタイル */
.btn-wrapper {
    margin: 0 auto;
    width: 100%;
}
@media (max-width: 767px) {
    .btn-wrapper {
        max-width: 80%;
        margin:9vw 10%;
    }
}
@media (min-width: 768px) {
    .btn-wrapper {
        max-width: 575px;
        margin-bottom: min(130px,calc(16vw + 1px));
    }
}

.btn-wrapper a,
.tap-wrapper a,
.fixed-tap-wrapper a {
    display: inline-block;
    transition: transform 0.2s, filter 0.2s;
}

/* ホバー時のスタイル */
.btn-wrapper a:hover,
.tap-wrapper a:hover,
.fixed-tap-wrapper a:hover {
    transform: scale(1.05);
    filter: brightness(1.1);
}

/* クリック時のスタイル */
.btn-wrapper a:active,
.tap-wrapper a:active,
.fixed-tap-wrapper a:active {
    transform: scale(0.9);
}
/* --- End Buttons Common Style --- */

.tap-wrapper a {
    display: inline-block;
    justify-content: start;
    align-items: center;
    margin: 0 auto 0 10%;
    min-height: 0;
}

.tap-wrapper a img {
    width: clamp(50%,calc(49vw + 3px),378px);
}

/* ビデオコンテナのスタイル */
.video-container {
    background-color: #fff;
    border-radius: 10px;
    position: relative;
}

.banner-video-top,
.banner-video-bottom {
    position: absolute;
    left: 0;
    right: 0;
    margin: 0 auto;
}
.banner-video-top{
    width: 95%;
    height: 95%;
}
.banner-video-bottom {
    width: 100%;
    height: 100%;
}

.video-wrapper {
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    gap: 10%;
    position: relative; /* バナー画像との重なりを解消 */
    z-index: 1; /* バナー画像との重なりを解消 */
}

.video_banner {
    margin: 0 auto;
    padding-bottom: 20px;
    width: 100%;
}

.vb01 {
    width: min(276px,78.4%);
    max-width: 276px;
    flex-basis: 276px;
}
.vb02 {
    max-width: 352px;
    flex-basis: 352px;
}


@media (max-width: 767px) {
    .banner-video-top {
        bottom: 17%;
    }
    .banner-video-bottom {
        top: 90%;
    }
    .video-container {
        padding: 15vw 30px;
        margin: min(180px, 24vw) 5% min(60px, calc(10vw - 1px));
    }
    
    /* スマートフォン用のビデオラッパー配置 */
    .video-wrapper {
        -ms-flex-direction: column;
        flex-direction: column;
    }
}
@media (min-width: 768px) {
    .banner-video-top {
        max-width: 980px;
        bottom: 17%;
    }
    .banner-video-bottom {
        max-width: 1200px;
        top: 79%;
    }
    .video-container {
        padding: min(100px,calc(13vw + 1px)) 30px;
        margin: min(130px,calc(16vw + 1px)) 5%;
    }

    /* PC用のビデオラッパー配置 */
    .video-wrapper {
        -ms-flex-direction: row;
        flex-direction: row;
        justify-items: center;
        height: 100%;
        margin: min(30px,calc(4vw - 1px)) auto;
        padding: 0 min(30px,calc(4vw - 1px));
    }
}

.video-wrapper-inner {
    flex: 1;
    flex-shrink: 0;
    display: block;
    position: relative; /* 再生マークを重ねるための基準 */
}

.video-wrapper-inner .video-btn img {
    filter: grayscale(40%);
    transition: filter 0.3s;
}

.video-wrapper-inner:hover .video-btn img {
    filter: grayscale(0%);
}

.video-mark {
    position: absolute;
    top: 56%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 20%; /* サイズは適宜調整してください */
    max-width: 100px;
    pointer-events: none; /* クリックイベントを透過させる */
}

@media (max-width: 767px) {
    .video-wrapper-inner + .video-wrapper-inner {
        margin-top: 10%;
    }
}

.foot-wrapper {
    margin: 0 auto;
    width: 80%;
    padding: 2% 0 10% 0;
}
.foot-wrapper p {
    font-size: min(12px,calc(2vw - 3px));
}

.fixed-tap-wrapper {
    position: fixed;
    bottom: 30vh;
    right: 2.5%;
    width: clamp(150px,calc(20vw - 2px),300px);
    z-index: 9999;
    min-height: 0;
}

/* --- Popover / Video Modal --- */
.video-btn {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    display: block;
    width: 100%;
}
.video-btn img {
    display: block;
    width: 100%;
}

.video-popover {
    width: 80%;
    max-width: 800px;
    height: fit-content;
    padding: 2em;
    border: none;
    border-radius: 10px;
    box-shadow: 0 5px 15px rgba(0,0,0,0.3);
    z-index: 10000;
}

.video-popover::backdrop {
    background-color: rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(5px); /* for Safari */
    backdrop-filter: blur(5px);
}

.video-popover video {
    display: block;
    width: 100%;
    height: auto;
    border-radius: 5px;
}

.close-btn {
    position: absolute;
    top: 15px;
    right: 15px;
    font-size: 2.5rem;
    font-weight: bold;
    color: #333;
    background: #FFF;
    border: none;
    cursor: pointer;
    line-height: 1;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
}
/* --- End Popover --- */