/* =====================================
   General Styles
====================================== */
body {
    /* 右クリック、テキスト選択の禁止 */
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
    letter-spacing: 0.05em;
    line-height: 1.8;
    font-size: 14px; /* Mobile */
}

@media (min-width: 768px) {
    body {
        font-size: 16px; /* Desktop */
    }
}

/* テキスト背面にあしらいを敷かないためのリセット */
h1, h2, h3, h4, h5, h6, p, span, li {
    background: transparent !important;
}

/* FVのSwiper調整 */
.fv-swiper {
    width: 100%;
    height: auto;
}

.fv-swiper .swiper-slide img {
    width: 100%;
    height: auto;
    vertical-align: bottom;
}

/* スクロールインジケーター（文字なし縦線） */
.scroll-indicator {
    position: absolute;
    bottom: 30px;
    left: 50%;
    transform: translateX(-50%);
    width: 1px;
    height: 60px;
    background: rgba(255, 255, 255, 0.3);
    z-index: 10;
}

.scroll-indicator::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 50%;
    background: #fff;
    animation: scrollDown 2s cubic-bezier(0.77, 0, 0.175, 1) infinite;
}

@keyframes scrollDown {
    0% {
        transform: scaleY(0);
        transform-origin: top;
    }
    50% {
        transform: scaleY(1);
        transform-origin: top;
    }
    50.1% {
        transform: scaleY(1);
        transform-origin: bottom;
    }
    100% {
        transform: scaleY(0);
        transform-origin: bottom;
    }
}

/* 非対称レイアウト用のユーティリティ */
.w-asym-img, .w-asym-text, .w-asym-img-rev, .w-asym-text-rev {
    width: 100%;
}

@media (min-width: 768px) {
    .w-asym-img {
        width: 45%;
    }
    .w-asym-text {
        width: 55%;
    }
    .w-asym-img-rev {
        width: 40%;
    }
    .w-asym-text-rev {
        width: 60%;
    }
}

/* スムーススクロール */
html {
    scroll-behavior: smooth;
}

/* スクロールアニメーション（スーパー動的エフェクト） */
.reveal {
    opacity: 0;
    transform: translateY(60px) scale(0.95);
    filter: blur(10px);
    transition: all 1.2s cubic-bezier(0.2, 0.8, 0.2, 1);
}

.reveal.active {
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: blur(0);
}

/* マップ等のためのスーパーフローティング・Glowアニメーション */
.float-super-dynamic {
    animation: superFloat 5s cubic-bezier(0.4, 0, 0.2, 1) infinite alternate;
}

@keyframes superFloat {
    0% {
        transform: translateY(0) scale(1);
        box-shadow: 0 10px 30px rgba(0,0,0,0.1), 0 0 0px rgba(196,164,124,0.1);
    }
    100% {
        transform: translateY(-12px) scale(1.01);
        box-shadow: 0 25px 45px rgba(0,0,0,0.2), 0 0 30px rgba(196,164,124,0.4);
    }
}

/* SPメニューのリンク用アニメーション */
.sp-menu-item {
    opacity: 0;
    transform: translateY(20px);
    transition: all 0.5s ease-out;
}

.sp-menu-item.active {
    opacity: 1;
    transform: translateY(0);
}

/* =====================================
   Section Title (Dynamic Shadow + Animation)
====================================== */
.section-title {
    font-size: 1.75rem;
    font-weight: 500;
    letter-spacing: 0.15em;
    color: #333333;
    position: relative;
    display: inline-block;
    /* Glow Animation */
    animation: titleGlow 2.5s ease-in-out infinite alternate;
}

@media (min-width: 768px) {
    .section-title {
        font-size: 2.25rem;
    }
}

@keyframes titleGlow {
    0% {
        text-shadow: 0 2px 4px rgba(0, 0, 0, 0.05), 0 0 10px rgba(196, 164, 124, 0);
        transform: scale(1);
    }
    100% {
        text-shadow: 0 6px 15px rgba(0, 0, 0, 0.1), 0 0 20px rgba(196, 164, 124, 0.4);
        transform: scale(1.02);
    }
}

/* =====================================
   Premium Animated Gradient Background
====================================== */
.bg-gradient-premium {
    /* Subtle champagne/gold gradient matching the accent color */
    background: linear-gradient(135deg, #ffffff 0%, #fbf8f1 50%, #fffefe 100%);
    background-size: 200% 200%;
    animation: gradientMove 12s ease-in-out infinite;
}

@keyframes gradientMove {
    0% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
    100% { background-position: 0% 50%; }
}
