/* ===== 页面淡入淡出 ===== */
body {
    opacity: 0;
    animation: pageIn 0.58s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

body.page-fade-out {
    animation: pageOut 0.28s ease forwards;
}

.scroll-progress {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 40000;
    width: 100%;
    height: 2px;
    background: linear-gradient(90deg, #2f5fa8, #3a9b75, #f2aa4c);
    transform: scaleX(var(--scroll-progress, 0));
    transform-origin: left center;
    opacity: 0.88;
    box-shadow: 0 0 16px rgba(58, 155, 117, 0.38);
    pointer-events: none;
}

.motion-ready .scroll-progress {
    transform: scaleX(var(--scroll-progress, 0));
}

@keyframes pageIn {
    from {
        opacity: 0;
        transform: translateY(12px);
        filter: blur(4px);
    }

    to {
        opacity: 1;
        transform: none;
        filter: blur(0);
    }
}

@keyframes pageOut {
    from {
        opacity: 1;
        transform: none;
        filter: blur(0);
    }

    to {
        opacity: 0;
        transform: translateY(-8px);
        filter: blur(3px);
    }
}

/* ===== 滚动淡入上浮 ===== */
.fade-up {
    opacity: 0;
    transform: translateY(24px) scale(0.992);
    filter: blur(5px);
    transition:
        opacity 0.72s cubic-bezier(0.16, 1, 0.3, 1),
        transform 0.72s cubic-bezier(0.16, 1, 0.3, 1),
        filter 0.72s ease;
    transition-delay: var(--reveal-delay, 0ms);
}

.fade-up.visible {
    opacity: 1;
    transform: none;
    filter: blur(0);
}

.project-card.fade-up,
.gallery-item.fade-up,
.thumb.fade-up {
    transition-delay: 0ms;
}

/* ===== 卡片悬停微抬（取消，改为头像独立动效） ===== */
.card {
    transition: transform 0.34s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.34s ease, border-color 0.34s ease;
}

.card:hover {
    box-shadow: 0 18px 46px rgba(35, 65, 102, 0.16);
}

/* ===== 导航链接下划线动效 ===== */
.nav-links a {
    position: relative;
}

.nav-links a::after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: -4px;
    width: 0;
    height: 2px;
    background: linear-gradient(90deg, #2f5fa8, #3a9b75);
    border-radius: 1px;
    transition: width 0.25s ease, left 0.25s ease, opacity 0.25s ease;
    opacity: 0.82;
}

.nav-links a:hover::after {
    width: 100%;
    left: 0;
}

/* ===== 图片缩略图悬停缩放 ===== */
.thumb img {
    transition: transform 0.3s ease;
}

.thumb:hover img {
    transform: scale(1.05);
}

/* ===== 按钮按压动效 ===== */
.join-btn {
    transition: background 0.2s, transform 0.15s, box-shadow 0.24s ease;
}

.join-btn:active {
    transform: scale(0.96);
}

@media (prefers-reduced-motion: reduce) {
    body,
    body.page-fade-out,
    .fade-up,
    .scroll-progress {
        animation: none !important;
        transition: none !important;
        filter: none !important;
    }

    body,
    .fade-up {
        opacity: 1 !important;
        transform: none !important;
    }
}
