@charset "UTF-8";

/* ==========================================
   案内ページ（親ページ） ベース設定
========================================== */
.gallery-container {
    margin: 0 auto;
    background-color: #fdf7eb;
    box-sizing: border-box;
    overflow-x: hidden;
    max-width: 15.36rem;
}

.gallery-container img {
    display: block;
    width: 100%;
    height: auto;
}

/* --- PC/スマホ表示切り替え --- */
.is-pc-only { display: block; }
.is-sp-only { display: none; }

@media screen and (max-width: 767px) {
    .is-pc-only { display: none; }
    .is-sp-only { display: block; }
}

/* --- 1. メインビジュアル --- */
.gallery-main-visual { width: 100%; }

/* --- 2. ボタンエリア --- */
.gallery-buttons {
    background-color: #fdf7eb;
    padding: 30px 24px 15px 24px;
    display: flex;
    flex-direction: column;
    gap: 16px;
    align-items: center;
}

.btn-link {
    display: block;
    width: 80%;
    transition: opacity 0.2s ease;
}
.btn-link:active { opacity: 0.8; }

.js-pulse-btn {
    animation: pulseAnimation 3s infinite ease-in-out;
    transform-origin: center;
}

@keyframes pulseAnimation {
    0%, 100% { transform: scale(1); }
    3% { transform: scale(1.04) rotate(-1deg); }
    6% { transform: scale(0.98) rotate(1deg); }
    9% { transform: scale(1.02) rotate(-0.5deg); }
    12% { transform: scale(1) rotate(0); }
}

/* --- 3 & 7. 研究員と吹き出しエリア --- */
.gallery-intro-section,
.gallery-closing-section {
    background-color: #ffffff;
    padding: 30px 16px;
    display: flex;
    flex-direction: column;
    gap: 0px;
}
.gallery-intro-section { padding-top: 35px; padding-bottom: 35px; }
.gallery-closing-section { padding-top: 35px; padding-bottom: 35px; }

.intro-row, .row-female-bottom, .row-male-bottom {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    position: relative; 
}

.character-img { width: 42%; }
.message-bubble-wrapper {
    position: relative;
    width: 55%;
}
.message-bubble-wrapper > img {
    position: relative;
    z-index: 2;
}

.anim-fade-in,
.anim-slide-left,
.anim-slide-right {
    opacity: 0;
    transition: transform 0.8s cubic-bezier(0.215, 0.61, 0.355, 1), opacity 0.8s ease;
    will-change: transform, opacity;
}

.anim-slide-left { transform: translateX(-40px); }
.anim-slide-right { transform: translateX(40px); }

.js-scroll-trigger.is-animated .anim-fade-in { opacity: 1; }
.js-scroll-trigger.is-animated .anim-slide-left,
.js-scroll-trigger.is-animated .anim-slide-right {
    opacity: 1;
    transform: translateX(0);
}
.js-scroll-trigger.is-animated .anim-fade-in { transition-delay: 0.25s; }

/* --- 4, 5, 8. 縦並びセクション --- */
.gallery-feature-section,
.gallery-about-section,
.gallery-step-section,
.gallery-batch-section {
    width: 100%;
}

/* --- 6. 横スクロールエリア --- */
.gallery-scroll-container {
    background-color: #fdf7eb;
    width: 100%;
}

.gallery-scroll {
    display: flex;
    align-items: flex-start;
    overflow-x: auto;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
    gap: 12px;
    padding: 0 0 10px 16px;
    scroll-snap-type: x mandatory;
}

.gallery-scroll img {
    flex: 0 0 85%;
    width: 85%;
    height: auto;
    object-fit: contain;
    scroll-snap-align: center;
}

.gallery-scroll::-webkit-scrollbar { display: none; }

/* ドットと矢印を並べるラッパー */
.indicator-wrapper {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 15px; 
    padding-bottom: 20px;
}

.scroll-indicator {
    display: flex;
    justify-content: center;
    gap: 8px;
}

.scroll-indicator .dot {
    width: 8px;
    height: 8px;
    background-color: #d1c7bd;
    border-radius: 50%;
    display: inline-block;
    transition: background-color 0.2s ease;
}

.scroll-indicator .dot.active {
    background-color: #8c7f73;
}

/* スライダーナビゲーションボタン */
.slider-nav-btn {
    width: 32px;
    height: 32px;
    background-color: #fff;
    border: 1px solid #D5C8B8;
    border-radius: 50%;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    transition: background-color 0.2s ease, transform 0.1s ease;
}

.slider-nav-btn:hover { background-color: #F8F5F0; }
.slider-nav-btn:active { transform: scale(0.95); }

.slider-nav-btn span {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-top: 2px solid #8c7f73;
    border-right: 2px solid #8c7f73;
}

.slider-nav-btn.prev span {
    transform: rotate(-135deg);
    margin-left: 2px;
}
.slider-nav-btn.next span {
    transform: rotate(45deg);
    margin-right: 2px;
}

/* --- 9. 最下部エリア --- */
.gallery-footer-area {
    background-color: #fdf7eb;
    width: 100%;
}

.gallery-footer-button {
    padding: 20px 24px 40px 24px;
    display: flex;
    justify-content: center;
}

.gallery-final-closing-img { width: 100%; }