/* 引入思源黑体 (Noto Sans SC) 用于中文显示，兼顾极简美学 */
@import url('https://fonts.loli.net/css2?family=Noto+Sans+SC:wght@100;300;400;500&display=swap');

/* 核心变量定义：严格遵循黑白灰配色体系 */
:root {
    --font-primary: "Helvetica Neue", Helvetica, Arial, "Noto Sans SC", "PingFang SC", sans-serif;
    --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
    --color-bg-primary: #FFFFFF;
    --color-text-main: #333333;
}

/* 全局基础重置与排版设定 */
body {
    font-family: var(--font-primary);
    background-color: var(--color-bg-primary);
    color: var(--color-text-main);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: hidden;
    margin: 0;
    padding: 0;
    cursor: default; /* 保持系统默认光标，体现从容感 */
}

/* 极简滚动条设计，减少视觉干扰 */
::-webkit-scrollbar {
    width: 4px;
    height: 4px;
}

::-webkit-scrollbar-track {
    background: transparent;
}

::-webkit-scrollbar-thumb {
    background: #E0E0E0;
    border-radius: 2px;
}

::-webkit-scrollbar-thumb:hover {
    background: #BDBDBD;
}

/* 交互状态类 */
.cursor-view {
    cursor: zoom-in;
}

/* 动画工具类：用于页面元素入场 */
.fade-enter {
    opacity: 0;
    transform: translateY(15px);
    animation: fadeUp 1.2s var(--ease-out-expo) forwards;
}

.fade-enter-delay-1 { animation-delay: 0.1s; }
.fade-enter-delay-2 { animation-delay: 0.2s; }
.fade-enter-delay-3 { animation-delay: 0.3s; }

@keyframes fadeUp {
    from {
        opacity: 0;
        transform: translateY(15px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* 图片容器：确保图片加载前的占位美观 */
.image-wrapper {
    background-color: #F9F9F9;
    overflow: hidden;
    position: relative;
}

.image-wrapper img {
    opacity: 0;
    transition: opacity 0.8s ease-out, transform 1.2s var(--ease-out-expo);
    transform: scale(1.02);
}

.image-wrapper img.loaded {
    opacity: 1;
    transform: scale(1);
}

/* 悬停微动效：极度克制的放大 */
.hover-zoom:hover img {
    transform: scale(1.03); 
    transition: transform 1.5s var(--ease-out-expo);
}

/* 页面切换遮罩 */
#page-transition-overlay {
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.6s ease-in-out;
    background: #FFFFFF;
    z-index: 9999;
}